第六章循环结构一、选择题:1.执行语句:for(i=1;i9;i++)后;变量i的值是()。(A)10(B)9(C)不定(D)112.若t为int类型,进人下面的循环之前,t的值为0,while(t=l){……}则以下叙述中正确的是()。(A)循环控制表达式的值为0(B)循环控制表达式的值为1(C)循环控制表达式不合法(D)以上说法都不对3.对do...while语句错误的描述是:()A.可构成多重循环结构B.循环次数不可能为0C.循环次数可能为0D.先执行后判断。4.下面程序段的运行结果是()。intn=0;while(n++=2);printf(“%d”,n);(A)4(B)3(C)2(D)有语法错误5.以下描述正确的是()。A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。C.在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。D.do-while循环中,根据情况可以省略while。6.关于do-while语句的正确叙述是()A.do-while语句构成的循环不能用其它语句构成的循环来代替B.do-while语句构成的循环只能用continue语句退出C.用do-while语句构成的循环,在while后的表达式为非零时结束循环D.用do-while语句构成的循环,在while后的表达式为零时结束循环6.C语言中,while和do…while循环的主要区别是()。A.while的循环控制条件比do…while的循环控制条件严格B.do…while的循环体至少无条件执行一次C.do…while允许从外部转到循环体内D.do…while的循环体不能是复合语句7.以下程序的输出结果是()。main(){intx=10,y=10,i;for(i=0;x8;y=++i)printf(%d,%d,x--,y);}A.10192B.9876C.10990D.1010918.现已定义整型变量inti=1;执行循环语句while(i++5);后,i的值为()A)1B)5C)6D)以上三个答案均不正确9.有以下程序main(){inti;for(i=0;i=3;i++)switch(i){case1:printf(%d,i);case2:printf(%d,i);break;default:printf(%d,i);}}执行后输出的结果是:()A.01123B.012C.012020D.12010、现已定义整型变量inti=1;执行循环语句while(i++5);后,i的值为:()A)1B)5C)6D)以上三个答案均不正确11、执行语句:for(i=1;i=9;i++);后变量i的值是:()A.10B.9C.不定D.1112.下面程序段的运行结果是()。intn=0;while(n++=2);printf(“%d”,n);(A)2(B)3(C)4(D)有语法错误13.设执行变量y值为3,执行下列循环语句后,变量y的值是()。doy++;while(y++4);(A)3(B)4(C)5(D)614.若k为整型变量,则下面while循环执行的次数是()。k=10;while(k==0)k=k-1;(A)0次(B)1次(C)10次(D)无限次15.以下程序段_________。x=-1;do{x=x*x;}while(!x);A)是死循环B)循环执行2次C)循环执行1次D)有语法错误16.对表达式for(表达式1;;表达式3)可理解为()A.)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)二、填空题:1.在循环语句中,continue和break语句的区别是:语句提前结束本次循环,进行下一次循环的判断;而语句跳出循环结构,结束循环。2、执行下面的程序段后,k值是。k=1;n=263;do{k*=n%10;n/=10;}while(n);3.用_________________语句可以实现提前结束循环。4.执行完语句for(i=0;i3;i++);后,变量i的值为_________________。三、看程序写结果:1.下列程序段的输出结果是。voidmain(){inti,j;for(i=4;i=1;i--){for(j=1;j=i;j++)printf(*);printf(\n);}}2.以下程序运行后的输出结果是。#includestdio.hmain(){intk=1,s=0;do{if((k%2)!=0)continue;s+=k;k++;}while(k10);printf(s=%d,s);}3.源程序如下,运行时假定键盘输入数据为:2004#includestdio.hvoidmain(void){intn=0;charc;while((c=getchar())!=''){if(c='0'&&c='9')n=n*10+c-'0';}printf(value=%d\n,n);}结果为:4.以下程序运行后的输出结果是。main(){charc1,c2;c1='0',c2='9';for(;c1c2;c1++,c2--)printf(%c,%c,c1,c2);printf(\n);}5.以下程序运行后的输出结果是。main(){inti,j,k;for(i=1;i=10;i++){for(j=1;j=31-i;j++)printf();for(k=1;k=2*i-1;k++)printf(*);printf(\n);}}7.以下程序运行后的输出结果是。#includestdio.hvoidmain(void){intn=0;charc;while((c=getchar())!=''){if(c='0'&&c='9')n=n*10+c-'0';}printf(value=%d\n,n);}(设输入:2518)8.以下程序的输出结果是。main(){ints,i;for(s=0,i=1;i3;i++,s+=i);printf(%d\n,s);}9.以下程序运行后的输出结果是。main(){ints=0,n;for(n=0;n3;n++){switch(s){case0:case1:s+=1;case2:s+=2;break;case3:s+=3;default:s+=4;}printf(“%d”,s);}}10.以下程序的运行结果是_________。main(){intnum=0;while(num=2){printf(“%3d”,num);num++;}}11.写出程序运行结果。#includestdio.hmain(){inti=10,j=0;do{j=j+i;i--;}while(i2);printf(%d\n,j);}12.设有以下程序:#includestdio.hmain(){intn1,n2;scanf(%d,&n2);while(n2!=0){n1=n1*10+n2%10;n2=n2/10;}printf(%d,n1);}程序运行后,如果从键盘上输入7648;写出输出结果为。四、程序填空题:1.以下程序的功能是:打印出所有的水仙花数。请补充完整。#includestdio.h;voidmain(){inti,j,k,n;printf(parcissusnumbersare:\n);for(n=100;n=999;n++){i=;j=(n/10)%10;k=;if(n==pow(i,3)+pow(j,3)+pow(k,3))printf(%d\n,n);}}2.以下程序是求1+1/2+1/4+1/6……+1/100的值。请补充完整。#includestdio.hmain(){inti=2;floatsum=1;while(){sum=sum+1.0/i;;}printf(“sum=%f”,sum);}3.下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。#includestdio.hvoidmain(){intn=0,ch;ch=getchar();while(______________){if(_______________)n++;c=getchar();}}3.下面程序的功能是计算并输出“(1)*(1+2)*(1+2+3)*……*(1+2+3+……+10)”,请完善程序:(本题4分)main(){floatx,y;inti,j;for(i=1i11;i++){_;for(j=1;j=i;j++)___;y=y+x;}printf(%ft\n,y);}4.统计所有四位正整数中各个数位上数字之和是9的数的个数。如:1008、1017是满足条件的数#includestdio.hvoidmain(){inti,j,s,count;;for(i=1000;i=9999;i++){j=i;s=0;while(){;j=j/10;}if(s==9)count++;}printf(%d\n,count);}5.下列程序用来计算n!的值,请填空。main(){inti,s,n;s=1;printf(Entern:);scanf(%d,&n);for(i=1;i=n;i++)printf(s=%d,s);}19.下面程序的功能是计算1-3+5-7+…-99+101的值存在s中,请填空。#includestdio.hmain(){inti,t=1,s=0;for(i=1;i=101;_______){s=s+i*t;t=_______;}}五、程序设计题:1、编程实现:输入两个正整数m和n,求其最大公约数和最小公倍数。2、求1+2+4+6+……+100之和。分别用三种循环语句实现(while,do-while,for)。3、编写程序求2到100间的全部素数,要求每行输出5个数。4、编程输出九九乘法表。5、编程求Fibonacci数列前20个数。这个数列有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和。6、一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过了多少米?第10次反弹多高?