第五章循环结构习题与答案.docx

上传人:b****4 文档编号:5722675 上传时间:2023-05-09 格式:DOCX 页数:21 大小:20.63KB
下载 相关 举报
第五章循环结构习题与答案.docx_第1页
第1页 / 共21页
第五章循环结构习题与答案.docx_第2页
第2页 / 共21页
第五章循环结构习题与答案.docx_第3页
第3页 / 共21页
第五章循环结构习题与答案.docx_第4页
第4页 / 共21页
第五章循环结构习题与答案.docx_第5页
第5页 / 共21页
第五章循环结构习题与答案.docx_第6页
第6页 / 共21页
第五章循环结构习题与答案.docx_第7页
第7页 / 共21页
第五章循环结构习题与答案.docx_第8页
第8页 / 共21页
第五章循环结构习题与答案.docx_第9页
第9页 / 共21页
第五章循环结构习题与答案.docx_第10页
第10页 / 共21页
第五章循环结构习题与答案.docx_第11页
第11页 / 共21页
第五章循环结构习题与答案.docx_第12页
第12页 / 共21页
第五章循环结构习题与答案.docx_第13页
第13页 / 共21页
第五章循环结构习题与答案.docx_第14页
第14页 / 共21页
第五章循环结构习题与答案.docx_第15页
第15页 / 共21页
第五章循环结构习题与答案.docx_第16页
第16页 / 共21页
第五章循环结构习题与答案.docx_第17页
第17页 / 共21页
第五章循环结构习题与答案.docx_第18页
第18页 / 共21页
第五章循环结构习题与答案.docx_第19页
第19页 / 共21页
第五章循环结构习题与答案.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第五章循环结构习题与答案.docx

《第五章循环结构习题与答案.docx》由会员分享,可在线阅读,更多相关《第五章循环结构习题与答案.docx(21页珍藏版)》请在冰点文库上搜索。

第五章循环结构习题与答案.docx

第五章循环结构习题与答案

第五章循环结构

一、选择题

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++。

}while10000)。

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)该程序的功能是:

统计所有小于等于x2)的素数的个数,例如,输入x=20,结果:

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)下列给定程序的功能是:

统计从键盘上输入的字符中大写字母、小写字母、数字字符、其它字符的个数,用换行符结束循环。

请改正程序中的错误,使其能得出正确的结果。

#includedvzfvkwMI1

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>。

}

申明:

所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。

 

展开阅读全文
相关搜索
资源标签

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2