1、全国计算机等级考试二级C语言06年4月全国计算机等级考试二级C语言考前密卷226)下面程序的输出结果是_。#definep1(x)printf(x)main()chard。p;pl(d);p1(d);a)pdb)ddc)pdd)pd答案:a评析:带参数的宏定义的一般形式为:#define宏名(参数表)字符串程序中的pl(d);经宏置换后为printf(d);,所以输出字符串p;程序中的pl(d);经宏置换后printf(d)。(27)以下选项中,能定义s为合法的结构体变量的是_。a)typedefstructabcdoublea;charb10;s;b)structdoublea;charb1
2、0;s;c)structabcdoublea;charb10;abcs:d)typedefabcdoublea;charb10;abcs:答案:b评析:定义一个结构体类型的变量,可采用三种方法:先定义结构体类型,再定义变量名;在定义类型的同时定义变量:直接定义结构类型变量,即不出现结构体名:选项b符合第三种定义方法。(28)请读程序:#include#includemain()char*s1=abcdef,*s2=ab;s1+;s2+;printf(d、n,strcmp(sl,s2);上面程序的输出结果是_。a)正数b)负数c)零d)不确定的值答案:a评析:strcmp(x1,x2)是串比较函
3、数,本题中s1、s2分别表示这两个串中第一个字符的地址,s1+和s2+是将指针指向串的第二个字符,则*sl为bcdef,*s2为b。在字符串比较中,大小的确定是各个字符串相应位置字符的ascii码值的大小决定的,sls2,返回值为正数。(29)请读程序:#includemain()inta=5,b=7,c=9;printf(d,d,a,b,c);printf(d,d,d,a,b);上面程序的输出结果是_。a)5,7,9,5,7b)5,7,5,7c)5,7,不定,7,9d)5,7,5,7,不定答案:d评析:printf函数按格式控制符的个数输出表列中对应的数据,若输出表列的个数大于格式控制符个数
4、,则输出与格式控制符对应的输出表列的数据,输出表列中多的则省略;若格式控制符个数大于输出表列的个数,则输出与格式控制符对应的输出表列的数据,格式控制符多的部分输出的数据是随机的。(30)请读程序:#inciudefunc(inta,intb)intc;c=a+b:returnc:main()intx=6,y=7,z=8,r;r=func(x-,y+,x+y),z-);printf(dn,r);上面程序的输出结果是_。a)llb)20c)2ld)31答案:c评析:函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的和,其中(x-,y+,x+y)是一个逗号表达式,它的值应
5、该等于x+y,所以整个表达式(x-,y+,x+y)的值为13,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所以func()的返回值为13+8=21。(31)请读程序:#includemain()inta,b;for(a=l,b=1;a=20)break;if(b3=1)b+=3;continue;b-=5:printf(dn,a);上面程序的输出结果是_。a)7b)8c)9d)10答案:b评析:break语句的作用是用于跳出循环体;continue语句的作用是用于跳出本次循环。执行第一次循环时,(b3=1)为真,b=4,继续下一次循环,如此反复,当b=22时结束循环,共循环8次,
6、即a=8。(32)设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是_。a)x=x*100+051000b)x=(x*100+05)100c)x=(int)(x*100+05)1000d)x=(x100+05)*1000答案:c评析:本题通过算术表达式的运算实现小数位数保留两位并四舍五入的操作,其中(int)(x*100+05)是指将(x*100+05)的值强制转换成整型。(33)请读程序片段(字符串内没有空格字符):printf(dn,strlen(atsn0121);上面程序片段的输出结果是_。a)llb)10c)9d)8答案:c评析
7、:这个语句的目的是输出atsn0121这个串的长度,在串中代表一个,而1代表数字1,也占一个字符,n是回车换行符,也占一个字符,加上a、t、s、0、l、2,共9个字符。(34)运行以下程序后,如果从键盘上输入china撑,则输出结果为_。#includemain()intv1=0,v2=0;charch:while(ch=getchar()!=#)switch(ch)casea:caseh:default:v1+;case0:v2+:printf(d,dn,v1,v2);a)2,0b)5,0c)5,5d)2,5答案:c评析:执行完一个case后面的语句后,流程控制转移到下一个case继续执行。
8、case常量表达式只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。(35)请选出可用作c语言用户标识符的一组标识符_。a)voidb)a3b3c)ford)2adefine-123-abcdowordifcasesizeof答案:b评析:c语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。选项a中的void是c语言的关键字,不合法;选项c中的case和c语言的关键字重名,不合法;选项d中的2a是数字打头而且sizeof和c语言的关键字重名,不合法。
9、(36)下面能正确定义数组,并正确赋值的语句是_。a)intn=5,bnnb)inta12=1,3c)intc2=1,2,3,4d)intd32=1,2,34答案:d评析:可以用下面的方法对二维数组初始化:l、分行给二维数组赋初值。如inta34=1,2,3,4,5,6,7,8,9,10,11,12;2、可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。如:inta34=1,2,3,4,5,6,7,8;9,10,1l,12);3、可以对部分元素赋初值:inta34=1,5,9;它的作用是只对各行第一列的元素赋初值,其余元素值自动为0。4、如果对全部元素都赋初值(即提供全部初始数据
10、),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。如:inta34=1,2,3,4,5,6,7,8,9,10,11,12;与下面的定义等价:inta4=1,2,3,4,5,6,7,8,9,10,1l,12;(37)请选出以下程序的输出结果_。#includesub(int*s,inty)staticintt=3;y=st;t-;main()inta=1,2,3,4,i,x=0;for(i=0;i4;i+)sub(a,x);printf(d,x);)printf(n);a)1234b)432lc)0000d)4444答案:c评析:x作为函数sub()的实参时,函数对x值的改变没有返
11、回主函数,并不能使得x的值变化,所以在打印时,x的值是始终不变的,即为0。(38)假定下面程序可执行文件名prgexe,则该程序所在的子目录下输入命令行:prghellogood后,程序的输出结果是_。main(intargc,char*argv)inti;for=1;iargc;i+)printf(c,*argvi); a)heuogoodb)hgc)held)hellogood答案:b评析:带参数的main()函数常用形式为:main(intargc,char*argv),其中,整型变量argc用来记录命令行中的参数个数。参数的个数由c程序运行时自动计算出来。字符型指针数组argv的第一个
12、元素存放命令名,其后各个元素依次存放命令行中各个参数的首地址,数组的大小由argc确定。for循环语句实现输出各参数的第一个字母。(39)若有以下说明和语句,请选出哪个是对c数组元素的正确引用_。intc45,(*cp)5;cp=c;a)cp+lb)*(cp+3)c)*(cp+1)+3d)*(*cp+2)答案:d评析:cp=c这个语句是将数组第0行的地址赋给了cp。cp+1使指针指向二维数组c的第一行;+(cp+3)是数组c的第三行的第0列的地址值;+(cp+1)+3是数组c的第一行第三列的地址值。(40)下列选项中不能正确定义结构体的是_。a)typedefstructb)structcol
13、orc1intred;intred;intgreen;intgreen;intblue;intblue;color;colorcl;c)structcolord)structintred;intred;intgreen;intgreen;intblue;intblue;cl;cl;答案:b评析:将一个变量定义为标准类型与定义为结构体类型不同之处在于:后者不仅要求指定变量为结构体类型,而且要求指定为某一特定的结构体类型(例如,structcolor),不能只指定结构体名。其中可以不出现结构体名,答案d就是缺省结构体名的情况。而变量名列表必须放在成员列表后面,所以b答案不能正确将c1定义为结构体变
14、量。(41)设有以下语句chara=3,b=6,c;c=ab2:则c的二进制值是_。a)00011011b)00010100c)00011100d)00011000答案:a评析:sex);答案:b评析:在c语言中,结构体变量的引用有三种等价方式:1、结构体变量成员名;2、(*p)成员名;3、p-成员名。因为stdname是字符数组名,-本身代表地址,其前面不应该使用&符号,所以选项b错误。(43)设有staticcharstr=beijing;则执行printf(dn,strlen(strcpy(str,china);后的输出结果为_。a)5b)7c)12d)14答案:a评析:在执行print
15、f()函数前,数组str的长度是7,但是当使用strcpy()函数将新的值赋给str后,strlenr)函数返回的应当是现在的str字符串的字符个数,即是5。(44)下列程序段中,不是死循环的是_。a)inti=100;b)unsignedk=0;while(1)doi=i100+l:+k;if(i=100)break;while(k=0);c)for(;);d)ints=3379;while(s+2+s2)s+;答案:a评析:当表达式为非0值时,执行while语句中的内嵌语句,可用break语句跳出循环,用continue语句结束本次循环。选项a不是死循环,当i=100时跳出循环。选项c为空
16、循环语句。(45)以下程序的输出结果是_。#includemain()inti;for(i=l;i5;i+)if(i2)print引剃);elsecontinue;printf(f);printf($n);a)*#*#*#$b)#*#*#*$c)*#*#$d)#*#*$答案:c评析:当i不可以整除2时打印*,然后打印拌,不能整除2则执行continue,跳过printf(#):语句,结束本次循环,返回到循环的起始点。当循环结束后,打印$。(46)库函数strcpy用以复制字符串,若有以下定义和语句:charstrl=china,str210,*str3,*str4=china;则对库函数str
17、cpy的正确的调用是_。a)strcpy(strl,people);b)strcpy(str2,people);c)strcpy(str3,people);d)strcpy(str4,people);答案:b评析:strcpy(字符数组1,字符串2)其作用是将字符串2复制到字符数组l中去。注:(1)字符数组l必须定义得足够大;(2)字符数组1必须写成数组名的形式;(3)复制时连同字符串后面的0一起复制到字符数组1中。(47)有以下程序#includestdioh style=color: rgb(51, 51, 51); font-family: 宋体; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1