高中数学 第1章 算法初步 14 算法案例自主练习 苏教版必修3.docx
《高中数学 第1章 算法初步 14 算法案例自主练习 苏教版必修3.docx》由会员分享,可在线阅读,更多相关《高中数学 第1章 算法初步 14 算法案例自主练习 苏教版必修3.docx(17页珍藏版)》请在冰点文库上搜索。
![高中数学 第1章 算法初步 14 算法案例自主练习 苏教版必修3.docx](https://file1.bingdoc.com/fileroot1/2023-6/8/4395ac2f-3564-4fac-9fa4-53a9d8cdbe5a/4395ac2f-3564-4fac-9fa4-53a9d8cdbe5a1.gif)
高中数学第1章算法初步14算法案例自主练习苏教版必修3
2019-2020年高中数学第1章算法初步1.4算法案例自主练习苏教版必修3
我夯基我达标
1.数4557、1953、5115的最大公约数是( )
A.31B.93C.217D.651
思路解析:
三个数的最大公约数分别是每个数的约数,因此也是任意两个数的最大公约数的约数,也就是说三个数的最大公约数是其中任意两个数的最大公约数与第三个数的最大公约数.
答案:
B
2.下面的伪代码的算法目的是( )
10Readx,y
20 m←x
30 n←y
40 Ifm/n=int(m/n)thenGoto90
50 c←m-int(m/n)×n
60 m←n
70 n←c
80 Goto40
90 a←(x×y)/n
100Printa
A.求x,y的最小公倍数B.求x,y的最大公约数
C.求x被y整除的商D.求y除以x的余数
思路解析:
m/n=int(m/n)指的是=[],即n是m的约数,所以本题的算法是一个求x,y的最大公约数的算法.
答案:
B
3.下面的伪代码的算法目的是__________.
ReadX,Y
IfX>Ythen
PrintX
Else
PrintY
Endif
思路解析:
由IfX>YthenPrintX知若X>Y则输出X,所以本算法是一个输出两个数中较大数的一个算法.
答案:
输出X,Y两个值中较大的一个值
4.下面的伪代码的算法目的是___________.
Reada,b,c,
Ifa>bthen
t←a
a←b
b←t
Elseifa>cthen
t←a
a←c
c←t
Elseifb>cthen
t←b
b←c
c←b
Endif
Printa,b,c
思路解析:
由Ifa>bthen
t←a
a←b
b←t
知,若a>b,则互换a、b的值,此时acthen
t←a
a←c
c←t
知,若a≤b,则比较a、c大小,若a>c,则互换a、c的值,此时ac不成立,则比较b与c的大小,若b>c则互换b、c的值,此时b答案:
输入三个数,要求由小到大的顺序输出
5.流程图填空:
输入x的值,通过函数
求出y的值.其算法流程图如下(如图5-35所示):
图5-35
思路解析:
由流程图和函数的解析式可知,当x<1时,y=x,当1≤x<10时,y=2x-1,当x≥10时y=3x-11.
答案:
①x ②1≤x<10 ③3x-11
6.根据下面的流程图(如图5-36所示)写出其算法的伪代码.
图5-36
思路解析:
由所学知识可知此流程图表示的是计算2+4+6+…+200的一个算法,由于在算法的流程图中出现了循环结构,则用伪代码表示该算法时需用循环语句.
答案:
这是计算2+4+6+…+200的一个算法,可以用循环语句表示为
T←0
ForIfrom2to200step2
T←T+I
Endfor
7.输入一个华氏温度,要求输出摄氏温度,公式为.写出其算法的伪代码.
思路解析:
由于华氏温度与摄氏温度互化只需代公式C=(F-32),则其算法在表示时只需输入、输出语句和赋值语句即可.
答案:
这是顺序结构.其伪代码如下:
ReadF
C←(F-32)
PrintC
8.一个小球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下.设计一个算法,求它在第10次落地时共经过多少米?
第10次反弹多高?
画出流程图并用伪代码表示.
思路解析:
由题第1次下落的高度为100m,第2次下落的高度为50m,第3次下落的高度为25m,即每次下落的高度为前一次的一半.本题求它在第10次落地时共经过多少米是一个求和问题,且在求和的过程中某些步骤会重复出现,则在表示算法时可用循环语句来实现.
答案:
这是一个循环结构,可以用循环语句来实现.
伪代码如下:
S←100
H←S/2
Fornfrom2to10
S←S+2×H
H←H/2
Endfor
PrintS,H
流程图如下:
我综合我发展
9.写出计算1+2!
+3!
+…+20!
的算法的伪代码和流程图.
思路解析:
本题是一个求和问题,根据以前求和问题的算法可知,此算法的流程图中有循环结构,则在算法的表示过程中需用循环语句来实现.
答案:
这是一个循环结构,可以用循环语句实现.
伪代码和流程图如下:
T←1
S←0
Fornfrom1to20
T←T×n
S←S+T
Endfor
PrintS
10.相传在远古时代有一片森林,栖息着3种动物,凤凰、麒麟和九头鸟.凤凰有1只头2只脚,麒麟是1只头4只脚,九头鸟有9只头2只脚.它们这3种动物的头加起来一共是100只,脚加起来也正好是100只,问森林中各生活着多少只凤凰、麒麟和九头鸟?
思路解析:
本题的关键是如何考虑x、y、z三个变量之间的关系.由题意可知:
当凤凰x=1时(只在开始时),变量麒麟y的取值可以从1~25,让变量y从1开始取值(例如:
y的值为1);通过表达式(100-x-y)/9,计算出z的值;完成上述步骤后,x、y、z三个变量都取到了自己相应的值,但是这三个值是否是正确的解呢?
我们必须通过以下的两个条件来判断:
x+y+9×z=100且2×x+4×y+2×z=100.如果全部满足,就输出x、y、z的值,如果不满足,就让y值加1,然后重复步骤
(2)到步骤(4),直至y的取值超过25;然后让x的取值加1后,重复步骤
(1)到步骤(5)的操作,直至x的取值超过50为止,退出算法.
答案:
本题的流程图和伪代码如下:
Forxfrom1to50
Foryfrom1to25
z←(100-x-y)/9
If2x+4y+2z=100then
PrintI,J,K
Endfor
Endfor
我创新我超越
11.迭代法是用于求方程或方程组近似根的一种常用的算法设计方法.设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:
(1)选一个方程的近似根,赋给变量x0;
(2)将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;
(3)当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤
(2)的计算.
若方程有根,则按上述方法求得的x0就认为是方程的根.试用迭代法求某个数的平方根,用流程图和伪代码表示问题的算法.
思路解析:
由已知求平方根的迭代公式为x1=(x0+).所以可设平方根的解为x,可假定一个初值x0=a/2(估计值),根据迭代公式得到一个新的值x1,这个新值比初值x0更接近要求的值x;再以新值作为初值,即x1→x0,重新按原来的方法求x1,重复这一过程直到|x1-x0|<ε(某一给定的精度)即可.
答案:
设平方根的解为x,可假定一个初值x0=a/2(估计值),根据迭代公式得到一个新的值x1,这个新值比初值x0更接近要求的值x;再以新值作为初值,即x1→x0,重新按原来的方法求x1,重复这一过程直到|x1-x0|<ε(某一给定的精度).此时可将x0作为问题的解.
伪代码:
Read x0,ε
Repeat
x1←(x0+a/x0)/2
r←|x1-x0|
x0←x1
Until r<ε
Print x0
流程图如下:
2019-2020年高中数学第1章算法初步1.4算法案例自我检测苏教版必修3
自我检测
基础达标
1.下面一段伪代码的目的是( )
10Readx,y
20m←x
30n←y
40Ifm/n=int(m/n)ThenGoto90
50c←m-int(m/n)*n
60m←n
70n←c
80Goto40
90Printn
A.求x,y的最小公倍数B.求x,y的最大公约数
C.求x被y整除的商D.求y除以x的余数
答案:
B
2.数2004与1992的最大公约数为( )
A.4B.8C.12D.16
答案:
C
3.下面一段伪代码的目的是( )
10Read“a=,b=”;a,b
20r←mod(a,b)
30a←b
40b←r
50Ifr<>0then20
60Printa
70End
A.求a,b的最小公倍数B.求a,b的最大公约数
C.求x被y整除的商D.求y除以x的余数
答案:
B
4.流程图填空:
输入x的值,通过函数
求出y的值.其算法流程图如下:
答案:
①y←x ②x<10 ③y←3x-11
5.求三个数390,455,546的最大公约数.
解:
用“辗转相除法”
先求390和455的最大公约数,
455=390×1+65
390=65×6
所以390和455的最大公约数为65
再求65与546的最大公约数
546=65×8+26
65=26×2+13
26=13×2
所以65与546的最大公约数为13.
∴390,455,546的最大公约数为13.
6.区间二分法是求方程近似解的常用算法,其解法步骤为
S1 取[a,b]的中点x0=(a+b)/2;
S2 若f(x0)=0,则x0就是方程的根,
否则
若f(a)f(x0)>0,则a←x0;
否则b←x0;
S3 若|a-b|写出用区间二分法求方程x3+x2-1=0在[0,1]上的近似解的伪代码.精确度为0.01.
解:
10Read“输入初值a,b和误差c”;a,b,c
20x0←(a+b)/2
30f(a)←a∧3+a∧2-1
40f(x0)←x0∧3+x0∧2-1
50Iff(x0)=0thenGoto120
60Iff(a)*f(x0)>0then
70a←x0
80Else
90b←x0
100Endif
110IfABS(a-b)>=cthenGoto20
120Printx0
7.根据下面流程图写出其算法的伪代码.
解:
伪代码如下:
10a1←1
20i←9
30a0←2×(a1+1)
40a1←a0
50i←i-1
60Ifi>=1thenGoto30
70Printa0
End
8.写出计算=1+++…+的算法的伪代码和流程图(用当型循环写出).
解:
流程图如图:
伪代码:
Read“请输入n的值”;n
S←1
t←1
i←1
Whilei<=n
t←t/i
S←S+t
i←i+t
EndWhile
Print“e=”;S
End
9.用秦九韶算法求多项式f(x)=1+x+0.5x2+0.16667x3+0.04167x4+0.00833x5在x=-0.2的值.
解:
f(x)=1+x+0.5x2+0.16667x3+0.04167x4+0.00833x5
=((((0.00833x+0.04167)x+0.16667)x+0.5)x+1)x+1
而x=-0.2,所以有:
v0=a5=0.00833,v1=v0x+a4=0.04
v2=v1x+a3=0.15867,v3=v2x+a2+0.46827
v4=v3x+a1=0.90635,v5=v4x+a0=0.81873
即f(-0.2)=0.81873.
更上一层
1.马克思曾描述了这样一个问题:
有30个人在一家小餐馆吃饭,其中有男人、女人和小孩.每个男人花了3先令,每个女人花了2先令,每个小孩花了1先令,他们总共花了50先令.问男人、女人、小孩各多少?
用伪代码表示该算法.
解:
x←1
y←1
Whilex<=10
Whiley<=20
If2*x+y=20then
z←30-x-y
Print“男人、女人、小孩的个数分别为:
”x,y,z.
Endif
y←y+1
Endwhile
x←x+1
y←1
Endwhile
End
2.未知数的个数多于方程个数的方程(组)叫做不定方程.最早提出不定方程的是我国的《九章算术》.
实际生活中有很多不定方程的例子,例如“百鸡问题”:
公元五世纪末,我国古代数学家张丘建在《算经》中提出了“百鸡问题”:
“鸡母一,值钱三;鸡翁一,值钱二;鸡雏二,值钱一.百钱买百鸡,问鸡翁、母、雏各几何?
”
算法设计:
(1)设母鸡、公鸡、小鸡数分别为I、J、K,则应满足如下条件:
I+J+K=100;
3I+2J+1/2K=100.
(2)先分析一下三个变量的可能值.①I的最小值可能为零,若全部钱用来买母鸡,最多只能买33只,故I的值为0~33中的整数.②J的最小值为零,最大值为50.③K的最小值为零,最大值为100.
(3)对I、J、K三个未知数来说,I取值范围最少.为提高程序的效率,先考虑对I的值进行一一列举.
(4)在固定一个I的值的前提下,再对J值进行一一列举.
(5)对于每个I,J,怎样去寻找满足百钱买百鸡条件的K.由于I,J值已设定,便可由下式得到:
K=100-I-J.
(6)这时的I,J,K是一组可能解,它只满足“百鸡”条件,还未满足“百钱”条件.是否真实解,还要看它们是否满足3I+2J+1/2K=100,满足即为所求解.
根据上述算法思想,画出流程图并用伪代码表示.
解:
这是一个循环结构的嵌套,可以用循环语句实现.
伪代码:
ForIfrom0to32
ForJfrom0to49
K←100-I-J
If3I+2J+0.5K=100then
PrintI,J,K
Endfor
Endfor
流程图: