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

第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

A.对 B.错

17.只能在循环体内和switch语句体内使用break语句。

A.对 B.错

18.程序段 int k=10; while(k=0)k=k-1; 中,while循环执行10次。

A.对 B.错

19.若i为整型变量,则 for(i=2;i= =0;)printf(\循环执行次数是0次。

A.对 B.错

20.执行语句for(i=1;i++<4; );后,变量i的值是4。

A.对 B.错

(二)、选择题

1.下列程序的输出结果是______。

#include \void main()

{ int i,a=0,b=0; for(i=1;i<10;i++)

{ if(i%2==0) {a++; continue;} b++;}

printf(\

A.a=4,b=4 B.a=4,b=5 C.a=5,b=4 D.a=5,b=5 2.已知:int t=0; while(t=1) { ... } ,则以下叙述正确的是______。 A.循环表达式的值为0 B.循环表达式的值为1 C.循环表达式不合法 D.以上说法都不对 3.设有以下程序段 ,则 _____。

int x=0,s=0; while(!x!=0) s+=++x; printf(\ while(!0!=0) while(1!=0)

while(1) 执行 s=s+(++x) s=1

A.运行程序段后输出0 B.运行程序段后输出1 C.程序段中的表达式是非法的 D.程序段执行无限次 4.以下程序的运行结果是______。

#include void main() { int y=9;

for( ; y>0;y--)

if(y%3==0) printf(\

A.741 B.963 C.852 D.875421

在循环中,能被3整除的数有9,6,3,输出前自减1,所以得8,5,2。 5.以下描述中正确的是______。

A.由于do-while的循环体只能有一条语句,所以循环体内不能使用复合语句

26

B.do-while由do开始,用while结束,在while(表达式)后面不能写分号 C.在do-while循环中,是先执行一次循环体,再进行判断 D.在do-while循环中,根据情况可以省略while 6.以下程序段的运行结果是______。

i=0; do printf(\ A.0,0 B.0,1 C.1,1 D.程序进入无限循环 7.若程序执行时的输入数据是2473<回车>,则下述程序的输出结果是______。

#include void main() { int cs;

while((cs=getchar())!='\\n') {switch(cs-'2') { case 0:

case 1: putchar(cs+4);

case 2: putchar(cs+4); break; case 3: putchar(cs+3); default: putchar(cs+2); } } }

A.668977 B.668966 C.6677877

8.以下程序的输出结果是______。

#include \void main() { int a,i;a=0; for(i=1;i<5;i++) switch(i)

{ case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5 ; } printf(\ A.31 B.13 C.10 D.20 9.以下程序的运行结果是______。

#include void main() { int i,j,m=55;

27

D.6688766

for(i=1;i<=3;i++)

for(j=3;j<=i;j++) m=m%j; printf(\ A.0 B.1 C.2 D.3 10.以下程序的运行结果是______。

#include void main() { int i;

for(i='a';i<'f';i++,i++)printf(\printf(\

A.ACE B.BDF C.ABD D.CDE 11.以下程序运行后的输出结果是______。

#include void main() { int k=5,n=0; do {switch(k)

{ case 1: case 3:n+=1;k--;break; default:n=0;k--;

case 2: case 4:n+=2;k--;break; } printf(\}while(k>0 && n<5); }

A.235 B.0235 C.02356 D.2356 12.下面程序的输出结果是______。

#include void main()

{ int n=9; while(n>6){n--; printf(\A.987 B.876 C.8765 D.9876 13.下述程序的输出结果是_______。

#include void main()

{ int x=0,y=0,i; for(i=1;;++i)

{ if(i%2==0) {x++;continue;} if(i%5==0) {y++;break;} }

printf (\A.2,1 B.2,2 C.2,5 D.5,2 14.下述程序的输出结果是_______。

#include void main()

28