第1页共13页第六章循环控制一单项选择题1.下面程序段的运行结果是()。intn=0;while(n++=2);printf(“%d”,n);A)2B)3C)4D)有语法错2.设有程序段:t=0;while(printf(“*”)){t++;if(t3)break;}下面描述正确的是()。A)其中循环控制表达式与0等价B)其中循环控制表达式与'0'等价C)其中循环控制表达式是不合法的D)以上说法都不对3.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空()。#includestdio.hmain(){inta,b,t;scanf(“%d%d”,&a,&b);while(___________){if(ab){t=a;a=b;b=t;}printf(“%d,%d\n”,a,b);scanf(%d%d,&a,&b);}}A)!a=bB)a!=bC)a==bD)a=b4.C语言中,while和do-while循环的主要区别是()。A)do-while的循环体至少无条件执行一次B)while的循环控制条件比do-while的循环控制条件更严格C)do-while允许从外部转到循环体内D)do-while的循环体不能是复合语句5.对以下程序段描述正确的是()。第2页共13页x=-1;do{x=x*x;}while(!x);A)是死循环B)循环执行二次C)循环执行一次D)有语法错误6.以下描述中正确的是()。A)do-while循环中循环体内不能使用复合语句B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C)在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作D)do-while循环中,根据情况可以省略while7.若有如下语句intx=3;do{printf(“%3d”,x-=2);}while(!(--x));则上面程序段()。A)输出的是1B)输出的是1和-2C)输出的是3和0D)是死循环8.下面有关for循环的正确描述是()。A)for循环只能用于循环次数已经确定的情况B)for循环是先执行循环的循环体语句,后判断表达式C)在for循环中,不能用break语句跳出循环体D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来9.对for(表达式1;;表达式3)可理解为()。A)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)10.若i为整型变量,则以下循环执行次数是()。for(i=2;i==0;)printf(“%d”,i--);A)无限次B)0次C)1次D)2次11.以下不是无限循环的语句为()。A)for(y=0,x=1;x++y;x=i++)i=x;B)for(;;x++=i);C)while(1){x++;}D)for(i=10;;i--)sum+=i;12.下面程序段的运行结果是()。for(y=1;y10;)y=((x=3*y,x+1),x-1);printf(“x=%d,y=%d”,x,y);A)x=27,y=27B)x=12,y=13C)x=15,y=14D)x=y=2713.执行语句for(i=1;i++4;);后变量i的值是()。A)3B)4C)5D)不定第3页共13页14.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空()。#includestdio.hmain(){inti;for(i=100;i200;i++)if((i-2)%4==0)if(!((i-3)%7))if(______)printf(“%d”,i);}A)i%9=5B)i%9!=5C)(i-5)%9!=0D)i%9==515.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空()。#includestdio.hmain(){inti=0,j,k;do{i++;k=316-13*i;}while(_______);j=k/11;printf(“316=13*%d+11*%d”,i,j);}A)k/11B)k%11C)k/11==0D)k%11==016.下面程序的运行结果是()。#includestdio.hmain(){inty=10;do{y--;}while(--y);printf(“%d\n”,y--);}A)-1B)1C)8D)017.若运行以下程序时,从键盘输入ADescriptorCR(CR表示回车),则下面程序的运行结果是()。#includestdio.hmain(){charc;intv0=1,v1=0,v2=0;do{switch(c=getchar()){case‘a’:case‘A’:case‘e’:case‘E’:case‘i’:case‘I’:第4页共13页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=7B)v0=8,v1=4,v2=8C)v0=11,v1=4,v2=11D)v0=12,v1=4,v2=1218.下面程序的运行结果是()。#includestdio.hmain(){inta=1,b=10;do{b-=a;a++;}while(b--0);printf(“a=%d,b=%d\n”,a,b);}A)a=3,b=11B)a=2,b=8C)a=1,b=-1D)a=4,b=919.以下程序的输出结果是()。main(){intnum=0;while(num=2){num++;printf(“%d\n”,num);}}A)1B)1C)1D)l22233420.设有程序段intk=10;while(k=0)k=k-1;则下面描述中正确的是()。A)while循环执行10次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次21.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf(%d,s);第5页共13页则()。A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次22.语句while(!E);中的表达式!E等价于()。A)E==0B)E!=1C)E!=0D)E==123.下面程序段的运行结果是()。a=1;b=2;c=2;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,124.下面程序段的运行结果是()。x=y=0;while(x15)y++,x+=++y;printf(%d,%d,y,x);A)20,7B)6,12C)20,8D)8,2025.以下程序段的执行结果是()。inta,y;a=10;y=0;do{a+=2;y+=a;printf(a=%dy=%d\n,a,y);if(y20)break;}while(a=14);A)a=12y=12B)a=12y=12a=14y=16a=16y=28a=16y=20a=18y=24C)a=12y=12D)a=12y=12a=14y=26a=14y=4426.t为int类型,进人下面的循环之前,t的值为0,则以下叙述中正确的是()。while(t=l){……}A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对27.有以下程序段intk=0;while(k=1)k++;while循环执行的次数是()。第6页共13页A)无限次B)有语法错,不能执行C)一次也不执行D)执行1次28.以下程序执行后sum的值是()。main(){inti,sum;for(i=1;i6;i++)sum+=i;printf(%d\n,sum);}A)15B)14C)不确定D)029.有以下程序段intx=3;do{printf(%d,x-=2);}while(!(--x));其输出结果是()。A)1B)30C)1-2D)死循环30.若输入12、8,以下程序的输出结果是()。main(){inta,b,num1,num2,temp;scanf(“%d,%d”,&num1,&num2);if(num1num2){temp=num1;num1=num2;num2=temp;}a=num1,b=num2;while(b!=0){temp=a%b;a=b;b=temp;}printf(“%d,%d”,a,num1*num2/a);}A)4,24B)3,24C)5,25D)4,2531.以下程序的输出结果是()。#includemath.h#includestdio.hmain(){ints=1;floatn=1,pi=0;doublet=1;while(fabs(t)=2e-6)第7页共13页{pi+=t;n+=2;s=-s;t=s/n;}pi*=4;printf(“pi=%.6f\n”,pi);}A)3.141592B)1C)2e-6D)032.以下程序的输出结果是()。main(){inti,f1,f2;f1=f2=1;for(i=0;i4;i++){printf(“%d%d”,f1,f2);f1+=f2;f2+=f1;}}A)12345678B)1123581321C)1135791113D)1357911131533.下列叙述中,正确的一条是()。A)语句“goto12;”是合法的B)for(;;)语句相当于while(1)语句C)if(表达式)语句中,表达式的类型只限于逻辑表达式D)break语句可用于程序的任何地方,以终止程序的执行34.以下程序的输出结果是()。main(){inta,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);}A)7B)8C)9D)1035.以下的for循环()for(x=0,y=0;(y!=123)&&(x4);x++);A)是无限循环B)循环次数不定第8页共13页C)执行4次D)执行3次36.C语言中()A)不能使用do-while语句构成的循环B)do-while语句构成的循环必须用break语句才能退出C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环37.以下程序的输出结果是()。main(){inti;for(i=1;i=5;i++){if(i%2)printf(“*”);elsecontinue;printf(“#”);}printf(“$\n”);}A)*#*#*#$B)#*#*#*$C)*#*#$D)#*#*$38.有以下程序,从第一列开始输入数据2473CR(CR代表一个回车符),则程序的输出结果为()。#includestdio.hmain(){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)6677877D)668876639.执行以下程序片段的