|
2004年4月二级C语言选择题
16. 设有以下定义:
int a=0;
double b=1.25;
char c=’A’;
#define d 2
则下面语句中错误的是( ):
(A)a++ (B)b ++ (C)c++ (D)d++
答案:D
解析:由于a、b、c均为变量,可以使用自增运算符++,而d是自定义常量,只能在定义处修改,定义好后,不能在程序中随便改变。
18. 有以下程序:
main( )
{
int x=102,y=012;
printf("%2d,%2d\n",x,y);
} 执行后输出结果是( ):
(A)10,01 (B)002,12
(C)102,10 (D)02,10
答案:C
解析:C语言规定,整型常量可有三种表示方法:以非0开始的数是十进制,以0开始的数是八进制,以0x开始的数是十六进制。因此八进制的y以十进制输出结果应是10,而x就是十进制,结果不变应是102。
20. 设有定义:int a,pa=&&a;以下scanf语句中能正确为变量a读入数据的是( )。
(A)scanf("%d",pa); (B)scanf("%d",a);
(C)scanf("%d",&&pa); (D)scanf("%d",pa);
答案:A
解析:语句“int apa=&a”中定义:a为一整型变量,pa是指向整型变量a的指针变量,即指针变量pa中存储的值就是整型变量a在内存中的地址的值,而scanf(“控制格式”,参数表)语句中要求参数必须是要求输入变量的地址(即指针)。而(B)中的a是变量,(C)中的&pa是错误的形式,(D)中pa与a等价,只有(A)是正确的。
22. 有以下程序:
main( )
{ char k; int I;
for(i=1;i3;i++)
{ scanf("%c",&&k);
switch(k)
{ case '0' : printf("another\n");
case '1': printf("number\n");
}
}
}
程序运行时,从键盘输入:01回车>,程序执行后的输出结果是( )。
(A)another (B)another
number number
another
(C)another (D)number
number number
number
答案:C
解析:在for循环语句中当i=1时,k的值由键盘输入为字符‘0’,执行switch语句,满足case '0',输出another 并换行,由于语句 case '0':printf″another\n″ 后没有breek,故接着执行语句 case '1' printf″number\n″ 输出number并换行;当i=1时,k的值由键盘输入为字符‘1’,执行switch语句,满足case '1',执行语句case '1' printf″number\n″ 输出number并换行,所以选C。
23. 有以下程序
main( )
{ int x=0,y=5,z=3;
while(z--0&&&&++x5) y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果是( )。
(A)3,2,0 (B)3,2,-1
(C)4,3,-1 (D)5,-2,-5
答案:B
解析:第一次执行语句后,x=1y=4z=2;第二次执行语句后x=2y=3z=1;第三次执行while语句后x=3y=2z=0;判断while条件由于不满足条件z——0,退出while循环执行printf语句,此时x=3y=2z=-1,所以结果为B。这里需特别指出的是判断完z——0不满足条件,不再判断条件++x5,即z的值要自减1,而x的值不变。 | | |