一、单选题
1. 有声明:int b;double d; ,要求当键盘输入“2,3”时b得到2且d得到3.0,则正确的语句是 。
A.scanf(\C.scanf(\2. 有以下程序
main()
{ int m,n,p;
scanf(\}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是 。 A. m=123n=456p=789 B. m=123 n=456 p=789 C. 123,456,789 D. 123 456 789
3. 已知字符A的机内编码是65,以下语句中不能输出字符B的是 。
A.putchar(?B?); B. putchar(”B”); C. putchar(66); D. putchar(?\\x41?+1); 4.执行程序段int a=0,b=4,k=2; k = a+1>0||++a<0 && !b--<=0; printf(“%d,%d,%d”, k,a,b);后输出结果是 。
A.1,1,3 B.1,1,4 C.1,0,3 D.1,0,4 5. 执行程序段int i,j; j=(i=1,i+9)>9 ? i++||++i:++i;后,变量i,j的值分别是 .
A.10,10 B.2,2 C.2,3 D.2,1
6. 执行程序段int x=2,y=3,z; z= ++x <= y-- ? --y==1 ? y-- : --y : y--;后,变量x,y,z的值分别是 .
A.3,0,1 B.2,0,0 C.3,1,1 D.2,2,1
7. 执行以下程序段后,变量x,w的值分别是 .
A.0,1 B.1,1 C.2,1 D.3,2 int x=0,y=1,z=2,w; if(x++)w=x;
else if(x++&&y>=1)w=y; else if(x++&&z>1)w=z;
8. 以下程序段中不会出现无穷循环的是 。
A.for(y=0,x=1;x>++y;x=i++)i=x; B.for(;;x+=i); C.while(x=8)x--;
D.for(i=10,sum=0;sum<=i;)sum=--i; 9. 逻辑异或运算可描述为“a xor b”,其中a和b为参加运算的两个操作数,运算结果为当且仅当a、b两个操作数中只有一个为真时才为真,其他情况下均为假。以下表达式中能正确表示逻辑异或运算的表达式是 。
A.a||b B.a&&b C.(a&&b)&&(a||b) D.(a||b)&&!(a&&b) 10. 以下关于break和continue语句描述中错误的是 .
A.在switch语句中使用break语句是为了跳出switch结构
1
B.在switch语句中使用continue语句是为了连续执行多个case之后的语句 C.在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
D.在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环 11.已有预处理命令和声明语句如下:
#define N 10 int a=2,c=1; double b=1.2;
下述程序段中,正确的是 。
A. switch(a) B. switch(a)
{ case c: a--;break; { case N>0: a=1;break; case c+1: a++;break; case 1 : a=0;break; } }
C. switch(a) D. switch(b)
{ case 2: b++;break; { case 1.0: b++;break; case '0': b=3; case 1.2: b=1;break; } }
12. 已知int类型数据在内存中存储长度为2个字节,以下语句中能正确输出整数32768的
是
。
A. printf(\ B. printf(\ C. printf(\ D. printf(\
13. 已知有声明“int a=3,b=4,c=5; ”,以下表达式中值为0的是 。
A. a&&b B. a<=b C. a||b&&c D. !(!c||1)
14. 已知有声明“int x,y;”,若要求编写一段程序实现“当x大于等于0时y取值1,否则y取
值-1”,则以下程序段中错误的是 (26) 。
A. if(x>=0)y=1;else y=-1; B. y=x>=0?1:-1; C. switch() D. switch(x-abs(x))
{ case x>=0: y=1; break; { case 0: y=1; break; default: y=-1; default: y=-1; } } 15. 以下选项中,不能表示函数
?1?sign(x)??0??1?x?0x?0x?0 功能的表达式是 。
A. s=(x>0)?1:(x<0)?-1:0 B. s=x<0?-1:(x>0?1:0) C. s=x<=0?-1:(x==0?0:1) D. s=x>0?1:x==0?0:-1 16. 与语句while(!x)x++; 等价的语句是______. A. while(x==0) x++; B. while(x!=0) x++; C. while(x!=1) x++; D. while(x) x++;
17. 若程序中已有相应的声明,下列语句中错误的是 。
A.printf(i==4 ? \
B.i==4 ? printf(\C.for (i=10 ; ; i--) if(i==1) break; D.for (i=10 ; ; ) if(i--); break;
单选题参考答案:
2
1~5:CABDD 6~10:ACADB 11~15:CBDCC 16~17: AD
二、多选题
1.已知有声明int a,以下表达式中不能正确表示算术式10 A.1010 && a<15 D.!(a<=10)&&(a>=15) 多选题参考答案:1.ABD 三、填空题 1. 执行语句printf(\ printf(\后输出是 。 2. 已有声明int k=1; 执行语句while(k++<5);后k的值是 。 3. 只能在循环体中出现的语句是 。 4. 已知int型变量的存储字节数为2,以下程序运行时输出是 。 #include { int a=3,b=2,c=7,d=6,e=8; long f=a*10000+b*1000+c*100+d*10+e; printf(\} 5. 以下程序运行后的输出是 . main() { int a=1,b; for(b=1;b<=10;b++) { if(a>=8) break; if(a%2==1){a+=5;continue;} a-=3; } printf(\} 6. 下程序运行后的输出是 . main()