当前位置:首页 > c语言循环章节练习题(部分答案)
循环章节练习题
一、选择题 1.设有程序段 int k=10;
while (k=0) k=k-1;
则下面描述中正确的是_______. A. while循环执行10次。 B.循环是无限循环。
C.循环体语句一次也不执行。 D.循环体语句执行一次。 2.设有以下程序段: int x=0,s=0;
while(!x!=0) s+=++x; printf(“%d”,s); 则________。
A. 运行程序段后输出0。 B. 运行程序段后输出1。
C.程序段中的控制表达式是非法的。 D.程序段执行无限次。
3.下面程序段的运行结果是________。 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
3.下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。 #incldue
{ int m=0,n=0; char c;
while( (___1____)!=’\\n’) { if(c>=’A’&&’Z’) m++;
if(c>=’a’&&’z’) n++;} printf(“%d\\n”,m 1)A.c=getchar() B.getchar() C.c=getchar D.scanf(“%c”,c); 2)A. n:m B. m:n C. m:m D. n:n 4.下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。 #include main() { int a,max=0; scanf(“%d”,&a); while(_______) { if(max main() { int num=0; while(num<=2) { num++; printf(“%d\\n”,num);} } A.1 B.1 C.1 D.1 2 2 2 3 3 4 6.若运行以下程序时,从键盘输入2473↙,则下面程序的运行结果是_______。 #include 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); defauit: putchar(c+2); break;} printf(“\\n”); } A.668977 B.668966 C.66778777 D.6688766 7.C语言中while 和do—while循环的主要区别是_______。 A.do—while的循环体至少无条件执行一次 B.while的循环控制条件比do—while的循环控制条件严格。 C. do—while允许从外部转到循环体内。 D. do—while的循环体不能是复合语句。 1 8.以下程序段________。 x=-1; do { x=x*x; while(!x); A.是死循环。B.循环执行二次。 C.循环执行一次。C.有语法错误。 9.以下描述中正确的是_________。 A.由于do—while循环中的循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B. do—while循环由do开始,用while 结束,在while (表达式)后面不能写分号。 C.在do—while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作。 D. do—while循环中,根据情况可以省略while 。 10.若有如下程序:int x=3; do{printf(“%d\\n”,x-=2);} while(!(--x)); 则上面程序段_________。 A.输出的是1 B.输出的是1和-2 C.输出的是3和0 D.是死循环 11.等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大数n,请选择填空。 #include {int a=1,q=2,n,sum; n=sum=0; do { ______1______; while(num<100); _____2____; printf(“%d\\n”,n);} 1)A.sum++ B.sum+=a C.sum*=a D.a+=sum 2)A.n=n-2 B.n=n C.n++ D.n-=1 13.下面有关for循环的正确描述是_____。 A.for循环只能用于循环次数已近确定的情况。 B.for循环是先执行循环体语句,后判断表达式。 C.在for循环中,不能用break语句跳出循环体。 D.for循环的循环体语句中,可以包含多条语句,但必须用花括号阔起来。 14.对于for(表达式1; ;表达式3)可理解为: A. for(表达式1;0 ;表达式3) B. for(表达式1;1 ;表达式3) C. for(表达式1;表达式1 ;表达式3) D. for(表达式1;表达式3 ;表达式3) 15.若i为整型变量,则以下循环执行的次数是: for(i=2;i==0 ;)printf(“%d”,i--); A> 无限次 B> 0次 C> 1次 D> 2次 16.下面程序段的运行结果为__________。 for(y=1;y<10;) y=((x=3*y,x+1),x-1) printf(“x=%d,y=%d”,x,y); A.x=27,y=27 B. x=12,y=13 C. x=15,y=14 D. x=y=27 17.下面程序段的运行结果是_______。 for(x=3;x<6;x++) printf(“(x%2)?(“* * %d”)(“# # %d\\n”),x”); A.* * 3 B.# # 3 C. # # 3 D. * * 3 # # 4 # # 4 * * 4 * * 4 # # 5 * * 5 * * 5 # # 5 18.下列程序段不是死循环的是________。 A.int i=100; B.for(; ;); D.int s=36; while(1) C.int k=0; while(s); { i=i0+1; do{k++;} --s; if(i>100)break;} while(k>=0); 19.下面程序的功能是计算1至50中是7的倍数的数值之和。请选择填空。 #include 20.下面程序的运行结果为_______。 #include for(i=1;i<=5;i++) switch(i%5) { case 0:printf(“*”);break; case 1:printf(“#”);break; default: printf(“\\n”); case 2:printf(“&”);}} A.#&&&* B.#& C.# D.#& & & 空格 &* & * & * 21.下面程序的运行结果为________。 2 #include { int i,b,k=0; A.3,-1 for(i=1;i<=5;i++) B.8,-1 { b=i%2; C.3,0 while(b--﹥=0) k++; D.8,-2 } printf(“%d,%d”,k,b);} 21.下面程序段________。 for(t=1;t<=100;t++) A.当x<0时整个循环结束 { scanf(“%d”,&x); B.print函数永远也不执行 if(x<0) continue; C.x>=0时什么也不输出 printf(“=”,t);}D.最多允许输出100个非负整数 22.下面程序段_______。 x=3; do{ y=x--; if(!y){printf(“x”);continue;} printf(“#”);} while(1<=x<=2); A.将输出## B.将输出##* C.是死循环 D.含有不合法的表达式 23.下面程序的运行结果是_______。 #include 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);} A.7 B.8 C.9 D.10 24.下面程序的功能是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填空。 int n=0,c; c=getchar(); while(_____________) { if(____________)n++;c=getchar();} 25.有1025个西瓜,第一天卖了一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?填空。 #include { int day=0,x1=1024,x2; while(______) {x2=________;x1=x2;day++;} printf(“day=%d\\n”,day);} 26.下面程序段执行后,k的值是______。 k=1;n=263 do{ k*=n;n/=10;} while(n); 27.鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只。请填空。 for(x=1;x<=29;x++) { y=30-x; if(____________)printf(“%d,%d\\n”,x,y);} 28.下面程序的功能是求出用数字0至9可以组成多少个没有重复的三位偶数。填空。 main() { int i,j,k,n=0; for(i=1;i<=9;i++) for(k=0;k<=8;______) if(k!=i) for(j=0;j<=9;j++) if(_________)n++; printf(“n=%d\\n”,n);} 29.下面程序是打印100以内个位数是6且能被3整除的数。填空。 #include for(i=0;__________;i++) { j=i*10+6; if(________)continue; printf(“%d”,j);}} 30.下面程序的运行结果______________。 #include { int y=2,a=1; while(y--!=-1) { do {a*=y;a++;} while (y--); } printf(“a=%d,y=%d\\n”,a,y);} 3
共分享92篇相关文档