C语言习题(4-5) 下载本文

C语言习题(第4-5章选择、循环结构)

一、选择题 1 2 11 12 21 22 二、程序填空 1 (1) 2 (1) (3) 三、程序改错 1 (1) (2) 2 (1) (2) 3 13 23 4 14 24 5 15 25 6 16 26 (2) (2) 7 17 27 8 18 28 9 19 29 10 20 30

一.选择题

1. 下列条件语句中,功能与其他语句不同的是_________。

A)if(a) printf(\B)if(a= =0) printf(\C)if (a!=0) printf(\D)if(a= =0) printf(\2. 以下程序的运行结果是_________。

#include int main()

{ int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3;

printf(\,%d,%d,%d\\n\,a,b,c,d); return 0; }

A)1,1,2,0 B)0,0,0,3 C)编译有错 D)0,1,2,0 3. C语言对嵌套if语句的规定是:else总是与_________。 A)其之前最近的if配对 B)第一个if配对

C)缩进位置相同的if配对 D)其之前最近的且尚未配对的if配对 4. 下列各m的值中,能使m%3==2&&m%5==3&&m%7==2为真的是_________。

A)8 B)23 C)17 D)6

5. 若k=4,a=3,b=2,c=1,则条件表达式k

A)4 B)3 C)2 D)1 6. 下述程序的输出结果是_________。

#include int main ( )

{ int a=0,b=0,c=0;

if (++a>0 | | ++b>0) ++c; printf(“%d,%d,%d”,a,b,c); return 0; }

7.

8.

9.

10.

11.

12.

13.

14.

15.

A)0,0,0 B)1,1,1 C)1,0,1 D)0,1,1

已有声明\,以下表达式中语法正确的是______。 A)y=x%z B)x>0?y=x:y=-x C)y=x/2=z D)y=x=z/2 int a=3,b=2,c=1; if(a>b>c)a=b; else a=c;

则a的值为______。

A)3 B)2 C)1 D)0 下列程序的输出结果是______。 int main()

{ int x=1,y=0,a=0,b=0; switch(x)

{ case 1:switch(y)

{ case 0:a++;break; case 1:b++;break; } case 2:a++;b++;break; case 3:a++;b++;break; }

printf(\return 0; }

A)a=1,b=0 B)a=2,b=1 C)a=1,b=1 D)a=2,b=2 以下错误的描述是 。

A)break语句不能用于循环语句和switch语句外的任何其他语句。 B)在switch语句中使用break语句或continue语句的作用相同。

C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环。 D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环。 以下程序段的循环次数是 。 for (i=2; i==0; ) printf(“%d” , i--) ;

A)无限次 B)0次 C)1次 D)2次 有如下程序: int main() { int y=9;

for(; y>0; y--)

if(y%3==0) printf(“%d”,--y); return 0; }

该程序的输出结果是 。

A) 852 B)963 C)741 D)875421 下面有关 for 循环的正确描述是 。 A)for 循环只能用于循环次数已经确定的情况 B)for 循环是先执行循环循环体语句,后判断表达式 C)在 for 循环中,不能用 break 语句跳出循环体

D)for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 下面程序的输出结果是 。 for(i=4;i>1;i--)

for(j=1;j

A)无 B)###### C)# D)###

下列循环语句中,必须在循环体内用break;语句才能结束循环运行的是 。 A)for(i=0;getchar()!='\\n',i++);

16. 17.

18. 19.

20.

21.

22.

23.

B)for(i=0;s[i]!='\\0';i++);

C)scanf(\ D)while(1){ }

执行语句 for(i=1;i++<4;); 后变量 i 的值是 。 A)3 B)4 C)5 D)不定 下面程序的输出结果是 。 int main ( )

{ int k=0,m=0,i,j; for (i=0; i<2; i++) {

for (j=0; j<3; j++) k++ ; k-=j ; } m = i+j ;

printf(“k=%d,m=%d”,k,m) ; return 0; }

A)k=0,m=3 B)k=0,m=5 C)k=1,m=3 D)k=1,m=5 语句while (!E); 括号中的表达式!E等价于 。 A)E==0 B)E!=1 C)E!=0 D)E==1 以下是死循环的程序段是 。

A)for (i=1; ; ) { if (i++%2==0) continue ; if (i++%3==0) break ; } B)short int i=32767; do { if (i<0) break ; } while (++i) ; C)for (i=1 ; ;) if (++i<10) continue ; D)i=1 ; while (i--);

以下程序段 。 x=-1;

do{ x=x*x; } while (!x);

A)是死循环 B)循环执行2次 C)循环执行1次 D)有语法错误

若变量已正确定义,要求程序完成求5!的计算,不能完成此操作的程序段是 。 A)for (i=1, p=1; i<=5; i++) p*=i ; B)for (i=1; i<=5; i++ ) {p=1; p*=i ;} C)i=1; p=1; while (i<=5) { p*=i; i++; } D)i=1; p=1; do { p*=i; i++; } while (i<=5)

若运行以下程序时,输入2473↙,则程序的运行结果是 。 void main ( ) { int c;

while ((c=getchar( )) ! =?\\n?) switch (c-?2?) { case 0 :

case 1 : putchar (c+4) ;

case 2 : putchar (c+4) ; break ; case 3 : putchar (c+3) ;

default : putchar (c+2) ; break ; } printf(“\\n”); }

A)668977 B)668966 C)66778777 D)6688766 有以下程序: int main()

{ int i,j,m=1;

for(i=1;i<3;i++) for(j=3;j>0;j--) { if(i*j>3) break;