第5章 循环结构程序设计
一、单项选择题
1.在C语言中,下列说法中正确的是( )。
A) do-while语句构成的循环不能用其它语句构成的循环来代替。 B) do-while语句构成的循环只能用break语句退出。
C) do-while语句构成的循环在while后的表达式非零时结束循环。 D) do-while语句构成的循环,在while后的表达式为零时结束循环。 2. break语句不能出现在 语句中( )
A) switch B)for C) while D) if…else 3.对于break语句和continue语句的说法错误的是( )
A) break语句不能用于循环语句和switch语句之外的任何其他语句中。 B) break和continue也可以用于if语句中
C) continue语句只结束本次循环,而不是终止整个循环的执行。 D) break语句是结束整个循环过程,不再判断执行循环的条件是否成立。 4. 语句while(!y);中的表达式 !y等价于
A)y==0 B)y=1 C)y=!0 D) y==1
5. 若有“int a=1,x=1;”,则循环语句“while(a<10) x++; a++;”的循环执行( )。
A)无限次 B)不确定次 C)10次 D)9次 6. 有以下程序段
int k=0
while(k) k++;
则while循环体执行的次数是 A) 无限次
B) 有语法错,不能执行 D) 执行1次
C) 一次也不执行
7. 下列循环语句中有语法错误的是( )
A while(x=y) 5; B while(0) ;
C do 2;while(x= =b); D do x++ while(x= =10);
8. 当运行时输入:abcd$abcde?, 下面程序的运行结果是 。
#include
while(putchar(getchar())!='$'); printf(\}
A) abcd$abcde B)abcd$end C)abcdend D) abcd$abcdeend 9. 以下程序段 ( )
x=-1;
do { x=x*x; } while(x>0);
A) 是死循环 B) 循环执行一次 C) 循环执行二次 D) 有语法错误 10. 下面程序段执行后的结果为: ( ) int sum=0, n=10; do { sum=sum+n; n++; }
while(n<10); printf(“%d,%d”,sum,n);
A. 0, 10 B) 10, 11 C) 0, 11 D) 以上结果都不对 12. 循环“for(i=0,x=1;i=10&&x>0;i++);”的循环执行( )。
A)无限次 B)不确定次 C)10次 D)9次 13. 执行语句{for(j=0;j<=3;j++) a=1;}后变量j的值是 .
A)0 B) 3 C)4 D) 1 14. 有如下程序
main()
{ int i,sum=2;
for(i=1;i<=3;i+=2) sum+=i; printf(“%d\\n”,sum); } 该程序的执行结果是
A) 6 B) 3 C) 死循环 D) 4 15、执行语句”for ( i=0; i++<3 ; ) ;”后,变量i的值为( )。 A、2 B、3 C、4 D、5
16. 设x和y均为int型变量,则执行以下的循环后,y的值为( )。
for(y=1,x=1;y<=50;y++)
{
if(x>=0) break;
if(x%2==1) {x+=5;continue;}
x-=3;
} A)1 B)50 C)51 D)5
二、阅读程序,写出运行结果
1.
#include printf(“%d,%d,%d”,x,y,z); } 运行结果为: 32,28,30 3. #include printf(“%d,”,n); }} 运行结果为: 8,7,6, 5. #include {c=num; printf(\}while((num/=10)>0); printf(\ } 从键盘输入23,则运行结果为: 2. #include printf(\} 运行结果为: 1 2 34. #include { int sum=10,n=1; while(n<3) {sum=sum-n; n++;} printf(“%d,%d”,n,sum); } 运行结果为: 3,7 32 6. #include 若输入的值1,运行结果为: 2,1 9. #include \ main() {char c; c=getchar(); while(c!='?') {putchar(c); c=getchar(); } } 如果从键盘输入abcde?fgh(回车)运行结果为:abcde 7. #include 若在运行时输入1298,运行结果为:8921 8. #include for (i=0;i<6;i++) printf (“%d”,++i); printf (“%d”,i++); } 运行结果为: 1356 10. #include while((c=getchar())!=’$’) { if(‘A’<=c&&c<=‘Z’) putchar(c); else if(‘a’<=c&&c<=‘z’) putchar(c-32); }} 当输入为ab*ABí#CD$时, 运行结果为: 11. #include if(i%2) { i++; continue; } i++; s +=i; }while(i<7); printf(\} 运行结果为: 16 13. #include printf(“%d %d”,y,x); } 运行结果为: 10 5 15. #include ABABCDCD 12. #include if (y>=10) break; x++; } printf(“%d %d”,y,x); } 运行结果为: 14 3 14. #include case 1 : printf(“%d,”,n); case 2 : printf(“%d,”,n);n=n+3; break; default: printf(“**”); n=n+1; } } 运行结果为: 0,0,** { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y)