参考答案:C
*4.10设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为 。
A)1 B)2 C)3 D)4 参考答案:B
参考分析:本题为标准的短路算法,由于第一个表达式m=a>b为真,故第二个表达式n=c>d被短路不再计算。因此,n值仍然保持原来的值2不变。 4.11判断char型变量ch是否为小写字母的正确表达式为 。
A)'a'<=ch<='z' B)(ch>=a)&&(ch<=z) C) (ch>='a')||(ch<='z') D)(ch>='a')&&(ch<='z') 参考答案:D
*4.12 以下程序的运行结果是 。
#include
{int a,b,d=241; a=d/100%9; b=(-1)&&(-1);
printf(\}
A)6,1 B)2,1 C)6,0 D)2,0 参考答案:B
参考分析:计算时,非零为真。
*4.13 执行以下语句后a的值为 ,b的值为 。
int a,b,c; a=b=c=1;
++a||++b&&++c;
A)0 B)1 C)2 D)错误 参考答案:C B
参考分析:c语言在计算表达式时采用短路算法。 4.13-改 执行以下语句后,a,b,c的值分别为 。
int a,b,c; a=b=c=1;
++a||++b&&++c;
A)1,1,1 B)2,1,1 C)2,2,1 D)2,2,2 参考答案:B
4.14 执行以下语句后a的值为 ,b的值为 。
int a=5,b=6,w=1,x=2,y=3,z=4; (a=w>x)&&(b=y>z);
(1)A)5 B)0 C)2 D)1 (2)A)6 B)0 C)1 D)4 参考答案:B A
参考分析:短路算法。
*4.15 以下不正确的if语句形式是 。
A)if (x>y&&x!=y); B)if (x==y) x+=y;
C)if(x!=y) scanf(\D)if(x 4.16 下列运算符中优先级最低的是 ,优先级最高的是 。 A)? : B)&& C)+ D)!= 参考答案:A C *4.17 已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 。 if(x>y) z=x;x=y;y=z; A)10,20,30 B)20,30,30 C)20,30,10 D)20,30,20 参考答案:C 4.18 以下if语句语法正确的是 。 A)if (x>0) printf(\ B)if(x>0){x=x+y;printf(\C)if(x>0){x=x+y;printf(\D)if(x>0){x=x+y;printf(\参考答案:B *4.19有程序:main() {int a=5,b=1,c=0; if (a=b+c) printf(\ else printf(\该程序 。 A)有语法错误不能通过编译 B)可以通过编译,但不能通过连接 C)输出:*** D)输出:$$$ 参考答案:C 参考分析:注意条件表达式不是a= =b+c。 *4.20 以下程序的运行结果是 。 main() {int m=5; if(m++>5) printf(\ else printf(\} A)4 B)5 C)6 D)7 参考答案:C 参考分析:m先与5进行关系比较,然后进行增量运算,m值为6,因比较结果为假,执行else,输出为6,m为7。 4.21 当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是 。 if(a if(c if(a if(b A)1 B2 C)3 D)6 参考答案:B **4.22有函数关系如下,能正确表示该关系的程序段是 。 x y x<0 x-1 x=0 x x>0 x+1 A)y=x+1; B)y=x-1; if(x>=0) if(x!=0) if(x= =0) y=x; if (x>0) y=x+1; else y=x-1; else y=x; C)if (x<=0) D) y=x; if (x<0) y=x-1; if(x<=0) else y=x; if (x<0) y=x-1; else y=x+1 else y=x+1; 参考答案:C *4.23 以下程序的输出结果是 。 main() {int a=100,x=10,y=20,ok1=5,ok2=0; if(x if(ok2) a=10; a=-1; printf(\} A)1 B)0 C)-1 D)值不确定 参考答案:C 参考分析:无论前面的分支如何执行,由于a=-1和上面的语句为顺序关系,因此不会影响到a的值。 4.24 以下程序的输出结果是 。 main() {int x=2,y=-1,z=2; if(x if(y<0) z=0; else z+=1; printf(\} A)3 B)2 C)1 D)0 参考答案:B *4.25为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与 配对。 A)缩排位臵相同的if B)其之前最近的没有else配对的if C)其之后最近的if D)同一行上的if 参考答案:B 参考分析:本题表述不严谨。 *4.26以下不正确的语句为 。 A)if (x>y); B)if (x=y)&&(x!=0) x+=y; C)if (x) z=z/x; D)if (x>y) {x++;y++;} 参考答案:B 4.27 请阅读以下程序: #include scanf(\if(a<0.0) b=0.0; else if((a<0.5)&&(a!=2.0)) b=1.0/(a+2.0); else if(a<10.0) b=1.0/a; else b=10.0; printf(\} 若运行时输入2.0 **4.28 若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是 。 A)exp==0 B)exp!=0 C)exp==1 D)exp!=1 参考答案:B 参考分析:在C语言中,当一个表达式不等于0时,可以将不等于部分省略,其效果完全一样。 *4.29 若运行时给变量输入12,则以下程序的运行结果是 。 main() {int x,y; scanf(\y=x>12?x+10:x-12; printf(\} A)0 B)22 C)12 D)10 参考答案:A 参考分析:x>12为假,取x-12。 4.30 以下程序的运行结果是 。 main() {int k=4,a=3,b=2,c=1; printf(\} A)4 B)3 C)2 D)1 参考答案:D **4.31执行下列程序段后,变量a,b,c的值分别是 。 int x=10,y=9; int a,b,c; a=(--x= =y++)?--x:++y; b=x++; c=y;