第五章循环结构习题与答案文档格式.docx
《第五章循环结构习题与答案文档格式.docx》由会员分享,可在线阅读,更多相关《第五章循环结构习题与答案文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
}
该程序的输出结果是<
A)987B)876
C)8765D)9876
7)在下列选项中,没有构成死循环的是<
A)inti=100。
)。
while<
1)
{i=i%100+1。
if<
i>
100)break。
C)intk=10000。
D)ints=36;
do{k++。
}while<
k>
10000)。
s)--s。
8)以下程序中循环体总的执行次数是<
inti,j。
for(i=6。
i-->
for(j=0。
j<
i。
j++>
{……}
A)20B)261
C)15D)25
9)已知
intt=0;
while<
t=1)
{...}
则以下叙述正确的是<
A)循环控制表达式的值为0B)循环控制表达式的值为1
C)循环控制表达式不合法D)以上说法都不对
10)以下程序的输出结果是<
{inti,j,x=0。
for(i=0。
i<
2。
i++>
{x++。
3。
{if(j%2>
continue。
x++。
}
printf(″x=%d\n″,x>
A)x=4B)x=8
C)x=6D)x=12
11)下列说法正确的是<
inti,x。
for(i=0,x=0。
=9&
&
=876。
scanf(″%d″,x>
A)最多的执行10次B)最多执行9次
C)是无限循环D)循环体一次也不执行
12)下面程序的运行结果是<
#include<
{inty=10。
do{y--。
}while(--y>
printf(″%d\n″,y-->
A)-1B)1
C)8D)0
13)以下程序的输出结果是<
{inta,i。
a=0。
for(i=1。
5。
{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
{inta,b,t。
scanf(″%d%d″,&
a,&
b>
while(______>
{if(a>
{t=a。
a=b。
b=t。
printf(″%d%d\n″,a,b>
A)!
a=bB)a!
=b
C)a==bD)a=b
15)下面程序的运行结果是<
{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)的素数的个数,例如,输入x=20,结果:
2,3,5,7,11,13,17,19。
p1EanqFDPw
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
不得增行或删行,也不得更改程序的结构!
{intx,i,j,count=0。
scanf(“%d”,&
for(i=2。
=x。
{
for(___1___。
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
{
intn,i。
ints=__1__。
scanf("
%d"
&
n>
=__2__。
s=s*__3__。
s>
3)该程序的功能是:
统计个位数是5,且能被7整除的四位数及其个数。
DXDiTa9E3d
{inti,n=__1__。
for(i=1000。
=9999。
if(i__2__==5&
i%7==0>
{n++。
%d\n"
个数为%d"
__3__>
4)该程序的功能是:
百马拉百砖。
用100匹马拉100块砖,红马拉3块,黑马拉2块,白马两匹拉1块,在红马、黑马和白马不可缺少的情况下,共有几种拉法?
RTCrpUDGiT
{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++。
%d%d%d\n"
r,b,w>
}
\nsum=%d\n"
5)该程序的功能是:
在屏幕上打印如下两个图形,要求图形2的第一行的“*”在第40列输出。
5PCzVD7HxA
**
******
**********
**************
******************
图形1图形2
图形1程序:
{inti,j。
=__1__。
{for(j=1。
printf("
__3__"
>
\n"
图形2程序:
{inti,j,k。
=5。
{for(k=1。
k<
k++>
for(j=1。
*"
6)该程序的功能是:
求出1000以内的所有完全数。
若一个数恰好等于它的因子之和<
除自身外),则称该数为完全数,例如:
6=1+2+3,故6是完全数。
jLBHrnAILg
{inti,j,t。
=1000。
{t=__1__。
if(__2__==0>
t=t+j。
if(__3__==i>
%6d"
}
三、改错题
1)下列给定程序的功能是:
求三个数的最小公倍数。
例如,给变量a、b、c分别输入15、11、2,则输出结果应当是330。
xHAQX74J0X
请改正程序中的错误,使其能得到正确的结果。
不要改动main函数,不能增行或删行,也不得更改程序的结构。
{inta,b,c,i,temp,n,m。
Inputabc:
%d%d%d"
b,&
c>
a=%d,b=%d,c=%d\n"
a,b,c>
/*******found*********/
i=1。
temp=m=n=1。
/********found********/
while(temp!
=0&
m!
n!
{i=i+1。
temp=i%a。
m=i%b。
n=i%c。
printf("
Theminimalcommonmultipleis:
2)下列给定程序的功能是:
计算正整数num的各位上的数字之积。
例如,若输入252,则输出应该是20;
若输入202,则输出应该是0。
请改正程序中的错误,使其能得出正确的结果。
{/**********found**********/
longn,k。
\Pleaseenteranumber:
"
%ld"
{k*=n%10。
/**********found**********/
n\=10。
}while(n>
\n%ld\n"
k>
3)下列给定程序的功能是:
计算1到100之间是8的倍数的数值之和。
LDAYtRyKfE
{inti。
/**********found***********/
intsum=1。
=100。
if(i/8==0>
sum=sum+i。
%f"
sum>
4)下列给定程序的功能是:
利用下面公式求π的近似值:
π2/6=1/12+1/22+1/32+1/42+…,直到某项绝对值不大于10-12为止。
math.h>
{doublen,sum=0,pa,cj。
n=0。
while(1/(n*n>
pow(10,-12>
{sum=1/(n*n>
n++。
cj=sum。
pa=sqrt(cj>
pa>
5)下列给定程序的功能是:
求两个整数的最大公约数。
求法:
拿一个整数去除另一个整数取余,然后拿被除数去除以余数,直到余数为0,此时的被除数即为最大公约数。
Zzz6ZB2Ltk
{intm,n,r。
请输入两个整数m,n:
%d%d"
m,n>
r=m/n。
while(r!
{m=n。
n=m。
r=m%n。
最大公约数是:
n>
6)下列给定程序的功能是:
统计从键盘上输入的字符中大写字母、小写字母、数字字符、其它字符的个数,用换行符结束循环。
dvzfvkwMI1
{intdx=0,xx=0,sz=0,qt=0。
charch。
%c"
ch>
while(ch!
='
\n'
{/**********found***********/
for(ch>
=65&
ch<
=90>
dx++。
elseif(ch>
97'
&
122'
xx++。
=48&
=57>
sz++。
elseqt++。
%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!
while(temp!
=0||m!
=0||n!
y6v3ALoS89
2、①将longk。
longk=1。
或longk。
k=1。
②将n\=10。
n/=10。
3、①将intsum=1。
intsum=0。
②将if(i/8==0>
nif(i%8==0>
③将printf("
改为:
4、①将n=0。
n=1。
②将sum=1/(n*n>
sum+=1.0/(n*n>
③将cj=sum。
cj=6*sum。
5、①将scanf("
m,n>
m,&
②将r=m/n。
③将n=m。
n=r。
6、①将for(ch>
if(ch>
M2ub6vSTnP
②将(ch>
=’97’&
=’122’>
(ch>
=97&
=122>
1、#include<
main(>
{intn。
intt=0,k。
floats=0.0。
\nPleaseenterN:
&
for(k=1。
k<
=n。
k++>
{t+=k。
s+=1.0/t。
theresultis:
%f\n"
s>
2、方法一:
inti,m。
{m=i*i。
if(m%10==i||m%100==i||m%1000==i>
方法二:
{inti,m,n。
{m=i*i。
n=i。
while(n!
{if(n%10==m%10>
{n=n/10。
m=m/10。
elsebreak。
if(n==0>
3、方法一:
{inti。
inta,b,c。
for(i=100。
=999。
{a=i%10。
b=(i/10>
%10。
c=i/100。
if(i==a*a*a+b*b*b+c*c*c>
{inti,g,m。
intsum。
{m=i。
sum=0。
while(m!
{g=m%10。
sum=sum+g*g*g。
if(sum==i>
4、方法一:
{inti,f1,f2,f。
f1=1。
f2=1。
%10d%10d"
f1,f2>
for(i=3。
=20。
{f=f1+f2。
%10d"
f>
f1=f2。
f2=f。
{inti,f1,f2。
=9。
{f1=f1+f2。
f2=f1+f2。
5、
{inti,n。
for(i=9。
=1。
n=(n+1>
*2。
桃子个数为:
申明:
所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。