第三章结构化程序设计部分习题一、选择题1、设有程序段intk=10;while(k=0)k=k-1;则下面叙述中正确的是()(A)while循环执行10次(B)循环是无限循环(C)循环体语句一次也不执行(D)循环体语句执行一次2、设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;couts;则()(A)运行程序段后输出0(B)运行程序段后输出1(C)程序段中的控制表达式是非法的(D)程序段执行无限次3、语句while(!E);中的表达式!E等价于()(A)E==0(B)E!=1(C)E!=0(D)E==14、下面程序段的运行结果是()a=1;b=2;c=2;while(abc){t=a;a=b;b=t;c--;}couta’,’b’,’c;(A)1,2,0(B)2,1,0(C)1,2,1(D)2,1,15、下面程序段的运行结果是()x=y=0;while(x15)y++,x+=++y;couty’\t’x;(A)20,7(B)6,12(C)20,8(D)8,206、下面程序段的运行结果是()intn=0;while(n++=2);coutn;(A)2(B)3(C)4(D)有语法错7、设有程序段t=0;while(1){t++;if(t3)break;}coutt;程序运行结果是()(A)0(B)1(C)2(D)38、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,①处应选择()#includeiostream.hvoidmain(){inta,b,t;cinab;while(①){if(ab){t=a;a=b;b=t}couta’,’b;cinab;}}(A)!a=b(B)a!=b(C)a==b(D)a=b9、下面程序的运行结果是()#includeiostream.hvoidmain(){inti,j,x=0;for(i=0;i2;i++){x++;for(j=0;j=3;j++){if(j%2)continue;x++;}x++;}coutx=x;}(A)x=4(B)x=8(C)x=6(D)x=1210、下面程序的运行结果是()#includeiostream.hvoidmain(){inti;for(i=1;i=5;i++){if(i%2)cout*;elsecontinue;cout#;}cout$\n;}(A)*#*#*#$(B)#*#*#*$(C)*#*#$(D)#*#*$11、下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择①()#includeiostream.hvoidmain(){inta,max=0;cina;while(①){if(maxa)max=a;cina;}coutmax;}①(A)a==0(B)a(C)!a==1(D)!a12、下面程序的运行结果是()#includeiostream.hvoidmain(){intnum=0;while(num=2){num++;coutnumendl;}}(A)1(B)12(C)123(D)123413、C语言中while和do-while循环的主要区别是()(A)do-while的循环体至少无条件执行一次(B)while的循环控制条件比do-while的循环控制条件严格(C)do-while允许从外部转到循环体内(D)do-while的循环体不能是复合语句14、以下能正确计算1×2×3×...×10的程序段是()(A)do{i=1;s=1;s=s*i;i++;}while(i=10);(B)do{i=1;s=0;s=s*i;i++;}while(i=10);(C)i=1;s=1;do{s=s*i;i++;}while(i=10);(D)i=1;s=0;do{s=s*i;i++;}while(i=10);15、以下程序段()x=-1;do{x=x*x;}while(!x);(A)是死循环(B)循环执行二次(C)循环执行一次(D)有语法错误16、若有如下语句intx=3;do{cout(x-=2)endl;}while(!(--x));则上面程序段()(A)输出的是1(B)输出的是1和-2(C)输出的是3和0(D)是死循环17、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。①()②()#includeiostream.hvoidmain(){intn,sum=0;n=2345;do{sum=sum+①;n=②;}while(n);coutsum;}①(A)n%10(B)(n%10)*(n%10)(C)n/10(D)(n/10)*(n/10)②(A)n/1000(B)n/100(C)n/10(D)n%1018、下面程序的运行结果是()#includeiostream.hvoidmain(){inta,b;for(a=1,b=1;a=100;a++){if(b=20)break;if(b%3==1){b+=3;continue;}b-=5;}couta;}(A)7(B)8(C)9(D)1019、下面程序的运行结果是()#includeiostream.hvoidmain(){inta=1,b=10;do{b-=a;a++;}while(b--0);cout”a=”a”,b=”b;}(A)a=3,b=11(B)a=2,b=8(C)a=1,b=-1(D)a=4,b=920、下面有关for循环的正确描述是()(A)for循环只能用于循环次数已经确定的情况(B)for循环是先执行循环体语句,后判断表达式(C)在for循环中,不能用break语句跳出循环体(D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来21、对for(表达式1;;表达式3)可理解为()(A)for(表达式1;0;表达式3)(B)for(表达式1;1;表达式3)(C)for(表达式1;表达式1;表达式3)(D)for(表达式1;表达式3;表达式3)22、若i为整型变量,则以下循环执行次数是()for(i=2;i==0;)couti--;(A)无限次(B)0次(C)1次(D)2次23、以下for循环的执行次数是()for(x=0,y=0;(y=123)&&(x4);x++);(A)是无限循环(B)循环次数不定(C)执行4次(D)执行3次24、以下不是无限循环的语句为()(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;25、下面程序段的运行结果是()for(y=1;y10;)y=((x=3*y,x+1),x-1);coutx=x,y=y;(A)x=27,y=27(B)x=12,y=13(C)x=15,y=14(D)x=y=2726、下面程序段()x=3;do{y=x--;if(!y){coutx;continue;}cout#;}while(1=x=2);(A)将输出##(B)将输出##*(C)是死循环(D)含有不合法的控制表达式27、下列程序段不是死循环的是()(A)inti=100;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;28、执行语句for(i=1;i++4;);后变量i的值是()(A)3(B)4(C)5(D)不定29、下面程序的功能是计算1至50中是7的倍数的数值之和,请选择填空。①()#includeiostream.hvoidmain(){inti,sum=0;for(i=1;i=50;i++)if(①)sum+=i;coutsum;}(A)(int)(i/7)==i/7(B)(int)i/7==i/7(C)i%7=0(D)i%7==030、下面程序的功能是计算1至10之间的奇数之和及偶数之和。请选择填空。①()②()#includeiostream.hvoidmain(){inta,b,c,i;a=c=0;for(i=0;i=10;i+=2){a+=i;①;c+=b;}Cout偶数之和=aendl;Cout奇数之和=②);}①(A)b=i--(B)b=i+1(C)b=i++(D)b=i-1②(A)c-10(B)c(C)c-11(D)c-b31、下面程序的运行结果是()#includeiostream.hvoidmain(){inti;for(i=1;i=5;i++)switch(i%5){case0:cout*;break;case1:cout#;break;default:cout\n;case2:cout&;}}(A)#&&&*(B)#&&&*(C)#&&&(D)#&*32、下面程序的运行结果是()#includeiostream.hvoidmain(){intx,i;for(i=1;i=100;i++){x=i;if(++x%2==0)if(++x%3==0)if(++x%7==0)coutx”\t”;}}(A)3981(B)4284(C)2668(D)287033、下面程序的运行结果是()#includeiostream.hvoidmain(){inti,b,k=0;for(i=1;i=5;i++){b=i%2;while(b--=0)k++;}coutk”,”b;}(A)3,-1(B)8,-1(C)3,0(D)8,-234、以下正确的描述是()(A)continue语句的作用是结束整个循环的执行(B)只能在循环体内和switch语句体内使用break语句(C)在循环体内使用break语句或continue语句的作用相同(D)从多层循环嵌套中退出时,只能使用goto语句35、以下是死循环的程序段是()(A)for(i=1;;){if(++i%2==0)continue;if(++i%3==0)break;}(B)i=32767;do{if(i0)break;}while(++i);(C)for(i=1;;)if(++i10)continue;(D)i=1;while(i--);36、下面程序的运行结果是()voidmain(){inti,j,a=0;for(i=0;i2;i++){for(j=0;j4;j++){if(j%2)break;a++;}a++;}couta;}(A)4(B)5(C)6(D)7二、填空题1、下面程序的运行结果是__31-1______。#includeiostream.hvoidmain(){inti=5;do{switch(i%2){case4:i--;break;case6:i--;continue;}i--;i--;couti'\t';}while(i0);}2、下面程序的运行结果是__a=16,y=60_。#includeiostream.hvoidmain(){inta,y;a=10;y=0;do{a+=2;y+=a;if(y50)break;}while(a=14);couta=a,y=y\n;}3、下面程序的运行结果是__254_。#includeiostream.hvoidmain(){inta,s,n,count;a=2;s=0;n=1;count=1;while(count=7){n=n*a;s=s+n;++count;}cout”s=”s;}4、下面程序的功能是打印100以内个位数为6且能被3整除的所有数。请填空#include