算法习题精选精讲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
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