第六章循环控制 6.1选择题 【题6.1】设有程序段 int k=10: while(k=0)k=k-1 则下面描述中正确的是 A) while循环执行10次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次 【题6.2】设有以下程序段 int x=0.s=0 printf(“%d”,s) 则 A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的D)程序段执行无限次 【题6.3】语句 while(!E);中的表达式!E等价于 A)E=0B)E!=1C)E!=0D)E=1 【题6.4】下面程序段的运行结果是 while(a<b<c)I t=a; a=b; b=t: c- printf(“%d,%d,%d”,a,b,c) A)1,2,0B)2,1,0C)1,2,1D)2,1,1 【题6.5】下面程序段的运行结果是 while(x<15)y++, x+=++y printf “%d,%d”,y,x) A)20,7B)6,12C)20,8D)8,20 【题6.6】下面程序段的运行结果是 int n while(n+<=2); printf(“%d”,n); D)有语法错 【题6.7】设有程序段 while( printf(“*”)
第六章 循环控制 6.1 选择题 【题 6.1】设有程序段 int k=10; while(k=0) k=k-1; 则下面描述中正确的是 。 A)while 循环执行 10 次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次 【题 6.2】设有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; printf(“%d”,s); 则 。 A)运行程序段后输出 0 B)运行程序段后输出 1 C)程序段中的控制表达式是非法的 D)程序段执行无限次 【题 6.3】语句 while(!E);中的表达式!E 等价于 。 A)E==0 B)E!=1 C)E!=0 D)E==1 【题 6.4】下面程序段的运行结果是 。 a=1; b=2; c=2; 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,1 【题 6.5】下面程序段的运行结果是 。 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,20 【题 6.6】下面程序段的运行结果是 。 int n=0; while(n++<=2); printf(“%d”,n); A)2 B)3 C)4 D)有语法错 【题 6.7】设有程序段 t=0; while(printf(“*”))
t++ if(t mainO int a,b,t: scanf(“%d while(【1】) if(a>b) printf(“%d,%d”Ⅶn”,a,b) scanf(“%d%”,&a,&b) 【1】A) B) al=b C) a==b 【题6.9】下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字 母的个数n,并输出皿、n中的较大者,请选择填空 #include maln int m=0. n=0 char c while((【1】)!=“\n’) f(c>=‘A’&&c=‘a’&c<=‘z’)n+; printf(“%dn”,m<n?【2】) 【1】A)c= getchar B) getchar(C) scanf(“%c”,c) 【2】A)n:m B)m:n C)m: m D)n:n 【题6.10】下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A, z变成B。请选择填空
{ t++; if(t main() { int a,b,t; scanf(“%d %d”,&a,&b); while(【1】) { if(a>b) { t=a; a=b; b=t; } printf(“%d,%d”\n”,a,b); scanf(“%d %d”,&a,&b); } } 【1】 A)!a=b B)a!=b C)a==b D)a=b 【题 6.9】下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数 m 和小写字 母的个数 n,并输出 m、n 中的较大者,请选择填空。 #include main() { int m=0,n=0; char c; while((【1】)!=‘\n’) { if(c>=‘A’&&c=‘a’&&c<=‘z’) n++; } printf(“%d\n”,m<n? 【2】); } 【1】 A)c=getchar() B)getchar() C)scanf(“%c”,c) 【2】 A)n:m B)m:n C)m:m D)n:n 【题 6.10】下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中 y 变成 A, z 变成 B。请选择填空
#include char c while((c= getchar0)!=“n’) f(c>=‘a'&&c"'Z 【2】 printf(“%c”,c) 【1】A)c+=2B)c-=32C)c=c+32+2D)c-=30 【2】A)c=‘B’B)c=‘A’C)c-=26 【题6.11】下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选 择填空 #include maino int numo while(num<=2) nutt printf(“%dn”,num)
#include main() { char c; while((c=getchar())!=‘\n’) { if(c>=‘a’&&c‘Z’) 【2】; } printf(“%c”,c); } } 【1】 A)c+=2 B)c-=32 C)c=c+32+2 D)c-=30 【2】 A)c=‘B’ B)c=‘A’ C)c-=26 D)c=c+26 【题 6.11】下面程序的功能是在输入的一批正整数中求出最大者,输入 0 结束循环,请选 择填空。 #include main() { int a,max=0; scanf(“%d”,&a); while(【1】) { if(max main() { int num=0; while(num<=2) { num++; printf(“%d\n”,num); }
A)1 2 【题6.13】若运行以下程序时,从键盘输入2473,则下面程序的运行结果是 #include mal int c while((c=getchar O)!='\n') case o 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 【题6.14】C语言中 while和do- while循环的主要区别是 A) do-while的循环体至少无条件执行一次 B) while的循环控制条件比do- while的循环控制条件严格 C)do- while允许从外部转到循环体内 D) do-while的循环体不能是复合语句 【题6.15】以下能正确计算1×2×3×…×10的程序段是」 a) doli=1: s=1 B)do{i=1;s=0; fwhile(i<=10) )while(i<=1( C)i=1;s=1 D)i=1;s=0; dois I while(i<=10) ) while(i<=10) 【题6.16】以下程序
} A)1 B)1 C)1 D)1 2 2 2 3 3 4 【题 6.13】若运行以下程序时,从键盘输入 2473,则下面程序的运行结果是 。 #include 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 【题 6.14】C 语言中 while 和 do-while 循环的主要区别是 。 A) do-while 的循环体至少无条件执行一次 B) while 的循环控制条件比 do-while 的循环控制条件严格 C) do-while 允许从外部转到循环体内 D) do-while 的循环体不能是复合语句 【题 6.15】以下能正确计算 1×2×3×…×10 的程序段是 。 A)do{i=1; s=1; B)do{i=1; s=0; s=s*i; s=s*i; i++; i++; }while(i<=10); }while(i<=10); C)i=1; s=1; D)i=1; s=0; do{s=s*i; do{s=s*i; i++; i++; }while(i<=10); }while(i<=10); 【题 6.16】以下程序段 。 x=-1; do { x=x*x; }
while(!x A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 【题6.17】以下描述中正确的是 A)由于do- while循环中循环体语句只能是一条可执行语句,所以循环体内 不能使用复合语句 B)do- while循环由do开始,用 while结束,在 while(表达式)后面不能 写分号 C)在do- while循环体中,一定要有能使 while后面表达式的值变为零(“假”) 的操作 D)do- while循环中,根据情况可以省略whie 【题6.18】若有如下语句 nt x=3: do{ printf(“%d\n”),x-=2;} while(!(-x) 则上面程序段 A)输出的是1B)输出的是1和-2C)输出的是3和0D)是死循环 【题6.19】下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。 #include int n. sumO n=2345 2wV→→ printf(“sum=%d”,sum) 【1】A)n%10B)(n%10)*(n%10)C)n/10D)(n/10)*(n/10) 【2】A)n/1000B)n/100 C)n/10D)n%10 【题6.20】下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时 结束循环。请选择填空。 #include main long int num scanf(“%ld”,&num); if(【1】) printf(“%ld”,num) scanf(“%ld”,&num)
while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 【题 6.17】以下描述中正确的是 。 A) 由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内 不能使用复合语句 B) do-while 循环由 do 开始,用 while 结束,在 while(表达式)后面不能 写分号 C) 在 do-while 循环体中,一定要有能使 while 后面表达式的值变为零(“假”) 的操作 D) do-while 循环中,根据情况可以省略 while 【题 6.18】若有如下语句 int x=3; do{ printf(“%d\n”),x-=2; }while(!(--x)); 则上面程序段 。 A)输出的是 1 B)输出的是 1 和-2 C)输出的是 3 和 0 D)是死循环 【题 6.19】下面程序的功能是计算正整数 2345 的各位数字平方和,请选择填空。 #include main() { int n,sum=0; n=2345; do{ sum=sum+【1】; n=【2】; }while(n); printf(“sum=%d”,sum); } 【1】 A)n%10 B)(n%10)*(n%10) C)n/10 D)(n/10)*(n/10) 【2】 A)n/1000 B)n/100 C)n/10 D)n%10 【题 6.20】下面程序是从键盘输入学号,然后输出学号中百位数字是 3 的学号,输入 0 时 结束循环。请选择填空。 #include main() { long int num; scanf(“%ld”,&num); do{ if(【1】) printf(“%ld”,num); scanf(“%ld”,&num);
hile(【2】); 【1】A)num%100/10==3 B)num/100%1 C)num%10/10==3 D)num/10%10=3 【题6.21】等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100 的最大n,请选择填空 #include malI Int a, g, n, sum a=1;q=2;n=sum=0; 【1】 Iwhile(sum int do{i++;k=316-13*i;} while(【1】) j=k/11 printf(“316=13*%d+11*%d”,i,j); 1】A)k/11B)k%11C)k/11==0 D)k%11==0 【题6.23】下面程序的运行结果是 #include maino int y=10: dof y- while(--y) printf(“%d\n”,y- A)-1 C)8
while(【2】); } 【1】 A)num%100/10==3 B)num/100%10==3 C)num%10/10==3 D)num/10%10==3 【2】 A)n=n-2 B)n=n C)n++ D)n-=1 【题 6.21】等比数列的第一项 a=1,公比 q=2,下面程序的功能是求满足前 n 项和小于 100 的最大 n,请选择填空。 #include main() { int a,q,n,sum; a=1; q=2; n=sum=0; do{ 【1】; ++n; a*=q; }while(sum main() { int i=0,j,k; do{ i++; k=316-13*i; }while(【1】); j=k/11; printf(“316=13*%d+11*%d”,i,j); } 【1】 A)k/11 B)k%11 C)k/11==0 D)k%11==0 【题 6.23】下面程序的运行结果是 。 #include main() { int y=10; do{ y--; }while(--y); printf(“%d\n”,y--); } A)-1 B)1 C)8 D)0
【题6.24】若运行以下程序时,从键盘输入 DEscriptor(表示回车),则下面程序 的运行结果是 #include main char c ntvO=0,vV1=0,v2=0; switch(c=getchar o) case case case case case AEIo case‘u vl+=1 default: v0+=l: v2+=1 } while(c!=‘n’); printf(“v0=%d,v1=%d,v2=%d\n”,vo,v1,v2) A)v0=7,v1=4,v2=7 B)v0=8,v1=4,v2=8 D)vO0=12,v1=4,v2=12 【题6.25】下面程序的运行结果是 #include int a=l, b=10 printf( (“a=%d,b=%dn”,a,b) A)a=3,b=11 B)a=2,b=8 C)a=1,b=-1D)a=4,b= 【题6.26】下面有关for循环的正确描述是 A)for循环只能用于循环次数已经确定的情况 B)for循环是先执行循环体语句,后判断表达式 C)在for循环中,不能用 break语句跳出循环体 D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 【题6.27】对for(表达式1;表达式3)可理解为_。 A)for(表达式1;0;表达式3) B)for(表达式1;1;表达式3) C)for(表达式1;表达式1;表达式3) D)for(表达式1;表达式3;表达式3)
【题 6.24】若运行以下程序时,从键盘输入 ADescriptor(表示回车),则下面程序 的运行结果是 。 #include main() { char c; int v0=0,v1=0,v2=0; do{ switch(c=getchar()) { case ‘a’: case ‘A’: case ‘e’: case ‘E’: case ‘i’: case ‘I’: case ‘o’: case ‘O’: case ‘u’: case ‘U’: v1+=1; default: v0+=1; v2+=1; } }while(c!=‘\n’); printf(“v0=%d,v1=%d,v2=%d\n”,v0,v1,v2); } A)v0=7,v1=4,v2=7 B)v0=8,v1=4,v2=8 C)v0=11,v1=4,v2=11 D)v0=12,v1=4,v2=12 【题 6.25】下面程序的运行结果是 。 #include main() { int a=1,b=10; do{ b-=a; a++; }while(b--<0); printf(“a=%d,b=%d\n”,a,b); } A)a=3,b=11 B)a=2,b=8 C)a=1,b=-1 D)a=4,b=9 【题 6.26】下面有关 for 循环的正确描述是 。 A) for 循环只能用于循环次数已经确定的情况 B) for 循环是先执行循环体语句,后判断表达式 C) 在 for 循环中,不能用 break 语句跳出循环体 D) for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 【题 6.27】对 for(表达式 1;;表达式 3)可理解为 。 A)for(表达式 1;0;表达式 3) B)for(表达式 1;1;表达式 3) C)for(表达式 1; 表达式 1;表达式 3) D)for(表达式 1; 表达式 3;表达式 3)
【题6.28】若i为整型变量,则以下循环执行次数是 for(i=2;i=0;) printf(“%d”,i-) A)无限次 B)0次C)1次D)2次 【题6.29】以下for循环的执行次数是 for(x=0,y=0;(y=123)&&(x++y: x=i++)i=x B)for( C)while(1)i x++: D) for (i=10;:i--)sum+=i 【题6.31】下面程序段的运行结果是 for(y=1;y100) break B) for (: c) int k= do[ ++k; while(k>=0) D) int s=36 while(s): -s 【题6.34】执行语句for(i=1;i++<4;);后变量i的值是 C)5 D)不定 【题6.35】有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零 件:若分成7个零件一组,则多3个零件:若分成9个零件一组,则多5个零
【题 6.28】若 i 为整型变量,则以下循环执行次数是 。 for(i=2;i==0;) printf(“%d”,i--); A)无限次 B)0 次 C)1 次 D)2 次 【题 6.29】以下 for 循环的执行次数是 。 for(x=0,y=0;(y=123)&&(x++y;x=i++) i=x B) for(;;x++=i); C) while(1) { x++; } D) for(i=10;;i--) sum+=i; 【题 6.31】下面程序段的运行结果是 。 for(y=1;y100) break; } B) for(;;); C) int k=0; do{ ++k; }while(k>=0); D) int s=36; while(s); --s; 【题 6.34】执行语句 for(i=1;i++<4;);后变量 i 的值是 。 A)3 B)4 C)5 D)不定 【题 6.35】有一堆零件(100 到 200 之间),如果分成 4 个零件一组的若干组,则多 2 个零 件;若分成 7 个零件一组,则多 3 个零件;若分成 9 个零件一组,则多 5 个零
件。下面程序是求这堆零件总数,请选择填空。 #include maino for(i=100;i ma nt i, sumO for(i=1;i t a b for(i=0;i
件。下面程序是求这堆零件总数,请选择填空。 #include main() { int i; for(i=100;i main() { int i,sum=0; for(i=1;i main() { int a,b,c,i; a=c=0; for(i=0;i
int 1 for (i=l: i maino for(i=1;i<=100;i++) if(+x%3==0) if(+x%7==0) rinf(“%d”,x) 【题6.40】下面程序段的功能是计算1000!的末尾含有多少个零。请选择填空。 (提示:只要算出1000!中含有因数5的个数即可) for(k=0,i=5;i<=1000;i+=5) while(【1】)(k++;m=m/5 【1】A)m%5=0B)m=m%5==0C)m%5=0D)m%5!=0 【题6.41】下面程序的功能是求算式xyz+yzz=532中x,y,z值(其中xyz和yzz分别表 示一个三位数),请选择填空
main() { int i; for(i=1;i 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); } } 【题 6.40】下面程序段的功能是计算 1000!的末尾含有多少个零。请选择填空。 (提示:只要算出 1000!中含有因数 5 的个数即可) for(k=0,i=5;i<=1000;i+=5) { m=i; while(【1】) { k++; m=m/5; } } 【1】 A)m%5==0 B)m=m%5==0 C)m%5==0 D)m%5!=0 【题 6.41】下面程序的功能是求算式 xyz+yzz=532 中 x,y,z 值(其中 xyz 和 yzz 分别表 示一个三位数),请选择填空