参考答案: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;