第五章 循环结构 习题与答案Word文件下载.docx
《第五章 循环结构 习题与答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《第五章 循环结构 习题与答案Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
A)987B)876
C)8765D)9876
7)在下列选项中,没有构成死循环的是()
A)inti=100;
B)for(;
;
);
while
(1)
{i=i%100+1;
if(i>
100)break;
C)intk=10000;
D)ints=36;
do{k++;
}while(k>
10000);
while(s)--s;
8)以下程序中循环体总的执行次数是()
inti,j;
for(i=6;
i>
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)下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,在划线处应填入的语句是()
{inta,b,t;
scanf(″%d%d″,&
a,&
b);
while(______)
{if(a>
b)
{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(x>
2)的素数的个数,例如,输入x=20,结果:
2,3,5,7,11,13,17,19。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
不得增行或删行,也不得更改程序的结构!
{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整除的四位数及其个数。
{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块,在红马、黑马和白马不可缺少的情况下,共有几种拉法?
{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);
}
printf("
\nsum=%d\n"
5)该程序的功能是:
在屏幕上打印如下两个图形,要求图形2的第一行的“*”在第40列输出。
**
******
**********
**************
******************
图形1图形2
图形1程序:
{inti,j;
=__1__;
{for(j=1;
__3__"
\n"
图形2程序:
{inti,j,k;
=5;
{for(k=1;
k<
k++)
for(j=1;
*"
6)该程序的功能是:
求出1000以内的所有完全数。
若一个数恰好等于它的因子之和(除自身外),则称该数为完全数,例如:
6=1+2+3,故6是完全数。
{inti,j,t;
=1000;
{t=__1__;
if(__2__==0)t=t+j;
if(__3__==i)printf("
%6d"
三、改错题
1)下列给定程序的功能是:
求三个数的最小公倍数。
例如,给变量a、b、c分别输入15、11、2,则输出结果应当是330。
请改正程序中的错误,使其能得到正确的结果。
不要改动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!
=0)
{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的倍数的数值之和。
{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,此时的被除数即为最大公约数。
{intm,n,r;
请输入两个整数m,n:
%d%d"
m,n);
r=m/n;
while(r!
{m=n;
n=m;
r=m%n;
最大公约数是:
n);
6)下列给定程序的功能是:
统计从键盘上输入的字符中大写字母、小写字母、数字字符、其它字符的个数,用换行符结束循环。
#include<
{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。
2)编写程序,其功能是:
输出1到1000之间所有的同构数,所谓同构数指
一个数出现在它的平方数的右边,如5的平方是25,5出现在25的右边,25的平方是625,25出现有625的右边,因此5和25都是同构数。
3)编写程序,其功能是:
求100~999之间的水仙花数。
所谓“水仙花数”是指一个数,其各位数字立方和等于该数本身。
例如153就是一水仙花数。
4)编写程序,其功能是:
编写程序,其功能是:
求fibonacci数列的前20项。
第一项和第二项都是1,从第三项开始往后每一项都是相邻的前两项之和,如:
1,1,2,3,5,8,13……
5)编写程序,其功能是:
猴子吃桃问题。
猴子第一天摘下若干个桃子,立即吃了一半,还不过瘾又多吃了一个,第二天将第一天剩下的桃子吃了一半又多吃了一个,以后每天以这个规律吃下去,到第十天再去吃时发现只剩下一个桃子,问猴子第一天摘了多少个桃子。
第五章循环结构答案
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)改为:
while(temp!
=0||m!
=0||n!
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("
改为:
4、①将n=0;
n=1;
②将sum=1/(n*n);
sum+=1.0/(n*n);
③将cj=sum;
cj=6*sum;
5、①将scanf("
m,n);
scanf("
m,&
②将r=m/n;
r=m%n;
③将n=m;
n=r;
6、①将for(ch>
if(ch>
②将(ch>
=’97’&
=’122’)改为:
(ch>
=97&
=122)
③将printf("
scanf("
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)printf("
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)printf("
{inti,g,m;
intsum;
{m=i;
sum=0;
while(m!
{g=m%10;
sum=sum+g*g*g;
if(sum==i)printf("
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;
n=1;
for(i=9;
=1;
n=(n+1)*2;
桃子个数为: