第五章执行程序段[1]: x=-1; do ( x=x*x;) while(!x); 的结果是______。 (A)死循环 (B)循环执行2次 (C)循环执行一次 (D)有语法错误[2] 有以下程序: #include<stdio.h> void main() ( while(putchar(getchar())!='?'); ) 当输入"hello?"时,程序的执行结果是______。 (A)hello (B)dijob (C)dijob? (D)hello? 以下程序的输出为______。 #include<stdio.h> void main( ) ( int y=5; while (y--); printf ("y=%dn", y);) (A)y=0 (B)无限循环,无结果输出 (C)y=1 (D)y=-1 设有程序段: int x=0,s=0; while(x!=0) s+=++x; printf("%d",s); ,则运行程序段后______。 (A)输出0 (B)输出1 (C)控制表达式是非法的 (D)执行无限次 设有程序段: int k=10; while(k=0) k=k-1; ,则下面描述正确的是______。 (A)while 循环执行10次 (B)循环是无限循环 (C)循环体语句一次也不执行 (D)循环体语句执行一次 C语言的do-while循环中,循环由do开始,用while结束;而且在while表达式后面的______不能丢,它表示do-while循环的结束。 (A)n (B)“;” (C)“%” (D) “,” 以下能正确计算1×2×3×4...×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); 以下描述中正确的是______。 (A)由于do-while循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 (B)do-while循环由do开始,用while结束,因此在while(表达式)后无需加分号。 (C)在do-while循环体中,一定要有能使while后面表达式的值变为“假”的操作。 (D)do-while循环中,根据情况可以省略while。 下面程序段的输出结果是______。 int x=3; do(printf("%3d",x-=2);) while(!(--x)); (A)1 2 (B)3 2 (C)2 3 (D)1 -2 C语言的for语句中的表达式可以部分或全部省略,但两个______不可省略。当三个表达式均省略后,因缺少判断条件,循环可能会无限制地进行下去,形成死循环。 (A)“<” (B)“++” (C)“;” (D)“,” 对于for(表达式;;表达式3)可理解为______。 (A)for(表达式;0;表达式3) (B)for(表达式;1;表达式3) (C)for(表达式;表达式1;表达式3) (D)for(表达式;表达式3;表达式3) 若i为整型变量,则以下循环执行的次数是______。 for(i=2;i==0;) printf("%d",i--); (A)无限次 (B)0次 (C)1次 (D)2次 以下for循环的执行次数是______。 for(x=0,y=0;(y=3)(x<4);x++,y++); (A)是无限循环 (B)循环次数不定 (C)执行4次 (D)执行3次 设i为整型量,执行循环语句for(i=50;i>=0;i-=10);后,i值为______。 (A)-10 (B)0 (C)10 (D)50 下面有关for循环的正确描述是______。 (A)for循环只能用于循环次数已经确定的情况。(B)for循环是先执行循环体语句,后判断表达式。 (C)在for循环中,不能用break语句跳出循环体。(D)for循环的循环体语句中,可以包含多条语句,但要用花括号括起来。 下面有关for循环的正确描述是______。 (A)for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。(B)for语句的三个表达式都是可以省略的,可以写成for( )。 (C)在for语句中,至少会执行循环体语句一次(D)for(;;) ;是一条语法上错误的语句。 在下列选[3]项中,没有构成死循环的程序段是______。 (A)int i=100; while (1) (i=i%100+1; if(i>100)break;) (B)for(;;); (C)int k=1000; do(--k;) while (k); (D)int s=36; while(s>=0) ; --s; 以下程序段的输出结果是______。 int x,i; for (i=1;i<=100;i++) ( x=i; if (++x%2==0) if (++x%3==0) if (++x%7==0) printf("%d ",x);) (A)25 67 (B)26 68 (C)27 69 (D)28 70 以下程序段的输出结果是______。 #include<stdio.h> void main( ) ( int i=2; for ( ;i<=10; ) { i++; if (i%3==0) printf("%d ",i); else continue;) } (A)3 (B)3 6 (C)3 6 9 (D)3 6 9 10 以下正确的描述是______。 (A)continue语句的作用是结束整个循环的执行。 (B)只能在循环体内和switch语句内使用break语句。 (C)在循环体内,使用break语句和使用continue语句的作用是相同的。 (D)从多层循环嵌套中退出时,只能使用goto语句。 下面程序段,______。 for(t=1;t<=100;t++) ( scanf("%d",x); if (x<0) continue; printf("%3d",t); )
第五章
执行程序段[1]: x=-1; do { x=x*x;} while(!x); 的结果是______。 (A)死循环 (B)循环执行2次 (C)循环执行一次 (D)有语法错误[2] 有以下程序: #include<stdio.h> void main() { while(putchar(getchar())!='?'); } 当输入"hello?"时,程序的执行结果是______。 (A)hello (B)dijob (C)dijob? (D)hello? 以下程序的输出为______。 #include<stdio.h> void main( ) { int y=5; while (y--); printf ("y=%d\n", y);} (A)y=0 (B)无限循环,无结果输出 (C)y=1 (D)y=-1 设有程序段: int x=0,s=0; while(x!=0) s+=++x; printf("%d",s); ,则运行程序段后______。 (A)输出0 (B)输出1 (C)控制表达式是非法的 (D)执行无限次 设有程序段: int k=10; while(k=0) k=k-1; ,则下面描述正确的是______。 (A)while 循环执行10次 (B)循环是无限循环 (C)循环体语句一次也不执行 (D)循环体语句执行一次 C语言的do-while循环中,循环由do开始,用while结束;而且在while表达式后面的______不能丢,它表示do-while循环的结束。 (A)\n (B)“;” (C)“%” (D) “,” 以下能正确计算1×2×3×4...×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); 以下描述中正确的是______。 (A)由于do-while循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 (B)do-while循环由do开始,用while结束,因此在while(表达式)后无需加分号。 (C)在do-while循环体中,一定要有能使while后面表达式的值变为“假”的操作。 (D)do-while循环中,根据情况可以省略while。 下面程序段的输出结果是______。 int x=3; do{printf("%3d",x-=2);} while(!(--x)); (A)1 2 (B)3 2 (C)2 3 (D)1 -2 C语言的for语句中的表达式可以部分或全部省略,但两个______不可省略。当三个表达式均省略后,因缺少判断条件,循环可能会无限制地进行下去,形成死循环。 (A)“<” (B)“++” (C)“;” (D)“,” 对于for(表达式;;表达式3)可理解为______。 (A)for(表达式;0;表达式3) (B)for(表达式;1;表达式3) (C)for(表达式;表达式1;表达式3) (D)for(表达式;表达式3;表达式3) 若i为整型变量,则以下循环执行的次数是______。 for(i=2;i==0;) printf("%d",i--); (A)无限次 (B)0次 (C)1次 (D)2次 以下for循环的执行次数是______。 for(x=0,y=0;(y=3)(x<4);x++,y++); (A)是无限循环 (B)循环次数不定 (C)执行4次 (D)执行3次 设i为整型量,执行循环语句for(i=50;i>=0;i-=10);后,i值为______。 (A)-10 (B)0 (C)10 (D)50 下面有关for循环的正确描述是______。 (A)for循环只能用于循环次数已经确定的情况。(B)for循环是先执行循环体语句,后判断表达式。 (C)在for循环中,不能用break语句跳出循环体。(D)for循环的循环体语句中,可以包含多条语句,但要用花括号括起来。 下面有关for循环的正确描述是______。 (A)for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。
(B)for语句的三个表达式都是可以省略的,可以写成for( )。 (C)在for语句中,至少会执行循环体语句一次
(D)for(;;) ;是一条语法上错误的语句。 在下列选[3]项中,没有构成死循环的程序段是______。 (A)int i=100; while (1) {i=i%100+1; if(i>100)break;} (B)for(;;); (C)int k=1000; do{--k;} while (k); (D)int s=36; while(s>=0) ; --s; 以下程序段的输出结果是______。 int x,i; for (i=1;i<=100;i++) { x=i; if (++x%2==0) if (++x%3==0) if (++x%7==0) printf("%d ",x);} (A)25 67 (B)26 68 (C)27 69 (D)28 70 以下程序段的输出结果是______。 #include<stdio.h> void main( ) { int i=2; for ( ;i<=10; ) { i++; if (i%3==0) printf("%d ",i); else continue;} } (A)3 (B)3 6 (C)3 6 9 (D)3 6 9 10 以下正确的描述是______。 (A)continue语句的作用是结束整个循环的执行。 (B)只能在循环体内和switch语句内使用break语句。 (C)在循环体内,使用break语句和使用continue语句的作用是相同的。 (D)从多层循环嵌套中退出时,只能使用goto语句。 下面程序段,______。 for(t=1;t<=100;t++) { scanf("%d",x); if (x<0) continue; printf("%3d",t); }
A.
当x<0时整个循环结束 B.
当x>=0时什么也不输出 C.
printf函数永远也不执行 D.
最多允许输出100个非负整数 以下为死循环的程序段是______。 (A)for(i=1; ; ) {if (++i%2==0) continue; if (++i%3==0) break; } (B)short int i; i=100; do { if (i<0) break;} while(++i); (C)for(i=1; ; ) if (++i<10) continue; (D)i=100; while(i--); 以下程序输出结果为______。 #include <stdio.h> void main() { int i,b,k=0; for(i=1;i<=3;i++) { b=i%3; while (b-->=0) k++; } printf("%d,%d\n",k,b); } (A)3,-1 (B)6,-1 (C)3,0 (D)6,-2 以下描述正确的是______。 (A)goto语句只能用于退出多层循环。 (B)switch语句中不能出现continue语句。 (C)只能用continue语句来终止本次循环。 (D)在循环中break语句不能独立出现。 以下不正确的描述是______。 (A)break语句不能用于循环语句和switch语句外的任何其他语句。 (B)在switch语句中使用break语句或continue语句的作用相同。 (C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行。 (D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环。 以下叙述正确的是______。 (A)for循环中的break; 语句表示:当条件成立时中止程序执行。 (B)for循环中的continue; 语句表示:当条件成立时中止本层循环。 (C)for循环中的break; 语句表示:当条件成立时中止本层循环。 (D)for循环中的break; 语句表示:当条件成立时暂停本次循环。 下面程序的运行结果是______。 #include<stdio.h> void main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=4;j++) { if(j%2) continue; x++; } x++; } printf("x=%d\n",x); } (A)x=6 (B)x=8 (C)x=10 (D)x=12 下面程序段输出的i值是______。 #include<stdio.h> void main() { int i; for(i=1;i<=50;i++) if((i*i>=130)(i*i<=180))break; printf("%d\n",i); } (A)10 (B)11 (C)12 (D)13 下面程序段在执行完成后,a的值为:______。 int j=0,k=0,a=0; while(j<3) { j++; a=a+1; k=0; while(k<=2) { k++; if(k%2!=0) continue; a=a+1; } a=a+1; } (A)6 (B)8 (C)9 (D)10 E.
____4 _______。 #include<stdio.h> void main() { int a=0; while(a*a*a<=50) ++a; printf("%d\n",a); } F.
Hello?<回车>,则下面程序的运行结果是[ Ifmmp ]。 #include<stdio.h> void main() {char c; while((c=getchar())!='?') putchar(++c); } G.
[ 40 ]。 #include<stdio.h> void main() { int k=1,n=452; do { k*=n%10; n/=10; } while(n); printf("%d\n",k); } [ k=14 n=-1 ]。 #include<stdio.h> void main() { int k=0,n; do { scanf("%d",n); k+=n; } while(n!=-1); printf("k=%d n=%d\n",k,n); } [ 10 ]。 #include"stdio.h" void main() { int i; for(i=0;i<10;i++); printf("%d",i); } [55 ]。 #include<stdio.h> void main() { int a=0,i;for(i=1;i<=5;i++) a+=i*i;printf("%d\n",a); } [ x=6 ]。 #include<stdio.h> void main() { int i,j,x=0; for(i=0;i<3;i++) {if(i%3==2) break; x++; for(j=0;j<4;j++) { if(j%2) break; x++; } x++; } printf("x=%d\n",x); } [ 6 ]。 for(y=1,x=1;y<=50;y++) { if(x>=10) break; if (x%2==1){ x+=5; continue;} x-=3; } BCdef<回车>,则输出为[ abcDEF ]。 #include<stdio.h> void main() {char ch; while((ch=getchar( ))!='\n') {if(ch>='A' ch<='Z') ch=ch+32; else if(ch>='a'ch<'z') ch=ch-32;printf("%c",ch);} printf("\n"); } [ 7,7 ]。 #include<stdio.h> void main() { int v1=0,v2=0; char ch; while((ch=getchar( ))!='#') switch(ch){case 'd':case 't':default: v1++;case 'a': v2++;} printf("%d,%d\n",v1,v2);} [ 6 ]。 #include<stdio.h> void main() { int i,j,m=0; for(i=1;i<=10;i+=4) for(j=3;j<=10;j+=4) m++; printf("%d\n",m); } in() { int a,b,t; scanf("%d%d",a,b); while([ a!=b ]) { if (a>b) {t=a;a=b;b=t;} printf("%d,%d\n",a,b); scanf("%d%d",a,b); } } ,z变成 。请将程序补充完整。 #include<stdio.h> void main() { har c; while ((c=getchar())!='\n') { if (c>='a' c<='z') [ c-=30 ]; if (c>'Z' c<='Z'+2) [ c-=26 ]; printf("%c\n",c); } } in() { int m=0,n=0; char c; while ( ([ c=getchar() ])!='\n') { if (c>='A' c<='Z') m++; if (c>='a' c<='z') n++; } printf("m=%d,n=%d\n",m,n); } r(); while([ c!='\n' ]) { if([ c>='0'c<='9' ]) n++; c=getchar(); } in() { int i,t=1,s=0; for(i=1;i<=101;i+=2) {[ t=t*i ]; s+=t;[t=-t/i ];} printf("%d\n",s); } in() { int x,y; for(x=1;x<=29;x++) {y=30-x; if ([ x*2+y*4==90 ])printf("%d,%d\n",x,y);} } in() { int i,j,k; printf("\n 红 白 黑 \n"); for(i=0;i<=3;i++) for([ j=1 ];j<=5;j++) { k=8-i-j; if ([ k>=0k<=6 ]) printf(" %3d %3d %3d \n",i,j,k); } } in() {int i=1,j=0; do {if ([i%3==2i%5==3i%7==2 ]) { printf("%4d",i); j=j+1; if ([ j%5==0 ]) printf("\n"); } i=i+1; }while(i<1000); } while语句do-while语句无论什么情况下,二者的执行结果都一样。 C语言的while、do-while和for几个循环语句,可以相互嵌套。 用do-while语句构成循环时,只有在while后的表达式为非0时结束循环。 要使for(表达式1;表达式2;表达式3){循环体}不形成死循环,表达式2一定不能省略。 while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。 ontinue语句的功能就是结束本层循环。 对用goto语句和if语句构成的循环,不能用break语句和continue语句进行控制。 break语句不能用于循环语句和switch语句之外的任何其它语句。 在多层循环嵌套中,可以共用一个continue结束各层的本次循环。 三种循环(for循环、while循环和do-while循环)可以互相嵌套,但必须使用相同的循环控制变量。