非常好的C语言章节习题集带答案 下载本文

else printf(\

A.2 B.3 C.4 D.编译时有错且无结果

26.己有定义:int x=3,y=4,z=5;, 则表达式!(x+y)+z-1&&y+z/2的值是_______。

A.6 B.0 C.2 D.l !(3+4)+5-1&&4+5/2 !7+4&&4+2 0+4&&6 1&&1 27.以下程序运行后的输出结果是_______。

#inlude main()

{ int a=15,b=21,m=0;

switch(a%3) //15%3=0

{ case 0: m++; break; // 执行后,退出第一层。 case 1: m++;

switch(b%2) //第二层,未执行 { default: m++;

case 0: m++; break; } }

printf(\A.1 B.2 C. 3 D.4

28.在执行下述程序时,若从键盘输入6和2,则输出结果是_______。

#inlude main()

{ int a,b,k;

scanf(\k=a;

if(a

printf(\

A.5 B.3 C.2 D.0

29.在执行下述程序时,若从键盘输入字母H,则输出结果是_______。

#inlude main() { char ch;

ch=getchar(); switch(ch)

{ case 'H':printf(\

case 'G':printf(\

21

default:printf(\}

A.Hello! B.Hello! Good morning! C.Hello! D.Hello! Good morning! Bye_Bye! Bye_Bye!

30.设变量x和y均已正确定义并赋值,则以下if语句中,在编译时将产生错误信息的是

_______。

A.if(x++); B.if(x>y&&y!=0); C.if(x>0) x- - //少了“;”号 D.if(y<0){;} else y++; else x++; 31.以下程序的运行后的输出结果是_______。

#inlude main()

{ int a=1,b=0; if(--a) b++;

else if(a==0) b+=2; else b+=3;

printf(\%d\\n\

A.0 B.1 C.2 D.3

32.下列条件语句中,输出结果与其他语句不同的是_______。

A.if(a) printf(\%d\\n\%d\\n\B.if(a==0) printf(\%d\\n\%d\\n\C.if(a!=0) printf(\%d\\n\%d\\n\D.if(a==0) printf(\%d\\n\%d\\n\33.以下选项中,能表示逻辑值“假”的是_______。

A.1 B.0.000001 C.0 D.100.0 34.以下程序运行时,若从键盘输入9,则输出结果是_______。

#inlude main() { int a=1;

scanf(\%d\ if(a++<9)

printf(\%d\\n\ else

printf(\%d\\n\

A.10 B.11 C.9 D.8

35.若变量c的值为非0,则能正确地将c的值赋给变量a和b的表达式是_______。

A.(a=c)||(b=c) B.(b=a)=c

22

C.(a=c) && (b=c) D.a=c=b

36.设有定义int i;,则表达式(i=1,i=10)? i++||++i:++i的值是_______。

A.10 B.1 C.2 D.3

37.设a=2、b=7.5、c=-3.6,则_______中的两个表达式的逻辑值相等。

A.'a'>'c'||'x'<'y' 与 b-a<=-c/2&&c==-3.6 B.'a'>'c'&&x'<'y' 与 a-7'c'||'x'>'y' 与 'a'<'c'&&a>b D.'a'>'c'&&'x'>'y' 与 'a'<'c'||a

38.当y处于闭区间[x,z]时,值为真的表达式是_______。

A.( y<= z)&&(y>=x) B.(x>=y)and(y>=z)c C.(x>=y>=z) D.(x>=y)&(y>=z) 39.以下程序执行后的输出结果是_______。

#inlude main()

{ int a=5,b=4,c=3,d=1; d=(a>b>c);

printf(\

A.3 B.2 C.1 D.0 40.以下程序执行后的输出结果是_______。

#inlude main()

{ int a=2,b=7,c=5; switch(a>0)

{ case 1:switch(b<10)

{ case 1: printf(\

case 0: printf(\

case 0:switch(c==5)

{ case 0: printf(\

case 1: printf(\default: printf(\

default: printf(\printf(\

A.!*# B.@!# C.@%# D.@#&

四、习题答案

(一)、是非题

1.A 2.A 3.B 4.A 5.A 6.B 7.A 8.A 9.B 10.A 11.A 12.A 13.B 14.B 15.B 16.A 17.A 18.A 19.B 20.A (二)、选择题

1.C 2.A 3.A 4.D 5.B 6.B 7.C 8.C 9.B 10.C

23

11.B 12.A 13.A 14.B 15.D 16.A 17.C 18.B 19.C 20.B 21.C 22.B 23.D 24.B 25.B 26.D 27.A 28.C 29.C 30.C 31.C 32.D 33.C 34.A 35.C 36.B 37.C 38.A 39.D 40.D (三)、编程题(略)

24

第4章 循环结构

二、习题

(一)、是非题

1. C语言中,do-while语句构成的循环只能用break语句退出。

A.对 B.错

2.在循环外的语句不受循环的控制,在循环内的语句也不受循环的控制。

A.对 B.错

3.从语法角度看,for(表达式1;表达式2;表达式3)语句中的3个表达式均可省略。

A.对 B.错

4.for、while和do while循环结构的循环体均为紧接其后的第一个语句(含复合语句)。

A.对 B.错

5.由i=-1;while(i<10) i+=2;i++;可知,此while循环的循环体执行次数为6次。

A.对 B.错 6.循环for( ; ; )的循环条件始终为真。

A.对 B.错

7.do?while语句的循环体至少执行1次,while和for循环的循环体可能一次也不执行。

A.对 B.错

8.break;语句执行时退出本层循环,continue;语句结束本次循环。

A.对 B.错

9.for循环、while循环和do while循环结构之间可以相互转化。

A.对 B.错

10.break;语句执行时退出到包含该break;语句的所有循环外。。

A.对 B.错

11.二重循环for(i=0;i<5;i+=2) for(j=0;j<5;j++)的循环体的执行次数为15。

A.对 B.错

外循环i执行3次, 内循环j执行5次。3*5=15次。 12.执行i=-1; while(i<10) i+=2;i++; 后,i的值 为11。

A.对 B.错

13.int i=1;while(1) i++; 则在任何条件下,该循环语句都会执行无穷多次

A.对 B.错 14.while和do?while的功能完全相同。

A.对 B.错

15.while后的表达式只能是逻辑或关系表达式。

A.对 B.错 16.语句while(E);中的表达式E等价于E!=0。

25