算法习题精选精讲

  • 格式:doc
  • 大小:500.00 KB
  • 文档页数:14

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.计算

2363

12222

+++++

,写出算法的程序.

解:s=1

n=2

i=1

WHILE i<=63

s=s+n∧i

i=i+1

WEND

PRINT “1+2+2∧2+2∧3+…+2∧63=”;s

END

2.写出已知函数

<

-

=

>

=

).

(

1

),

(

),

(

1

x

x

x

y输入x的值,求y的值程序.

解:INPUT “请输入x的值:”;x

IF x>0 THEN

y=1

ELSE

IF x=0 THEN

y=0

ELSE

y=-1

END IF

END IF

PRINT “y的值为:”;y

END

3.新课标B版数学必修3教材41页第7题:用100元钱买100只鸡,公鸡每只5元,

母鸡每只3元,小鸡3只一元,问能买多少公鸡,母鸡和小鸡?

程序如下:

for x=1:20 for y=1:33 z=100-x-y; if 5*x+3*y+z/3<>100

else x y z end end end

4.(本小题满分14分)根据下面的要求,求满足1+2+3+…+n > 500的最小的自然数n。

(1)画出执行该问题的程序框图;(2)以下是解决该问题的一个程序,但有几处错误,请找出错误并予以更正。解:(1

(2)①DO应改为WHILE; 10分

②PRINT n+1 应改为PRINT n ; 12分 ③S=1应改为S=0 14分

5. 儿童乘坐火车时,若身高不超过1.1 m ,则不需买票;若身高超过1.1 m 但不超过1.4 m ,则需买半票;若身高超过1.4 m ,则需买全票.试

设计一个买票的算法,并画出相应的程序框图及程序。 解:程序是:INPUT “请输入身高h (米):”;h

IF h<=1.1 THEN PRINT “免票” ELSE

IF h<=1.4 THEN PRINT “买半票” ELSE PRINT “买全票” END IF END IF END

6.意大利数学家菲波拉契,在1202年出版的一书里提出了这样的一个问题:一对兔子饲养到第二个月进入成年,第三个月生一对小兔,以后每个月生一对小兔,所生小兔能全部存活并且也是第二个月成年,第三个月生一对小兔,以后每月生一对小兔.问这样下去到年底应有多少对兔子? 试画出解决此问题的程序框图,并编写相应的程序.

解: 分析: 根据题意可知,第一个月有1对小兔,第二个月有1对成年兔子,第三个月有两对兔子,从第三个月开始,每个月的兔子对数是前面两个月兔子对数的和,设第N 个月有两F 对兔子,第N -1个月有S 对兔子,第N -2个月有Q 对兔子,则有F=S+Q,一个月后,即第N+1个月时,式中变量S 的新值应变第N 个月兔子的对数(F 的旧值),变量Q 的新值应变为第N -1个月兔子的对数(S 的旧值),这样,用S+Q 求出变量F 的新值就是N+1个月兔子的数,依此类推,可以得到一个数序列,数序列的第12项就是年底应有兔子对数,我们可以先确定前两个月的兔子对数均为1,以此为基准,构造一个循环程序,让表示“第×个月的I 从3逐次增加1,一直变化到12,最后一次循环得到的F ”就是

7.设计算法求

100

99143131121

1⨯++⨯+⨯+⨯ 的值。要求画出程序框图,写出用基本语句编写的程序。 解:这是一个累加求和问题,共99项相加,可设计一个计数变量,一个累加变量,用循环结构实现这一算法。程序框图如图所示:

1

0==k S

DO

1

))1(/(1+=+*+=k k k k S S

LOOP UNTIL 99>k

PRINT

S

END

8.求100以内的所有勾股数。 for i=1:100 for j=1:100 for k=2:100 if i*i+j*j<>k*k else i j k end end end end

9. 计算 2363

12222+++++ ,写出算法的程序. 解:s=1

n=2 i=1

WHILE i <=63 s=s+n ∧i i=i+1 WEND

PRINT “1+2+2∧2+2∧3+…+2∧63=”;s END

10. 写出已知函数⎪⎩

⎨⎧<-=>=).

0(1),0(0

),

0(1x x x y 输入x 的值,求y 的值程序. 解:INPUT “请输入x 的值:”;x

IF x>0 THEN y=1 ELSE

IF x=0 THEN y=0 ELSE y=-1 END IF END IF

PRINT “y 的值为:”;y END

11. 2000年我国人口为13亿,如果人口每年的自然增长率为7‟,那么多少年 后我国人口将达到15亿?设计一个算法的程序. 解:A=13

R=0.007 i=1 DO

A=A*(1+R ) i=i+1

LOOP UNTIL A >=15 i=i -1

PRINT “达到或超过15亿人口需要的年数为:”;i END

12.1982年我国大陆人口10亿3千万,编程上机计算,若人口增长率r=1%,则哪一年我国人口增长到12亿,若r=O .5%,r=O .2%又是何年?

INPUT r=O .01 i=O p=10.3 y=1982 WHILE P ≤12 i=i+1 p=p※(1+ r) y=y+1 WEND PRINT y ,p END

13.假定在银行中存款10000元,按11.25%的利率,一年后连本带息将变为11125元,若将此款继续存人银行,试问多长时间就会连本带利翻一番?请用直到型和当型两种语句写出程序. 用直到型

INPUT“money =”,10000 x=mOney r=11.25/100 y=O

WHILE x≥2r y=y+1 x=x+r*x WEND PRINT y END 用当型 INPUT m=10000 X=m y=O

r=11.25/100 Do m<2*x y=y+1

x=x + r*x