第1页共16页第三单元循环结构练习题选择题:(有答案)1、有以下程序执行后的输出结果是(D)。main(){inti,s=0;for(i=1;i10;i+=2)s+=i+1;printf(%d\n,s);}A.自然数1~9的累加和B.自然数1~10的累加和C.自然数1~9中的奇数之和D.自然数1~10中的偶数之和2、以下关于for语句的说法不正确的是(A)。A.for循环只能用于循环次数已经确定的情况B.for循环是先判断表达式,后执行循环体语句C.for循环中,可以用break跳出循环体D.for循环体语句中,可以保含多条语句,但要用花括号括起来3、若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++)printf(*****\n);下面关于语句执行情况的叙述中正确的是(D)。A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环4、若运行以下程序时,输入2473↙,则程序的运行结果是:(A)main(){intc;while((c=getchar())!=’\n’)switch(c-‘2’){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;}printf(“\n”);}A)668977B)668966C)66778777D)66887665、以下for循环的执行次数是:(C)。for(x=0,y=0;(y=123)&&(x4);x++);A)无限循环B)循环次数不定C)4次D)3次6、已知intt=0;while(t=1){...}则以下叙述正确的是(B)。A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对7、设有以下程序段(B)intx=0,s=0;while(!x!=0)s+=++x;printf(%d,s);则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次8、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为(C)。for(i=0,j=10;i=j;i++,j--)k=i+j;A.6B.9C.10D.119、C语言中,break;语句可以用于循环语句和(B)语句中。A.ifB.switchC.forD.while10、for(i=0;i=15;i++)printf(%d,i);循环结束后,i的值为(C)。A.14B.15C.16D.17第2页共16页11.有以下程序main(){charb,c;inti;b='a';c='A';for(i=0;i6;i++){if(i%2)putchar(i+b);elseputchar(i+c);}printf(\n);}程序运行后的输出结果是(B)A.ABCDEFB.AbCdEfC.aBcDeFD.abcdef12、与语句“while(!x)”等价的语句是(A)。A.while(x==0)B.while(x!=0)C.while(x==1)D.while(x!=1)13、下面程序段的运行结果是(D)。x=y=0;while(x15)y++,x+=++y;printf(“%d,%d”,y,x);A)20,7B)6,12C)20,8D)8,2014、以下程序中,while循环的次数是(B)。#includestdio.hvoidmain(){inti=0;while(i10){if(i1)continue;if(i==5)break;i++;}}A.1B.死循环,不能确定次数C.6D.1015.下面程序段intk=2;while(k=0){printf(“%d”,k);k--;}则下面描述中正确的是(B)。A)while循环执行10次B)循环是无限循环C)循环题语句一次也不执行D)循环体语句执行一次16.以下程序段的循环次数是(B)。for(i=2;i==0;)printf(“%d”,i--);A)无限次B)0次C)1次D)2次17.下面程序的输出结果是(B)。main(){charc='A’;intk=0;do{switch(c++){case‘A’:k++;break;case‘B’:k--;case‘C’:k+=2;break;case‘D’:k%=2;continue;case‘E’:k*=10;break;default:k/=3;}k++;}while(c’G’);printf(“k=%d”,k);}A)k=3B)k=4C)k=2D)k=019.下面程序的输出结果是(B)。main(){intx=9;for(;x0;x--){if(x%3==0){printf(“%d”,--x);continue;}}}A)741B)852C)963D)875421第3页共16页20.inti=100;以下不是死循环的程序段是(A)。A)while(1){i=i%100+1;if(i100)break;}B)for(;;);C)intk=0;do{++k;}while(k=0);D)ints=36;while(s);--s;21.下述程序段的运行结果是(C)。inta=1,b=2,c=3,t=4;while(abc){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,122.下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择(A)填空。main(){intm=0,n=0;charc;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)23.下述语句执行后,变量k的值是(A)。intk=1;while(k++10);A)10B)11C)9D)无限循环,值不定24.下面程序的输出结果是(B)。main(){intk=0,m=0,i,j;for(i=0;i2;i++){for(j=0;j3;j++)k++;k-=j;}m=i+j;printf(“k=%d,m=%d”,k,m);}A)k=0,m=3B)k=0,m=5C)k=1,m=3D)k=1,m=525.下面for循环语句。(B)inti,k;for(i=0,k=-1;k=1;i++,k++)printf(“***”);A)判断循环结束的条件非法B)是无限循环C)只循环一次D)一次也不循环26.语句while(!E);括号中的表达式!E等价于(A)。A)E==0B)E!=1C)E!=0D)E==127.以下不是死循环的语句是(A)。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;28.执行语句for(i=1;i++4;);后变量i的值是(B)。A)3B)4C)5D)不定29.以下程序段(B)。x=-1;do{x=x*x;}while(!x);A)是死循环B)循环执行2次C)循环执行1次D)有语法错误第4页共16页30.下面程序的功能是在输入的一批正数中求最大者,输入0结束循环,选择填空。(B)main(){inta,max=0;scanf(“%d”,&a);while(【】){if(maxa)max=a;scanf(“%d”,&a);}printf(“%d”,max);}A)a==0B)aC)!a==1D)!a31.设有程序段intk=10;while(k0)k=k-1;则下面描述中正确的是()Awhile循环执行10次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次32.设有以下程序段intx=0,s=0;while(x!=0)s+=++x;printf(%d,s);则()A运行程序段后输出0B运行程序段后输出1C程序段中的控制表达式是非法的D程序段执行无限次33、下面程序段的运行结果是()intn=0;while(n++=2);printf(%d,n);A,2B、3C、4D有语法错误34、设有程序段t=0;while(printf(*)){t++;if(t3)break;}下面描述正确的是()A、其中循环控制表达式与0等价B、其中循环控制表达式与’0‘等价C、其中循环表达式是不合法的D、以上说法都不对35、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等的数时结束循环,请选择填空。main(){inta,b,t;scanf(“%d,%d”,&a,&b);while(){if(ab){t=a;a=b;b=t;}printf(“%d,%d\n”,a,b);}A、!a=bB、a!=bC、a==bD、a=b36、下面程序的功能是从键盘输入的一组字符中统计出大写字母个数m和小写字母个数n,并输出m,n中较大者,请选择填空。#includestdio.hmain(){intm=0,n=0;charc;while((__)!=’\n’){if(c=’A’&&c=’Z’)m++;if(c’a’&&c=’z’)n++;}printf(“%d\n”,mn?___);}A.c==getchar()B.getchar()C.c=getchar()D.scanf(“%c”,c)A.n:mB.m:nC.m:mD.n:n37、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,Z变第5页共16页成B。填空#includestdio.hmain(){charc;while((c=getchar())!=’\n’){if(c=’a’&&c=’z’){_______;if(c=’Z’&&c=’Z’+2)___________;}printf(“%c”,c);}A.c+=2B.c-=32C.c=c+32+2D.c-=30A.c=’B’B.c=’A’C.c-=26D.c=c+2638、下面程序的运行结果是()main(){intnum=0;while(num=2){num++;printf(“%d\n”,num);}A.1B.1CR2C.1CR2CR3D.1CR2CR3CR439、C语言中while和do-while循环的主要区别是()A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do–while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句40、以下描述中正确的是()A.由于do-while循环中循环语句中只能是一条可执行语句,所以循环体内不能使用复合语句。B.do-while循环由do开始,且while结束,在while(表达式)后面不能写分号。C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作。D.do-while循环中,根据情况可以省略while41、若有以下后句intx=3;do{print(%d\n,x-=2);}while(!(--x));则上面程序段()A.输入的是1B.输出的是1和-2C.输出的是3和0D.死循环42、下面程序的运行结果是()main(){inty=10;do{y--;}while(--y);printf(%d\n,y--);}A.-1B.1C.8D.043、.下面有关for循环的正确描述是()A.for循环只能有于循环次数已经确定的情况B.for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须花括号括起来第6页共16页44、对for(表达式1;;表达