1、循环结构程序设计习题答案循环结构程序设计习题答案一、单选题。1.下面有关for循环的正确描述是()A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判定表达式C.在for循环中,不能用break语句跳出循环体D.for循环体语句中,可以包含多条语句,但要用花括号括起来解答:Do2.对于for(表达式1;表达式3)可理解为()A.for(表达式1;1;表达式3)B.for(表达式1:1;表达式3)C.for(表达式1;表达式1;表达式3)D.for(表达式1;表达式3;表达式3)解答:Bo3.以下正确的描述是()。A.continue语句的作用是结束整个循环的执行B
2、.只能在循环体内和switch语句体内使用break语句C.在循环体内使用break语句或continue语句的作用相同D.从多层循环嵌套中退出时,只能使用goto语句解答:Bo4.C语言中()。A.不能使用do-while语句构成的循环B.do-while语句构成的循环必须用break语句才能退出C.do-whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环解答:Do5.C语言中while和do-while循环的主要区别是()A.do-while的循环体至少无条件执行一次B.while的循环控制条
3、件比dowhile的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句解答:A。6.下面程序段不是死循环的是()。A.intI=100;B.for(;);while(1)I=I%100+1;if(I100)break;D.ints=36;while(s);-s;*10的程序是()。B.doi=1;s=0;s=s*i;i+;while(i=10);D.i=1;s=0;dos=s*i;i+;while(i=0);解答:Co7.以下能正确计算1*2*3*A.doi=1;s=1;s=s*i;i+;while(i=10);C.i=1;s=1;dos=s*
4、i;i+;while(i=10);解答:Co8.下面程序的运行结果是()。#includevoidmain()inty=10;doy-;while(-y);printf(%dn,y-);A.-1B.1C解答:Bo9.下面程序的运行结果是()。#includevoidmain()intnum=0;while(num=2)num+;printf(%dn,num);123D.1234A.1B.12C解答:Co10.若运行以下程序时,从键盘输入3.62.4(CR求示回车),则下面程序的运行结果是()。#include#includevoidmain()floatx,y,z;scanf(f%f,&x,&
5、y);z=x/y;while(1)if(fabs(z)1.0)x=y;y=z;z=x/y;elsebreak;printf(%fn,y);A.1.500000B.1.600000C.2.000000D.2.400000解答:Bo二、看程序,写运行结果。1.若运行以下程序时,从键盘输入2473/,则下面程序的运行结果是()。#includevoidmain()intc;while(c=getchar()!=n)switch(c-2)case0:case1:putchar(c+4);case2putchar(c+4);breakcase3:putchar(c+3);default:putchar(
6、c+2);break;printf(n”);解答:668977。2.若运行以下程序时,从键盘输入ADescriptor/,则下面程序的运行结果是()。#includevoidmain()charc;Intv0=0,v1=0,v2=0;doswitch(c=getchar()caseacaseA:casee:caseEcase,icaseI:caseo:caseO:caseu:caseU:v+=1;default:v0+=1;v2+=1;while(c!=n);printf(v0=%d,v1=%d,v2=%dn”,v0,v1,v2);解答:v0=12,v1=4,v2=12。3.下面程序的运行结果
7、是()。#includevoidmain()inti,b,k=0;for(i=1;i=0)k+;printf(%d,%d,k,b);解答:8,-2。4.下面程序的运行结果是()。#includevoidmain()inta,b;for(a=1,b=1;a=20)break;if(b%3=1)b+=3;continue;b-=5;printf(%dn,a);解答:8。5.下面程序的运行结果是()。#includevoidmain()inti,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+;x+;printf(x=%dn”,x);解
8、答:x=8o6.下面程序的运行结果是()。#includevoidmain()inti;for(i=1;i=5;i+)if(i%2)printf(*);elsecontinue;printf(#);printf($n);解答:*#*#*#$。7.下面程序的运行结果是()。#includevoidmain()inti,j,a=0;for(i=0;i2;i+)for(j=0;j4;j+)if(j%2)break;a+;a+;printf(%dn,a);解答:4。8.下列程序运行后的输出结果是()#includevoidmain()inti,j,k;for(i=1;i=4;i+)for(j=1;j=
9、20-3*i;j+)printf();for(k=1;k0;i-)for(j=1;j=20-3*i;j+)printf();for(K=1;k=2*i-1;k+)printf(%3s,*);printf(n);解答:*9.下列程序运行后的输出结果是()#includevoidmain()(inti,j,k;for(i=1,i=6;i+)(for(j=1;j0;k-)printf(%3d,k);printf(n0);解答:112112321123432112345432112345654321)三、程序填空。1.下面程序的功能是将小写字母变成对应的大写字母后的第二个字母,其中y变成A,z变成B,
10、请在内填入正确内容。#includevoidmain()(charc;while(c=getchar()!=n)if(c=a&cZ&c=Z+2);printf(%c,c);解答:c-=30,c-=26。2.下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输入m,n中的较大数,请在内填入正确内容。#includevoidmain()intm=0,n=0;charc;while()!=n)if(c=A&c=a,&c=z,)n+;printf(%dn,mn?);解答:c=getchar(),n:m3.下面程序的功能是把316表示为两个加数分别能被13和11整除。请
11、在内填入正确内容。#includevoidmain()inti=0,j,k;doi+;k=316-13*i;while();j=k/11;printf(316=13*%d+11*%d,i,j);解答:k%11。4.从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。请在内填入正确内容。#includevoidmain()floatx,amax,amin;scanf(%f,&x);amax=x;amin=x;while()(if(xamax)amax=x;if()amin=x;scanf(%f,&x);)printf(amax=%fnamin=%fn,amax,amin
12、);)解答:x=0,xamin。5.求算式xyz+yzz=532中x,y,z的值(其中xyz和yzz分别表示一个三位数)。请在内填入正确内容。#includevoidmain()(intx,y,z,i,result=532;for(x=1;x+)for(y=1;y+)for(z=0;z+)(i=100*x+10*y+z+100*y+10*z+z;if()printf(x=%d,y=%d,z=%dn,x,y,z);)解答:x10,y10,z10,i=result。6.根据公式e=1+1/1!+1/2!+1/3!+,求e的近似值,精度要求为10-6。请在内填入正确内容。#includevoidma
13、in()(inti;doublee,new;e=1.0;new=1.0;for(i=1;i+)(;)printf(e=%fn,e)解答:new=1e-6,new/=(double)i,e+=new7.完成用一元人民币换成一分、两分、五分的所有兑换方案。请在内填入正确内容。#includevoidmain()inti,j,k,l=1;for(i=0;i=0)printf(%2d,%2d,%2d,i,j,k);if(l%5=0)printf(n);)解答:j=50,k=100-i*5-j*2,l=l+1。8.统计正整数的各位数字中零的个数,并求各位数字中的最大者。请在内填入正确内容。#includ
14、evoidmain()intn,count,max,t;count=max=0;scanf(%d,&n);do;if()+count;elseif()max=t;while(n);printf(count=%d,max=%d,count,max);解答:t=n%10,t=0,maxt,n/=10。四、编程题。1.根据公式口2/61/12+1/22+1/32+,+1/n2,求口的近似值,直到最后一项的值小于10的负六次方为止。解答:#include#includemain()longi=1;doublepi=0;while(I*I=10e+6)pi=pi+1.0/(i*i);i+;pi-sqrt
15、(6.0*pi);printf(pi=%10.6fn,pi);2.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后可以卖完,请编程计算。解答:#includemain()intday,x1,x2;day=0;x1=1020;while(x1)x2=(x1/2-2);x1=x2;day+;printf(day=%dn,day);3.编程实现用“辗转相除法”求两个正整数的最大公约数。解答:#includemain()intr,m,n;scanf(%d%d,&m,&n);if(mn)r=m,m=n,n=r;r=m%n;while(r)m=n;n=r;r=m%n;printf
16、(%dn,n);4.等差数列的第一项a=2,公差d=3,编程实现在前n项和中,输出能被4整除的所有的和。解答:#includemain()inta,d,sum;a=2;d=3;sum=0;dosum+=a;a+=d;if(sum%4=0printf(%dn,sum);while(sum200);)5.求出用数字0至9可以组成多少个没有重复的三位偶数。解答:#includemain()intn,i,j,k;n=0;for(i=1;i9;i+)if(k=0;k=8;k+=2)if(k!=i)for(j=1;j9;j+)if(j!=i&j!=k)n+;printf(n=%dn”,n);6.输出1至1
17、00之间每位数的乘积大于每位数的和的数。解答:#includemain()intn,k=1,s=0,m;for(n=1;ns)printf(%d,n);7.下面程序的功能是求1000以内的所有完全数。(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6为完全数)解答:#includemain()inta,i,m;for(a=1;a=100;a+)for(m=0,i=1;i=a/2;i+)if(!(a%i)m+=i;if(m=a)printf(%4d,a);)8.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。求这堆零件总数。解答:#includemain()inti;for(i=100;i200;i+)if(i-2)%4=0)if(!(i-3)%7)if(i-5)%9!=0)printf(%d,i);)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1