循环结构一.选择题1、下面程序段int k=2;while (k=0) {printf(“%d”,k);k--;}则下面描述中正确的就是。
A)while循环执行10次B)循环就是无限循环C)循环题语句一次也不执行D)循环体语句执行一次2、以下程序段的循环次数就是。
for (i=2; i==0; ) printf(“%d” , i--) ;A)无限次B)0次C)1次D)2次4、下面程序的输出结果就是。
main ( ){ char c=’A’;int k=0;do {switch (c++) {case ‘A’ : k++ ; break ;case ‘B’ : k-- ;case ‘C’ : k+=2 ; break ;case ‘D’ : k%=2 ; continue ;ca se ‘E’ : k*=10 ; break ;default : k/=3 ;}k++;} while (c<’G’) ;printf (“k=%d”,k) ;}A)k=3 B)k=4 C)k=2 D)k=05、下面程序的输出结果就是。
main ( ){ int x=9;for (; x>0; x--) {if (x%3==0) {pr intf(“%d”,--x);continue ;}}}A)741 B)852 C)963 D)8754216、以下不就是死循环的程序段就是。
A) int i=100; B)for ( ; ; ) ;while (1) {i=i%100+1 ;if (i>100) break ;}C) int k=0; D)int s=36;do { ++k; } while (k>=0); while (s) ; --s ;7、下述程序段的运行结果就是。
int a=1,b=2, c=3, t;while (a<b<c) {t=a; a=b; b=t; c--;}printf(“%d,%d,%d”,a,b,c);A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,18、下面程序的功能就是从键盘输入一组字符,从中统计大写字母与小写字母的个数,选择填空。
main ( ){ int m=0,n=0;char c;while ((【】) ! ’\n’){if (c>=’A’ && c<=’Z’) m++;if (c>=’a’ && c<=’z’) n++;}}A)c=getchar( ) B)getchar( ) C)c==getchar( ) D)scanf(“%c”,&c)9、下述语句执行后,变量k的值就是。
int k=1;while (k++<10);A)10 B)11 C)9 D)无限循环,值不定10、下面程序的输出结果就是。
main ( ){ int k=0,m=0,i,j;for (i=0; i<2; i++) {for (j=0; j<3; j++)k++ ;k-=j ;}m = i+j ;printf(“k=%d,m=%d”,k,m) ;}A)k=0,m=3 B)k=0,m=5 C)k=1,m=3 D)k=1,m=511、下面for循环语句。
int i,k;for (i=0, k=-1; k=1; i++, k++)printf(“***”);A)判断循环结束的条件非法B)就是无限循环C)只循环一次D)一次也不循环12、语句while (!E); 括号中的表达式!E等价于。
A)E==0 B)E!=1 C)E!=0 D)E==113、以下就是死循环的程序段就是。
A) for (i=1; ; ) {if (i++%2==0) continue ;if (i++%3==0) break ;}B) i=32767;do { if (i<0) break ; } while (++i) ;C) for (i=1 ; ;) if (++I<10) continue ;D) i=1 ; while (i--);14、执行语句for (i=1;i++<4;) ; 后变量i的值就是。
A)3 B)4 C)5 D)不定15、以下程序段。
x=-1;do{ x=x*x; }while (!x);A)就是死循环B)循环执行2次C)循环执行1次D)有语法错误16、下面程序的功能就是在输入的一批正数中求最大者,输入0结束循环,选择填空。
main ( ){ int a,max=0;scanf(“%d”,&a);while (【】) {if (max<a) max=a ;scanf (“%d”,&a);}printf(“%d”,max);}A)a==0 B)a C)!a==1 D)!a17、以下不就是死循环的语句就是。
A)for (y=9,x=1;x>++y;x=i++) i=x ;B)for ( ; ; x++=i ) ;C)while (1) { x++ ; }D)for (i=10 ; ; i--) sum+=i ;18、下面程序段的运行结果就是。
x=y=0;while (x<15) y++,x+=++y ;printf(“%d,%d”,y,x);A)20,7 B)6,12 C)20,8 D)8,2019、以下for循环的执行次数就是。
for (x=0,y=0; (y=123) && (x<4) ; x++) ;A)无限循环B)循环次数不定C)4次D)3次20、若运行以下程序时,输入2473↙,则程序的运行结果就是。
main ( ){ int c;while ((c=getchar( )) ! =’\n’)switch (c-‘2’) {case 0 :case 1 : putchar (c+4) ;case 2 : putchar (c+4) ; break ;case 3 : putchar (c+3) ;default : putchar (c+2) ; break ;}printf(“\n”);}A)668977 B)668966 C)66778777 D)6688766二.填空题1、C语言三个循环语句分别就是语句, 语句与语句。
2、至少执行一次循环体的循环语句就是。
3、循环功能最强的循环语句就是。
5、程序段for (a=1,i=-1; -1<i<1; i++){ a++ ; printf(“%2d”,a); } ;printf(“%2d”,i) ;的运行结果就是。
三.判断题1、在while循环中允许使用嵌套循环,但只能就是嵌套while循环。
【】2、在实际编程中,do-while循环完全可以用for循环替换。
【】3、continue语句只能用于三个循环语句中。
【】4、在不得已的情况下(例如提高程序运行效率),才使用goto语句。
【】5、语句标号与C语言标识符的语法规定就是完全一样的。
【】6、for循环的三个表达式可以任意省略,while,do-while也就是如此。
【】7、do-while允许从外部转到循环体内。
【】8、while的循环控制条件比do-while的循环控制条件严格。
【】9、do-while循环中,根据情况可以省略while。
【】10、do-while循环的while后的分号可以省略。
【】四.程序阅读题1、写出下面程序运行的结果。
main ( ){ 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) ;}}2、写出下面程序运行的结果。
main ( ){ int i,b,k=0 ;for (i=1; i<=5 ; i++) {b=i%2;while (b--=0) k++ ;}printf(“%d,%d”,k,b);}3、写出下面程序运行的结果。
main ( ){ int a,b;for (a=1,b=1 ; a<=100 ; a++) {if (b>=20) break;if (b%3==1) { b+=3 ; continue ; } b-=5;}printf(“%d\n”,a);}4、写出下面程序运行的结果。
main ( ){ int k=1,n=263 ;do { k*= n%10 ; n/=10 ; } while (n) ; printf(“%d\n”,k);}5、写出下面程序运行的结果。
main ( ){ int i=5 ;do {switch (i%2) {case 4 : i-- ; break ;case 6 : i-- ; continue ;}i-- ; i-- ;printf(“%d”,i);}while (i>0) ;}6、写出下面程序运行的结果。
main ( ){ int i,j;for (i=0;i<3;i++,i++) {for (j=4 ; j>=0; j--) {j-- ;printf(“%d,”,j);continue ;}--i ;j-- ;printf(“%d,”,j) ;}}}7、写出下面程序运行的结果。
main ( ){ int a=10,y=0 ;do {a+=2 ; y+=a ;if (y>50) break ;} while (a=14) ;printf(“a=%d y=%d\n”,a,y) ;}8、写出下面程序运行的结果。
main ( ){ int i,j,k=19;while (i=k-1) {k-=3 ;if (k%5==0) { i++ ; continue ; } else if (k<5) break ;i++;}pr intf(“i=%d,k=%d\n”,i,k);}9、写出下面程序运行的结果。
main ( ){ int y=2,a=1;while (y--!=-1)do {a*=y ;a++ ;} while (y--) ;printf(“%d,%d\n”,a,y);}10、写出下面程序运行的结果。
main ( ){ int i,k=0;k++ ;while (k<i*i) {k++ ;if (k%3==0) goto loop ;}}loop:printf(“%d,%d\n”,i,k);}六.程序填空题1、下述程序用“碾转相除法”计算两个整数m与n的最大公约数。
该方法的基本思想就是计算m与n相除的余数,如果余数为0则结束,此时的被除数就就是最大公约数。
否则,将除数作为新的被除数,余数作为新的除数,继续计算m与n相除的余数,判断就是否为0,等等,请填(3)空使程序完整。