第五章 循环结构的程序设计补充习题(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
2.以下程序的输出是 。 #include
当运行以下程序时,从键盘键入right?
是 。
#include