谭浩强C语言程序设计习题集 联系客服

发布时间 : 星期三 文章谭浩强C语言程序设计习题集更新完毕开始阅读bcc3a43b998fcc22bdd10db7

参考答案: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 main()

{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 main() {float a,b;

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,则上面程序的输出结果是 。 A)0.000000 B)0.500000 C)1.000000 D)0.250000 参考答案:B

**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;