二级C语言笔试题库及详细解析(2010年3月)
以下内容选自无忧2010.03.1激活版
一、选择题
0001、C语言中,下列叙述正确的是______。
A)不能使用do-while语句构成的循环
B)do-while语句构成的循环,必须用break语句才能退出
C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环
答案:D
评析:
本题的考查点是do-while语句。
选项A是错误的,C语言支持do-while语句;do-while构成的循环,当while语句中的表达式值为零时结束循环,而不是非零,故选项B、C都是错误的。
故本题答案为D。
0002、以下程序的输出结果是______。
main()
{ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2) printf("%d",p[i]);
}
A)52
B)51
C)53
D)97
答案:C
评析:
本题的考查点是通过指针引用数组元素。
i=0时,输出p[0],也就是x[1][1],输出是5;
i=2时,输出p[2],即p[2+0],也就是x[2][0],输出是3。
故本题答案为C。
0003、以下程序的输出结果是______。
main()
{ char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;
int i ;
i=8;
p=a+i;
printf("%s\n",p-3);
}
A)6
B)6789
C)'6'
D)789
答案:B
评析:
本题的考查点是通过指针引用数组元素。
指针p指向数组中第9个元素,即a[8]='9'。输出时,输出字符串,且指针把a[8] 作为初始位置往前指3个元素,也就是共有4个字符输出。最后指向a[5]为'6',所
以输出为6789。
故本题答案为B。
0004、以下程序的输出结果是______。
main()
{ int n=4;
while(n--)printf("%d ",--n);
}
A)2 0
B)3 1
while语句里的ifC)3 2 1
D)2 1 0
答案:A
评析:
本题的考查点是while语句的判断。
n--是先使用后运算,--n是先运算后使用。n=4时,执行n--后,n变为3,执行
--n后,n变为2,所以,第一次输出时,n为2;同上过程,第二次输出时,n为0。
故本题答案为A。
0005、若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]
地址的表达式是______。
A)p+1
B)a+1
C)a++
D)++p
答案:C
评析:
本题的考查点是数组地址的表示。
选项C中,数组名所表示的数组地址不能被重新赋值。
本题答案为C。
0006、以下程序的输出结果是______。
main()
{int k=17; printf("%d,%o,%x\n",k,k,k);
}
A)17,021,0x11
B)17,17,17
C)17,0x11,021
D)17,21,11
答案:D
评析:
本题的考查点是不同格式的数据输出。
printf函数对不同类型的数据用不同的格式字符,"%d"是以带符号的十进制形式输出整数(正数不输出符号);"%o"以八进制无符号形式输出整数(不包括前导符0);"%x"以十六进制无符号形式输出整数(不包括前导符0x)。
本题答案为D。
0007、以下程序的输出结果是______。
main()
{ int a=-1,b=1, k;
if((++a<0)&&!(b--<=0))
printf("%d %d\n",a,b);
else
printf("%d %d\n",b,a);
}
A)-1 1
B)0 1
C)1 0
D)0 0
答案:C
评析:
本题的考查点是if条件的判断。
++a是先运算后使用,b--是先使用后运算。执行++a后,a值为0,不满足条件,所以a为0,b仍为1,接下去执行else语句,输出1 0。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。