第五章循环结构的程序设计补充习题(1) 下载本文

内容发布更新时间 : 2024/12/27 10:58:25星期一 下面是文章的全部内容请认真阅读。

第五章 循环结构的程序设计补充习题(1)

一、单选题

1. 以下叙述正确的是

A) do-while语句构成的循环不能用其它语句构成的循环来代替。 B) do-while语句构成的循环只能用break语句退出。

C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。 2. 设有程序段 int k=10; while(k=0) k=k-1; 则下面描述中正确的是 。 A)while循环执行10次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次 3. 有如下程序

main()

{ int x=23;

do

{ printf(\while(!x); }

该程序的执行结果是

A) 321 B) 23 C) 不输出任何内容 D) 陷入死循环 4. 有如下程序

main()

{ int n=9;

while(n>6) {n--;printf(“%d”,n);} }

该程序段的输出结果是

A) 987 B) 876 C) 8765 D) 9876 5. 有以下程序 main()

{ int s=0,a=1,n; scanf(\ do

{ s+=1; a=a-2; } while(a!=n);

printf(\ }

若要使程序的输出值为2,则应该从键盘给n输入的值是 A)-1 B)-3 C)-5 D)0

6.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a;

for(b=1;b<=c;b++) s=s+1;

则与上述程序段功能等价的赋值语句是

A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c; 7. 标有/**/的语句的执行次数是:

int y , i ;

for(i=0;i<20;i++)

{ if( i%2==0) continue ; y+=i ; /**/ }

A) 20 B)19 C)10 D) 9 8.要求以下程序的功能是计算:s= 1+1/2+1/3+……+1/10 main()

{ int n; float s; s=1.0;

for(n=10;n>1;n--) s=s+1/n; printf(\}

程序运行后输出结果错误,导致错误结果的程序行是 A)s=1.0; B)for(n=10;n>1;n--)

C)s=s+1/n; D)printf(\

9. C语言中while和do-while循环的主要区别是______。 A)do-while的循环体至少无条件执行一次

B)while的循环控制条件比do-while的循环控制条件严格 C)do-while允许从外部转到循环体内 D)do-while的循环体不能是复合语句

10. 以下能正确计算1*2*3*…*10的程序段是______。 A)do {i=1;s=1;s=s*i;i++;}while(i<=10); B)do {i=1,s=0;s=s*i;i++;}while(i<=10); C)i=1;s=1;do{s=s*i;i++;}while(i<=10); D)i=1;s=0;do{s=s*i;i++;}while(i<=10); 11. 以下正确的描述是( ) A) 循环体中的continue语句的作用是结束整个循环的执行 B) switch语句中不能出现break语句 C) continue语句只能中止本次循环 D) break语句不能用于多重循环

12. 语句while(!E);中的表达式!E等价于________. A)E==0 B)E!=1 C)E!=0 D)E==1 13. 设有程序段 t=0; while(printf(“*”)) { t++; if(t<3) break; } 则下面描述正确的是 。

A)其中循环控制表达式与0等价 B)其中循环控制表达式与‘0’等价 C)其中循环控制表达式是不合法的 D)以上说法都不对

14. 下面有关for循环的正确描述是 。

A) for循环只能用于循环次数已经确定的情况 B) for循环是先执行循环体语句,后判断表达式 C) 在for循环中,不能用break语句跳出循环体

D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

15.对for(表达式1;;表达式3)可理解为 。 A)for(表达式1;0;表达式3) B)for(表达式1;1;表达式3) C)for(表达式1; 表达式1;表达式3) D)for(表达式1; 表达式3;表达式3) 16.下面程序段( )。

for(t=1;t<=100;t++) {scanf(“%d,&x); if(x<0)continue; printf(“=”,x); }

A) 当x<0时整个循环结束 B) x>=0时什么也不输出

C) printf函数永远也不执行

D)最多允许输出100个非负整数

二、填空题

1. continue 语句是用来结束________循环的。

2. 下列程序段循环执行的次数是 次。 int x=0; while(x=1) { x--; if(x==0) break; }

3. 循环程序段“k=5; for(; k<0; k--);”执行后,k的值为 。 4. 执行循环结构中的 语句能够立即退出该结构。 5.执行循环结构中的 语句能够立即执行下一次循环。

6. 设i,j,k均为int型变量,则执行完下面的for循环后,k的值为 。

for(i=0,j=10;i<=j;i++,j--) k=i+j; 三、判断题

1.若有说明int c;则while(c=getchar());是正确的C语句。 ( ) 2.do-while语句构成的循环不能用break语句退出。( ) 3.for循环只能用于循环次数已经确定的情况。( ) 4.for( ; ; )S中的语句S必执行无穷多次。 ( )

5.若S为C语句,while(1) S必定是无限循环。( ) 四、写出下列程序的运行结果

1.下面程序的运行结果是 。 #include main() { int num=0; while(num<=2) { num++; printf(“%d\\n”,num); } }

2.以下程序的输出是 。 #include main() { int i; for(i=1;i<=5;i++) { if(i%2) printf(“*”); else continue; printf(“#”); } printf(“$\\n”); } 3.

当运行以下程序时,从键盘键入right?(代表回车),则下面程序的运行结果

是 。

#include main() { char c; while((c=getchar())!=???) putchar(++c); } 4.下列程序的输出结果是 。