第五章循环结构习题与答案.docx
- 文档编号:5722675
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:21
- 大小:20.63KB
第五章循环结构习题与答案.docx
《第五章循环结构习题与答案.docx》由会员分享,可在线阅读,更多相关《第五章循环结构习题与答案.docx(21页珍藏版)》请在冰点文库上搜索。
第五章循环结构习题与答案
第五章循环结构
一、选择题
1)下面有关for循环的正确描述是<)
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体中,可以包含多条语句,但必须用花括号括起来
2)对表达式for<表达式1。
。
表达式3)可理解为
A)for<表达式1。
0。
表达式3)
B)for<表达式1。
1。
表达式3)
C)for<表达式1。
表达式1。
表达式3)
D)for<表达式1。
表达式3。
表达式3)
3)以下描述中正确的是<)
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B)do-while循环由do开始,用while结束,在while<表达式)后面不能写分号
C)在do-while循环体中,是先执行一次循环,再进行判断
D)do-while循环中,根据情况可以省略while
4)以下程序段的描述,正确的是<)
x=-1。
do
{x=x*x。
}while(!
x>。
A)是死循环B)循环执行两次
C)循环执行一次D)有语法错误
5)设有以下程序段
intx=0,s=0。
while(!
x!
=0>s+=++x。
printf(″%d″,s>。
则<)
A)运行程序段后输出0B)运行程序段后输出1
C)程序段中的控制表达式是非法的D)程序段执行无限次
6)有如下程序
#include
voidmain(>
{intn=9。
while(n>6>{n--。
printf(″%d″,n>。
}
}
该程序的输出结果是<)
A)987B)876
C)8765D)9876
7)在下列选项中,没有构成死循环的是<)
A)inti=100。
B)for<。
。
)。
while<1)
{i=i%100+1。
if100)break。
}
C)intk=10000。
D)ints=36;
do{k++。
}while
while
8)以下程序中循环体总的执行次数是<)
inti,j。
for(i=6。
i>1。
i-->
for(j=0。
j
j++>
{……}
A)20B)261
C)15D)25
9)已知
intt=0;
while {...} 则以下叙述正确的是<) A)循环控制表达式的值为0B)循环控制表达式的值为1 C)循环控制表达式不合法D)以上说法都不对 10)以下程序的输出结果是<) #include voidmain(> {inti,j,x=0。 for(i=0。 i<2。 i++> {x++。 for(j=0。 j<3。 j++> {if(j%2>continue。 x++。 } x++。 } printf(″x=%d\n″,x>。 } A)x=4B)x=8 C)x=6D)x=12 11)下列说法正确的是<) inti,x。 for(i=0,x=0。 i<=9&&x! =876。 i++> scanf(″%d″,x>。 A)最多的执行10次B)最多执行9次 C)是无限循环D)循环体一次也不执行 12)下面程序的运行结果是<) #include voidmain(> {inty=10。 do{y--。 }while(--y>。 printf(″%d\n″,y-->。 } A)-1B)1 C)8D)0 13)以下程序的输出结果是<) #include voidmain(> {inta,i。 a=0。 for(i=1。 i<5。 i++> {switch(i> {case0: case3: a+=2。 case1: case2: a+=3。 default: a+=5。 } }printf(″%d\n″,a>。 } A)31B)13 C)10D)20 14)下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,在划线处应填入的语句是<)b5E2RGbCAP #include voidmain(> {inta,b,t。 scanf(″%d%d″,&a,&b>。 while(______> {if(a>b> {t=a。 a=b。 b=t。 } printf(″%d%d\n″,a,b>。 scanf(″%d%d″,&a,&b>。 } } A)! a=bB)a! =b C)a==bD)a=b 15)下面程序的运行结果是<) #include voidmain(> {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=8 C)a=1,b=-1D)a=4,b=9 二、填空题 1)该程序的功能是: 统计所有小于等于x 2,3,5,7,11,13,17,19。 p1EanqFDPw 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! #include voidmain(> {intx,i,j,count=0。 scanf(“%d”,&x>。 for(i=2。 i<=x。 i++> { for(___1___。 j j++> if(___2___%j==0> break。 if(___3___>=i> {count++。 printf(count%15? "%5d": "\n%5d",i>。 } } printf("\nThenumberofprimeis: %d\n",count>。 } 2)该程序的功能是: 计算n! ,即1*2*3*4*…*n 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! #include voidmain(> { intn,i。 ints=__1__。 scanf("%d",&n>。 for(i=1。 i<=__2__。 i++> s=s*__3__。 printf("%d",s>。 } 3)该程序的功能是: 统计个位数是5,且能被7整除的四位数及其个数。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 DXDiTa9E3d 注意: 不得增行或删行,也不得更改程序的结构! #include voidmain(> {inti,n=__1__。 for(i=1000。 i<=9999。 i++> if(i__2__==5&&i%7==0> {n++。 printf("%d\n",i>。 } printf("个数为%d",__3__>。 } 4)该程序的功能是: 百马拉百砖。 用100匹马拉100块砖,红马拉3块,黑马拉2块,白马两匹拉1块,在红马、黑马和白马不可缺少的情况下,共有几种拉法? 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 RTCrpUDGiT 注意: 不得增行或删行,也不得更改程序的结构! #include voidmain(> {intr,b,w,sum=0。 for(r=1。 r<=34。 r++> {for(b=1。 b<=50。 b++> {w=__1__。 if(w__2__2==0&&w>0> {sum++。 printf("%d%d%d\n",r,b,w>。 } } } printf("\nsum=%d\n",__3__>。 } 5)该程序的功能是: 在屏幕上打印如下两个图形,要求图形2的第一行的“*”在第40列输出。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 5PCzVD7HxA 注意: 不得增行或删行,也不得更改程序的结构! ** ****** ********** ************** ****************** 图形1图形2 图形1程序: #include voidmain(> {inti,j。 for(i=1。 i<=__1__。 i++> {for(j=1。 j<=__2__。 j++> printf("__3__">。 printf("\n">。 } } 图形2程序: #include voidmain(> {inti,j,k。 for(i=1。 i<=5。 i++> {for(k=1。 k<=__1__。 k++> printf("">。 for(j=1。 j<=__2__。 j++> printf("*">。 printf("__3__">。 } } 6)该程序的功能是: 求出1000以内的所有完全数。 若一个数恰好等于它的因子之和<除自身外),则称该数为完全数,例如: 6=1+2+3,故6是完全数。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 jLBHrnAILg 注意: 不得增行或删行,也不得更改程序的结构! #include voidmain(> {inti,j,t。 for(i=1。 i<=1000。 i++> {t=__1__。 for(j=1。 j j++> if(__2__==0>t=t+j。 if(__3__==i>printf("%6d",i>。 } } 三、改错题 1)下列给定程序的功能是: 求三个数的最小公倍数。 例如,给变量a、b、c分别输入15、11、2,则输出结果应当是330。 xHAQX74J0X 请改正程序中的错误,使其能得到正确的结果。 注意: 不要改动main函数,不能增行或删行,也不得更改程序的结构。 #include voidmain(> {inta,b,c,i,temp,n,m。 printf("Inputabc: ">。 scanf("%d%d%d",&a,&b,&c>。 printf("a=%d,b=%d,c=%d\n",a,b,c>。 /*******found*********/ i=1。 temp=m=n=1。 /********found********/ while(temp! =0&&m! =0&&n! =0> {i=i+1。 temp=i%a。 m=i%b。 n=i%c。 } printf("Theminimalcommonmultipleis: %d\n",i>。 } 2)下列给定程序的功能是: 计算正整数num的各位上的数字之积。 例如,若输入252,则输出应该是20;若输入202,则输出应该是0。 请改正程序中的错误,使其能得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! #include voidmain(> {/**********found**********/ longn,k。 printf("\Pleaseenteranumber: ">。 scanf("%ld",&n>。 do {k*=n%10。 /**********found**********/ n\=10。 }while(n>。 printf("\n%ld\n",k>。 } 3)下列给定程序的功能是: 计算1到100之间是8的倍数的数值之和。 请改正程序中的错误,使其能得出正确的结果。 LDAYtRyKfE 注意: 不得增行或删行,也不得更改程序的结构! #include voidmain(> {inti。 /**********found***********/ intsum=1。 for(i=1。 i<=100。 i++> /**********found***********/ if(i/8==0>sum=sum+i。 /**********found***********/ printf("%f",sum>。 } 4)下列给定程序的功能是: 利用下面公式求π的近似值: 请改正程序中的错误,使其能得出正确的结果。 π2/6=1/12+1/22+1/32+1/42+…,直到某项绝对值不大于10-12为止。 #include #include voidmain(> {doublen,sum=0,pa,cj。 /**********found***********/ n=0。 while(1/(n*n>>pow(10,-12>> /**********found***********/ {sum=1/(n*n>。 n++。 } /**********found***********/ cj=sum。 pa=sqrt(cj>。 printf("%f",pa>。 } 5)下列给定程序的功能是: 求两个整数的最大公约数。 请改正程序中的错误,使其能得出正确的结果。 求法: 拿一个整数去除另一个整数取余,然后拿被除数去除以余数,直到余数为0,此时的被除数即为最大公约数。 Zzz6ZB2Ltk #include voidmain(> {intm,n,r。 printf("请输入两个整数m,n: ">。 /**********found***********/ scanf("%d%d",m,n>。 /**********found***********/ r=m/n。 while(r! =0> {m=n。 /**********found***********/ n=m。 r=m%n。 } printf("最大公约数是: %d",n>。 } 6)下列给定程序的功能是: 统计从键盘上输入的字符中大写字母、小写字母、数字字符、其它字符的个数,用换行符结束循环。 请改正程序中的错误,使其能得出正确的结果。 #include voidmain(> {intdx=0,xx=0,sz=0,qt=0。 charch。 scanf("%c",&ch>。 while(ch! ='\n'> {/**********found***********/ for(ch>=65&&ch<=90>dx++。 /**********found***********/ elseif(ch>='97'&&ch<='122'>xx++。 elseif(ch>=48&&ch<=57>sz++。 elseqt++。 /**********found***********/ printf("%c",&ch>。 } printf("%d%d%d%d",dx,xx,sz,qt>。 } 四、编程题 1)根据以下公式计算S: S=1+1/(1+2>+1/(1+2+3>+…+1/(1+2+3+…n>例如: 若n的值为11时,函数的值为: 1.833333。 rqyn14ZNXI 2)编写程序,其功能是: 输出1到1000之间所有的同构数,所谓同构数指 一个数出现在它的平方数的右边,如5的平方是25,5出现在25的右边,25的平方是625,25出现有625的右边,因此5和25都是同构数。 EmxvxOtOco 3)编写程序,其功能是: 求100~999之间的水仙花数。 所谓“水仙花数”是指一个数,其各位数字立方和等于该数本身。 例如153就是一水仙花数。 SixE2yXPq5 4)编写程序,其功能是: 编写程序,其功能是: 求fibonacci数列的前20项。 第一项和第二项都是1,从第三项开始往后每一项都是相邻的前两项之和,如: 1,1,2,3,5,8,13……6ewMyirQFL 5)编写程序,其功能是: 猴子吃桃问题。 猴子第一天摘下若干个桃子,立即吃了一半,还不过瘾又多吃了一个,第二天将第一天剩下的桃子吃了一半又多吃了一个,以后每天以这个规律吃下去,到第十天再去吃时发现只剩下一个桃子,问猴子第一天摘了多少个桃子。 kavU42VRUs 第五章循环结构答案 一、选择题 1)D2)B3)C4)C5)B6)B7)D8)A9)B10)B 11)A12)D13)A14)B15)B 二、填空题 1、①j=2②i③j 2、①1②n③i 3、①0②%10③n 4、①(100-3*r-2*b>/2。 ②%③sum 5、图形1: ①5②2*i-1③* 图形2: ①41-i②2*i-1③\n 6、①0②i%j③t 三、改错题 1、①将i=1。 改为: i=0。 ②将while(temp! =0&&m! =0&&n! =0>改为: while(temp! =0||m! =0||n! =0>y6v3ALoS89 2、①将longk。 改为: longk=1。 或longk。 k=1。 ②将n\=10。 改为: n/=10。 3、①将intsum=1。 改为: intsum=0。 ②将if(i/8==0>sum=sum+i。 改为: nif(i%8==0>sum=sum+i。 ③将printf("%f",sum>。 改为: printf("%d",sum>。 4、①将n=0。 改为: n=1。 ②将sum=1/(n*n>。 改为: sum+=1.0/(n*n>。 ③将cj=sum。 改为: cj=6*sum。 5、①将scanf("%d%d",m,n>。 改为: scanf("%d%d",&m,&n>。 ②将r=m/n。 改为: r=m%n。 ③将n=m。 改为: n=r。 6、①将for(ch>=65&&ch<=90>dx++。 改为: if(ch>=65&&ch<=90>dx++。 M2ub6vSTnP ②将(ch>=’97’&&ch<=’122’>改为: (ch>=97&&ch<=122> ③将printf("%c",&ch>。 改为: scanf("%c",&ch>。 四、编程题 1、#include main(> {intn。 intt=0,k。 floats=0.0。 printf("\nPleaseenterN: ">。 scanf("%d",&n>。 for(k=1。 k<=n。 k++> {t+=k。 s+=1.0/t。 } printf("theresultis: %f\n",s>。 } 2、方法一: #include voidmain(> { inti,m。 for(i=1。 i<=1000。 i++> {m=i*i。 if(m%10==i||m%100==i||m%1000==i> printf("%6d",i>。 } } 方法二: #include voidmain(> {inti,m,n。 for(i=1。 i<=1000。 i++> {m=i*i。 n=i。 while(n! =0> {if(n%10==m%10>{n=n/10。 m=m/10。 } elsebreak。 } if(n==0>printf("%6d",i>。 } } 3、方法一: #include voidmain(> {inti。 inta,b,c。 for(i=100。 i<=999。 i++> {a=i%10。 b=(i/10>%10。 c=i/100。 if(i==a*a*a+b*b*b+c*c*c>printf("%6d",i>。 } } 方法二: #include voidmain(> {inti,g,m。 intsum。 for(i=100。 i<=999。 i++> {m=i。 sum=0。 while(m! =0> {g=m%10。 m=m/10。 sum=sum+g*g*g。 } if(sum==i>printf("%6d",i>。 } } 4、方法一: #include voidmain(> {inti,f1,f2,f。 f1=1。 f2=1。 printf("%10d%10d",f1,f2>。 for(i=3。 i<=20。 i++> {f=f1+f2。 printf("%10d",f>。 f1=f2。 f2=f。 } } 方法二: #include voidmain(> {inti,f1,f2。 f1=1。 f2=1。 printf("%10d%10d",f1,f2>。 for(i=1。 i<=9。 i++> {f1=f1+f2。 f2=f1+f2。 printf("%10d%10d",f1,f2>。 } } 5、 #include voidmain(> {inti,n。 n=1。 for(i=9。 i>=1。 i--> n=(n+1>*2。 printf("桃子个数为: %d",n>。 } 申明: 所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 循环 结构 习题 答案