[精品]2019高中数学第1章算法初步1.4算法案例自我检测苏教版必修5
- 格式:doc
- 大小:2.53 MB
- 文档页数:6
1.4 算法案例自主广场我夯基 我达标1.数4 557、1 953、5 115的最大公约数是( )A .31B .93C .217D .651思路解析:三个数的最大公约数分别是每个数的约数,因此也是任意两个数的最大公约数的约数,也就是说三个数的最大公约数是其中任意两个数的最大公约数与第三个数的最大公约数.答案:B2.下面的伪代码的算法目的是( )10 Read x ,y20 m ←x30 n ←y40 If m/n=int (m/n )then Goto 9050 c ←m -int (m/n )×n60 m ←n70 n ←c80 Goto 4090 a ←(x ×y )/n100 Print aA .求x ,y 的最小公倍数B .求x ,y 的最大公约数C .求x 被y 整除的商D .求y 除以x 的余数思路解析:m/n=int (m/n )指的是n m =[nm ],即n 是m 的约数,所以本题的算法是一个求x ,y 的最大公约数的算法.答案:B3.下面的伪代码的算法目的是__________.Read X ,YIf X>Y thenPrint XElsePrint YEnd if思路解析:由If X>Y then Print X 知若X>Y 则输出X ,所以本算法是一个输出两个数中较大数的一个算法.答案:输出X ,Y 两个值中较大的一个值4.下面的伪代码的算法目的是___________.Read a ,b ,c ,If a>b thent ←aa ←bb ←tElse if a>c thent ←aa ←cc ←tElse if b>c thent ←bb ←cc ←bEnd ifPrint a ,b ,c思路解析:由If a>b thent ←aa ←bb ←t知,若a>b,则互换a 、b 的值,此时a<b.由Else if a>c thent ←aa ←cc ←t知,若a ≤b ,则比较a 、c 大小,若a>c,则互换a 、c 的值,此时a<c ,再由下面的语句,若a>c 不成立,则比较b 与c 的大小,若b>c 则互换b 、c 的值,此时b<c.答案:输入三个数,要求由小到大的顺序输出5.流程图填空:输入x 的值,通过函数⎪⎩⎪⎨⎧≥-<≤<= 10, 11310,1 1,-2 1, x ,x x x x x ,y 求出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 -116.根据下面的流程图(如图5-36所示)写出其算法的伪代码.图5-36思路解析:由所学知识可知此流程图表示的是计算2+4+6+…+200的一个算法,由于在算法的流程图中出现了循环结构,则用伪代码表示该算法时需用循环语句.答案:这是计算2+4+6+…+200的一个算法,可以用循环语句表示为T ←0For I from 2 to 200 step 2T ←T+IEnd for7.输入一个华氏温度,要求输出摄氏温度,公式为)32(95-=F C .写出其算法的伪代码. 思路解析:由于华氏温度与摄氏温度互化只需代公式C=95(F -32),则其算法在表示时只需输入、输出语句和赋值语句即可.答案:这是顺序结构.其伪代码如下:Read FC ←95(F -32) Print C8.一个小球从100m 高度自由落下,每次落地后反跳回原高度的一半,再落下.设计一个算法,求它在第10次落地时共经过多少米?第10次反弹多高?画出流程图并用伪代码表示.思路解析:由题第1次下落的高度为100 m ,第2次下落的高度为50 m ,第3次下落的高度为25 m ,即每次下落的高度为前一次的一半.本题求它在第10次落地时共经过多少米是一个求和问题,且在求和的过程中某些步骤会重复出现,则在表示算法时可用循环语句来实现.答案:这是一个循环结构,可以用循环语句来实现.伪代码如下:S←100H←S/2For n from 2 to 10S←S+2×HH←H/2End forPrint S,H流程图如下:我综合我发展9.写出计算1+2!+3!+…+20!的算法的伪代码和流程图.思路解析:本题是一个求和问题,根据以前求和问题的算法可知,此算法的流程图中有循环结构,则在算法的表示过程中需用循环语句来实现.答案:这是一个循环结构,可以用循环语句实现.伪代码和流程图如下:T←1S←0For n from 1 to 20T←T×nS←S+TEnd forPrint S10.相传在远古时代有一片森林,栖息着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为止,退出算法.答案:本题的流程图和伪代码如下:For x from 1 to 50For y from 1 to 25z←(100-x-y)/9If 2x+4y+2z=100 thenPrint I,J,KEnd forEnd for我创新 我超越11.迭代法是用于求方程或方程组近似根的一种常用的算法设计方法.设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:(1)选一个方程的近似根,赋给变量x 0;(2)将x 0的值保存于变量x 1,然后计算g(x 1),并将结果存于变量x 0;(3)当x 0与x 1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算.若方程有根,则按上述方法求得的x 0就认为是方程的根.试用迭代法求某个数的平方根,用流程图和伪代码表示问题的算法.思路解析:由已知求平方根的迭代公式为x 1=21(x 0+0x a ).所以可设平方根的解为x ,可假定一个初值x 0=a/2(估计值),根据迭代公式得到一个新的值x 1,这个新值比初值x 0更接近要求的值x ;再以新值作为初值,即x 1→x 0,重新按原来的方法求x 1,重复这一过程直到|x 1-x 0|<ε(某一给定的精度)即可.答案:设平方根的解为x ,可假定一个初值x 0=a/2(估计值),根据迭代公式得到一个新的值x 1,这个新值比初值x 0更接近要求的值x ;再以新值作为初值,即x 1→x 0,重新按原来的方法求x 1,重复这一过程直到|x 1-x 0|<ε(某一给定的精度).此时可将x 0作为问题的解.伪代码:Read x 0,εRepeatx 1←(x 0+a/x 0)/2r ←|x 1-x 0|x 0←x 1Until r<εPrint x0流程图如下:。
1.4 算法案例
一览众山小
诱学·导入
材料:有一个故事是讲唐代大官杨埙提拔官员的经过.他让两个资格职位相同的候选人回答下面这个问题,谁先答出就提拔谁.“有人在林中散步,无意中听到几个强盗在商量怎样分配抢来的布匹.若每人分6匹,就剩5匹;若每人分7匹,就差8匹.问共有强盗几人?布匹多少?”
问题:你能用一个简单算式求出强盗人数和布匹数吗?
导入:这个问题可看作二元一次方程组问题列方程组求解.问题的特点是给出两种分配方案,一种分法分不完,一种分法不够分.中国古代《九章算术》一书中搜集了许多这类问题,各题都有完整的解法,后人称这种算法为——“盈不足术”.
这种算法可以概括为两句口诀:有余加不足,大减小来除.
公式:(盈+不足)÷两次所得之差=人数
每人所得数×人数+盈=物品总数
求得强盗有(8+5)/(7-6)=13(人),布匹有6×13+5=83(匹).
用a表示盈余数(5),b表示不足数(8),c表示盈所得数(6),d表示不足所得数,x表示强盗数,y表示布匹数,可列方程组对照求解.本节的内容是算法案例分析,我们将特别介绍中国古代的几个著名算法案例,进一步体会“算法”的概念.
温故·知新
本节课是经典的几个算法案例,为了不仅停留在一个了解的层面上,我们应该准备些什么?
“孙子问题”的思想即列不定方程组求解,借助计算机的快速性、准确性,很快就能得到答案.辗转相除法不难掌握,并且由于其规律性很强,每次都重复执行相同的步骤,执行次数由余数是否为0决定,所以很容易用计算机实现.有关二分法的问题,在学习前首先要对二分法求方程近似解的过程回顾一下,必要时把解题的过程简单描述出来,找出重复执行的部分,用循环结构来实现即可.
1。
1.4 算法案例(1)教学目标:1.理解不定方程的算法中蕴含的数学原理,并能根据这些原理进行2.理解不定方程的算法的方法与步骤.3.能根据算法语句与伪代码语句的知识设计完整的流程图并写出伪代码语句算法程序.4.使学生初步掌握不定方程的算法设计和列举法的基本思想.教学重点:解不定方程的基本思想及其流程图的设计.教学难点:解不定方程的流程图设计.教学方法:1.通过讲解中国古代的一个有趣的故事的方法引入新知识,可以使学生容易接受,易于激发学生的求知欲.2.教学中利用探索性教学法,可以加深学生对不定方程的算法的理解,有利于培养学生的理性思维和实践能力.3.通过本节课的学习,使学生进一步体会观察、比较、归纳、分析等一般科学方法的运用.教学过程:一、问题情境情境:韩信是秦末汉初的著名军事家.据说有一次汉高祖刘邦在卫士的簇拥下来到练兵场,刘邦问韩信有什么方法,不要逐个报数,就能知道场上的士兵的人数.韩信先令士兵排成3列纵队,结果有2个人多余;接着立即下令将队形改为5列纵队,这一改,又多出3人;随后他又下令改为7列纵队,这次又剩下2人无法成整行.在场的人都哈哈大笑,以为韩信不能清点出准确的人数,不料笑声刚落,韩信高声报告共有士兵2333人.众人听了一愣,不知道韩信用什么方法这么快就能得出正确的结果的.同学们,你知道吗?二、学生活动1.同学们想一想,韩信是如何得出正确的人数的?2.类似的问题最早出现在我国的《算经十书》之一的《孙子算经》中原文是:“今有物,不知其数,三三数之,剩二,五五数之,剩三,七七数之,剩二,问物几何?答曰:「二十三」”3.孙子算经的作者及确实着作年代均不可考,不过根据考证,着作年代不会在晋朝之後,以这个考证来说上面这种问题的解法,中国人发现得比西方早,所以这个问题的推广及其解法,被称为中国剩余定理.中国剩余定理(Chinese Remainder Theorem )在近代抽象代数学中占有一席非常重要的地位;4.该问题的完整的表述,后来经过宋朝数学家秦九韶的推广,又发现了一种算法,叫做“大衍求一术”.在中国还流传着这么一首歌诀:三人同行七十稀,五树梅花廿一枝,七子团圆月正半,除百零五便得知.它的意思是说:将某数(正整数)除以3所得的余数乘以70,除以5所得的余数乘以21,除以7所得的余数乘以15,再将所得的三个积相加,并逐次减去105,减到差小于105为止. 所得结果就是某数的最小正整数值.用上面的歌诀来算《孙子算经》中的问题,便得到算式:2×70+3×21+2×15=233,233-105×2=23,即所求物品最少是23件.三、建构教学“孙子问题”相当于求关于,,x y z 的不定方程组的325372m x m y m z =+⎧⎪=+⎨⎪=+⎩的正整数解;设所求的数为m ,根据题意m 应该同时满足下列三个条件:①m 被3除后余2,即mod(,3)2m =;②m 被5除后余3,即mod(,5)3m =;③m 被7除后余2,即mod(,7)2m =;用自然语言可以将算法写为:1S 1m ←2S 1m m ←+3S 如果mod(,3)2m =且mod(,5)3m =且mod(,7)2m =则执行4S ,否则执行2S ; 4S 输出m伪代码:1m ←DO1m m ←+Loop Until mod(,3)2m =且mod(,5)3m =且mod(,7)2m =Print m流程图为:四、数学运用例题有3个连续的自然数,其中最小的能被15整除,中间的能被17整除,最大的能被19整除,求满足要求的一组三个连续的自然数.伪代码:m← 2While Mod (m,15)=0or Mod (m+1,17)=0or Mod (m+2,19)=0m←m+1End WhilePrint m, m+1, m+2思考:以下伪代码是否可行?k←1a←15kWhile Mod(a+1,17)≠0 orMod(a+2,19)≠0k←k+1a←15kEnd WhilePrint a,a+1,a+2五、要点归纳与方法小结本节课学习了以下内容:1.中国数学在世界数学史上的巨大贡献;2.实际问题的分析和解决问题过程;3.算法的表示及语句的运用.。
1.4 算法案例(2)教学目标:1.理解欧几里得辗转相除法的数学原理,并能根据这些原理进行算法分析.2.理解用欧几里得辗转相除法求两个数的最大公约数的方法与步骤.3.能根据算法语句与流程图的知识设计完整的流程图并写出其伪代码.教学重点:1.理解欧几里得辗转相除法求两个数的最大公约数的方法与步骤.2.能写出欧几里得辗转相除法的流程图和伪代码.教学难点:1.利用计算机编程来实现求两个数的最大公约数.2.欧几里得辗转相除法的流程图和伪代码程序.教学方法:1.通过复习小学学过的求两个数的最大公约数的方法引入新知识,可以使学生容易接受,易于理解.2.教学中利用类比教学法,可以加深学生对欧几里得辗转相除法的理解,有利于培养学生的理性思维和实践能力.3.通过数学与计算机编程的结合,有利于学生理解构造性数学,并从程序的学习中体会数学的严谨,领会数学算法计算机处理的结合方式,初步掌握把数学算法转化成计算机语言的一般步骤,培养学生综合应用知识解决有关问题的能力.教学过程:一、问题情境在初中,我们已经学过求最大公约数的知识,你能求出18与30的公约数吗?我们都是利用找公约数的方法来求最大公约数,如果公约数比较大而且根据我们的观察又不能得到一些公约数,我们又应该怎样求它们的最大公约数?比如求8251与6105的最大公约数?这就是我们这一堂课所要探讨的内容.二、学生活动求两个正数8251和6105的最大公约数.(分析:8251与6105两数都比较大,而且没有明显的公约数,如能把它们都变小一点,根据已有的知识即可求出最大公约数)解:8251=6105×1+2146显然8251和的2146最大公约数也必是2146的约数,同样6105与2146的公约数也必是8251的约数,所以8251与6105的最大公约数也是6105与2146的最大公约数.6105=2146×2+1813 2146=1813×1+333 1813=333×5+148 333=148×2+37 148=37×4+0则37为8251与6105的最大公约数. 三、建构教学以上我们求最大公约数的方法就是辗转相除法.也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的.利用辗转相除法求最大公约数的步骤如下:第一步:用较大的数m 除以较小的数n 得到一个商0q 和一个余数0r ;第二步:若00r =,则n 为,m n 的最大公约数;若00r ≠,则用除数n 除以余数0r 得到一个商1q 和一个余数1r ;第三步:若10r =,则1r 为,m n 的最大公约数;若10r ≠,则用除数0r 除以余数1r 得到一个商2q 和一个余数2r ;……)依次计算直至0n r =,此时所得到的1n r -即为所求的最大公约数. 四、数学运用BSAIC 同学们设计相应框图并相互之间检查框图与程序的正确性,结果.(1)辗转相除法的程序框图及程序 程序框图: 伪代码:Read ,While Mod(,)0 Mod(,) End While Print a ba b r a b a b b r b≠←←←用较大的数除以较小的数,得到除式r nq m +=)0(n r <≤,直到0=r .五、要点归纳与方法小结 本节课学习了以下内容:1.辗转相除法中蕴含的数学原理及算法语言的表示; 2.函数Mod(,)a b 的含义.。
高中数学第一章算法初步1.4 算法案例(3)教案苏教版必修3 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(高中数学第一章算法初步1.4 算法案例(3)教案苏教版必修3)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为高中数学第一章算法初步1.4 算法案例(3)教案苏教版必修3的全部内容。
1。
4 算法案例(3)教学目标:1.了解这种方法是求方程近似解的一般方法,能利用计算器求精确到0.01的实数解.2.理解二分法求方程近似解的算法,进一步理解函数与方程的关系.3.能根据算法语句与程序框图的知识设计完整的二分法求方程近似解的流程图并写出其伪代码.4.培养学生利用计算工具的能力.教学重点:1.利用二分法求给定精确度的方法近似解.2.能写出二分法求方程近似解的流程图和伪代码.教学难点:1.利用二分法求方程的近似解.2.二分法求方程近似解的流程图和伪代码.教学方法:1.通过模仿二分法求方程近似解,体会古人计算构思的巧妙.2.通过二分法求方程近似解的方法与步骤,了解数学计算转换为计算机计算的途径,从而探究计算计算法与数学算法的区别,体会计算机对数学学习的辅助作用.教学过程:一、问题情境在前面一节课中,我们已经学习了一些简单的算法,如不定方程的解、欧几里得辗转相除法求两个正整数的最大公约数等问题,对算法已经有了较为深刻的了解,下面,我们还将通过一个具体的算法案例,继续体会算法的思想.这就是我们本节课所要研究的问题—二分法求方程近似解.二、学生活动写出用区间二分法求解方程310x x --=在区间[1,1.5]内的一个近似解(误差不超过0.001)的一个算法.(1)算法设计思想:如图,如果估计出方程()0f x =在某区间[,]a b 内有一个根*x ,就能用二分法搜索求得符合误差限制c 的近似解.(2)算法步骤可以表示为:1S 取[,]a b 的中点20b a x +=,将区间一分为二; 根*x 在0x 的左2S 若0()0f x =,则0x 就是方程的根,否则判断侧还是右侧;若0()()0f a f x >,则*0(,)x x b ∈,以0x 代替a ;若0()()0f a f x <,则*0(,)x a x ∈,以0x 代替b ;转1S .3S 若||a b c -<,计算终止,此时*0x x ≈,否则三、建构教学伪代码1:R ea d a ,b ,c02a b x +← 结束 开始While ||a b c -≥ And 30010x x --≠If 3(1)a a --⨯300(1)x x --〈0 Then0b x ←Else0a x ←End If 02a bx +←End WhilePrint 0x伪代码2:Read ,,a b c0()2a b x +←3()1f a a a ←--3000()1f x x x ←--If 0()0f x = ThenGoTo 120If 0()()0f a f x < Then0b x ←Else0a x ←End IfIf ||a b c -≥ ThenGoTo 20Printx二分搜索的过程是一个多次重复的过程,故可以用循环结构来处理(代码1),课本解法是采用GoTo语句实现的(代码2).四、要点归纳与方法小结本节课学习了以下内容:1.二分法的算法和用伪代码表示该算法;2.GoTo语句的使用;3.解决实际问题的过程:分析-画流程图-写伪代码.。
1.4 算法案例学习目标:1.通过中国古代算法案例,体会中国古代数学对世界数学发展的贡献.2.能综合运用所学的算法知识解决实际问题,会用自然语言、流程图和伪代码表述问题的算法过程.(重点、难点)3.拓展视野,进一步感受算法的意义和价值.[自 主 预 习·探 新 知]1.“孙子问题”是求关于x ,y ,z 的一次不定方程组⎩⎨⎧m =3x +2,m =5y +3,m =7z +2的正整数解.2.辗转相除法和更相减损术(1)欧几里得辗转相除法求两个正整数a ,b 的最大公约数的步骤是:计算出a ÷b 的余数r ,若r =0,则b 即为a ,b 的最大公约数;若r ≠0,则把前面的除数b 作为新的被除数,把余数r 作为新的除数,继续运算,直到余数为0,此时的除数即为a ,b 的最大公约数.(2)“更相减损术”是我国的《九章算术》中提到的一种求两个正数最大公约数的算法,它与“辗转相除法”相似.它的基本思想是:对于给定的两个数,以两个数中较大的数减去较小的数,然后将差和较小的数组成一对新数,再用两个数中较大的数减去较小的数,反复执行此步骤,直到产生一对相等的数为止,这个数就是原来两个数的最大公约数.3.Int(x )和Mod(x )函数(1)Int(x )表示不超过x 的最大整数. 例如:Int(5)=5,Int ⎝ ⎛⎭⎪⎫23=0,Int(3.6)=3.(2)Mod(a ,b )的意义是a 除以b 所得的余数,因此当Mod(a ,b )=0时,表示a 能被b 整除,当0<Mod(a ,b )<b 时,a 不能被b 整除,即b 不是a 的约数.4.利用“二分法”求方程f (x )=0在区间[a ,b ]上的近似解的步骤为:S1 取[a ,b ]的中点x 0=12(a +b ),将区间一分为二;S2 若f (x 0)=0,则x 0就是方程的根;否则判断根x *在x 0的左侧还是右侧: 若f (a )f (x 0)>0,则x *∈(x 0,b ),以x 0代替a ; 若f (a )f (x 0)<0,则x *∈(a ,x 0),以x 0代替b ; S3 若|a -b |<c ,计算终止,此时x *≈x 0,否则转S1.[基础自测]1.两个整数490和910的最大公约数是________.70 [∵910=490×1+420,490=420×1+70,420=70×6+0, ∴490和910的最大公约数是70.] 2.Mod(8,3)=________.2 [Mod(8,3)表示8除以3所得的余数. ∵8=2×3+2,∴Mod(8,3)=2.]3.若Int(x )表示不超过x 的最大整数,对于下列等式: ①Int(10.01)=10;②Int(-1)=-1;③Int(-5.2)=-5. 其中正确的有________个.【导学号:20132046】2 [①②正确,③错误.因为Int(x )表示的是不超过x 的最大整数.所以Int(-5.2)=-6.]4.用二分法求方程的近似解,误差不超过ε,则循环结构的终止条件是________.①|x 1-x 2|>ε;②x 1=x 2=ε;③x 1<ε<x 2;④|x 1-x 2|<ε.④ [依据用二分法求方程近似解时误差限制要求判断,④对.] 5.试用伪代码表示求方程组⎩⎨⎧Mod (x ,3)=2,Mod (x ,7)=5的一个正整数解.【导学号:20132047】[解析] 本题用计算机解决并不困难,只要使用循环语句,从小到大搜索即可.[解]伪代码为:[合作探究·攻重难]有17整除,最大的能被19整除,画出求满足要求的一组三个连续正整数的流程图,并写出伪代码.[解析]设最小的正整数m,根据题意,m应同时满足3个条件:(1)m被15整除即Mod(m,15)=0,(2)m+1被17整除即Mod(m+1,17)=0,(3)m+2被19整除即Mod(m+2,19)=0.首先,从m=2开始检验条件,若3个条件中有任何一个不满足则m递增1.直到m同时满足3个条件时,输出m,m+1,m+2.因为要从m=2开始反复验证,故需要用循环结构.[解]流程图:伪代码:[规律方法]解决此类问题的方法就是从m=2开始,对每一个正整数逐一检验,当m满足所有已知条件时,结束循环,输出m.[跟踪训练]1.如图1-4-1所示的流程图,输出的结果是________.图1-4-117[m=10时,不满足条件,则m←10+7,m=17时,Mod(m,3)=2且Mod(m,5)=2成立,故输出17.]2.m是一个正整数,对两个正整数a,b,如果a-b是m的倍数,则称a,b对模m同余,用符号a≡b(mod m)表示,则下列各式中:①12≡7(mod 5);②21≡10(mod 3);③34≡20(mod 2);④47≡7(mod 40).【导学号:20132048】正确的有________.(填写正确命题的序号)①③④[逐一验证,由题意,对于①,12-7=5是5的倍数;对于②,21-10=11不是3的倍数;对于③,34-20=14是2的倍数;对于④,47-7=40是40的倍数.故①③④正确.]并画出流程图,写出伪代码.【导学号:20132049】[解析]根据用辗转相除法求两个正整数的算法步骤写出解决此问题的算法,再转换为流程图和伪代码.[解]算法如下:S1a←8 251;S2b←6 105;S3如果Mod(a,b)≠0,那么转S4,否则转S7;S4r←Mod(a,b);S5a←b;S6b←r,转S3;S7输出b.流程图与伪代码:[规律方法]辗转相除法是用于求两个数的最大公约数的一种方法,这种方法由欧几里得在公元前300年左右首先提出,因而又叫“欧几里得辗转相除法”.辗转相除法的算法步骤(以求两个正整数a,b(a>b)的最大公约数为例)为:S1输入两个正整数a,b;S2如果Mod(a,b)≠0,那么转S3,否则,转S6;S3r←Mod(a,b);S4a←b;S5b←r,转S2;S6输出b.其流程图如图.伪代码为:[提醒]求两个正整数的最大公约数时,用辗转相除法进行设计的关键是:将“辗转”的过程用循环语句表示.,为了避免求循环次数对两个具体的正整数,循环次数可以求出,但会使程序更为复杂,最好使用“While”语句.[跟踪训练]3.用辗转相除法求261和319的最大公约数.[解析]依据辗转相除法的算法步骤求解.[解]319÷261=1(余58),261÷58=4(余29),58÷29=2(余0),所以319与261的最大公约数为29.4.运行下面伪代码,当输入168,72时输出的结果是________.【导学号:20132050】24[伪代码是求168与72的最大公约数.](误差不超过0.005)的流程图,写出伪代码.【导学号:20132051】[解析]依据二分法求方程的近似解的步骤设计出算法再转换成流程图和伪代码,设f(x)=x3-2如图所示.如果估计出方程f(x)=0在某区间[a,b]内有一个根x*,就能用二分法搜索求得符合误差限制c的近似解.用自然语言表示算法如下:S1取[a,b]的中点x0=12(a+b),将区间一分为二.S2若f(x0)=0,则x0就是方程的根,否则判断根x*在x0的左侧还是右侧;若f(a)f(x0)>0,则x*∈(x0,b),以x0代替a;若f(a)f(x0)<0,则x*∈(a,x0),以x0代替b.S3若|a-b|<c,计算终止,此时x*≈x0,否则转S1. [解]流程图如图所示.伪代码如下:[规律方法] 1.用二分法求方程近似解,必须先判断方程在给定区间上是否有解.2.二分法的过程是一个多次重复的过程,故可用循环结构处理.3.二分法过程中需要对中点端点处函数值的符号进行判定,故实现算法需用选择结构,即用条件语句进行分支选择.[跟踪训练]5.流程图1-4-2表示的算法的功能是________.图1-4-2用二分法求方程x2-3x+1=0在区间[0,1]内的一个近似解(误差不超过0.001) [对照二分法求方程近似解的方法步骤,此流程图表示的算法功能是用二分法求方程x2-3x+1=0在区间[0,1]内的一个近似解(误差不超过0.001).] 6.用二分法设计一个求方程x2-2=0的近似根(误差不超过0.005)的算法流程图,写出伪代码.[解析]学习了二分法解方程的步骤之后,根据所求近似根与精确解的差的绝对值不超过0.005,不难设计出以下步骤.第一步令f(x)=x2-2,因为f(1)<0,f(2)>0,所以设x1=1,x2=2,方程在[x1,x2]内有一根.第二步令m=x1+x22,判断f(m)是否为0,若是,则m即为所求;否则,继续判断f(x1)·f(m)是大于0还是小于0.第三步若f(x1)·f(m)>0,则令x1=m;否则,令x2=m.第四步判断|x1-x2|<0.005是否成立.若成立,则x1,x2之间的任意取值均为满足条件的近似根;否则,返回第二步.[解]流程图如图所示.伪代码如下:[当堂达标·固双基]1.有一堆火柴棒,三根三根地数,最后余下一根;四根四根地数,最后余下两根;五根五根地数,最后余下四根.那么这堆火柴棒最少有________根.34[由题意知,本题实际上是求关于a,b,c的不定方程组的正整数解,即⎩⎪⎨⎪⎧m =3a +1,m =4b +2,m =5c +4得m 的最小值为34.]2.4 557与5 115的最大公约数是________.93 [因为5 115=4 557×1+558,4 557=558×8+93,558=93×6,所以4 557与5 115的最大公约数是93.]3.Mod(100,17)=________.【导学号:20132052】15 [Mod(a ,b )=c 表示b 除a 所得余数为c .100=17×5+15,故余数为15.] 4.根据如图1-4-3所示的流程图(其中[x ]表示不大于x 的最大整数),可知输出r =________.图1-4-373 [由框图的算法原理可知:a =5,b =7,n =1,n (b -a )=7-5<1; n =2,n (b -a )=2(7-5)<1; n =3,n (b -a )=3(7-5)>1, 分子有理化得67+5>63+3=1,此时,m =[35]=6,r =m +1n =6+13=73,故输出r =73.]5.写出用二分法求方程x 3-2x -3=0在区间[1,2]内的一个近似解(误差不超过0.001)的伪代码,并画出流程图.【导学号:20132053】[解析] 根据二分法求方程近似解的方法步骤,设计伪代码和流程图. [解] 算法的伪代码如下:流程图如图所示:。
《第一章算法初步》试卷(答案在后面)一、单选题(本大题有8小题,每小题5分,共40分)1、一个算法正确的执行是算法执行过程中每一步的操作都满足:A、有穷性B、确定性C、可行性D、输入输出的确定性2、一个算法的正确性可以用以下哪个指标来衡量?A、算法的效率B、算法的易懂性C、算法的简洁性D、算法的正确性3、下列语句表示的是一种算法,那么这个算法的功能是 ( )A、输入一个数据B、输出一个数据C、输入并输出一个数据D、先输入一个数据,进行运算后再输出结果4、下面哪个是算法的特征?A. 计算规律简单B. 只能用标准的计算器步骤C. 需要多个步骤完成D. 步骤随机改变5、在以下选项中,不属于算法四大特点的是()A、有穷性B、确定性C、可扩展性D、可行性6、下列算法执行后的输出结果是()A. 12B. 24C. 36D. 487、若编程实现下列算法:第一步:设定初始值 a = 5, b = 10;第二步:if (a > b) then a = a - 2 else b = b + 3; 第三步:输出 a 和 b 的值;则程序的输出结果是:A. a = 3, b = 13B. a = 3, b = 10C. a = 5, b = 13D. a = 5, b = 108、阅读下面的算法语句,执行后输出的S值为多少?S = 0 I = 1 While I <= 10 S = S + I I = I + 2 Wend Print SA、25B、26C、50D、55二、多选题(本大题有3小题,每小题6分,共18分)1、在算法设计中,以下是哪些算法分类属于算法设计的基本方法?()A、分治法B、动态规划C、贪心法D、回溯法E、分支限界法2、已知算法A的步骤如下:(1)输入一个正整数n;(2)计算n的阶乘;(3)输出结果。
请从以下选项中选择正确的算法描述:A. 递归算法B. 非递归算法C. 算法A是求阶乘的正确方法D. 算法A不是求阶乘的正确方法E. 上述选项均正确3、以下关于算法的功能描述,哪些是正确的?()A、算法可以简化问题解的计算过程B、算法一定能找到解决问题的所有可能解C、算法能够被计算机程序化实现D、算法的步骤必须是明确的,不能含糊其辞三、填空题(本大题有3小题,每小题5分,共15分)1、在算法设计中,一个基本操作序列可以表示为______ ,其中n为基本操作重复执行的次数。
1.4 算法案例
自我检测
基础达标
1.下面一段伪代码的目的是( )
10 Read x,y
20 m←x
30 n←y
40 If m/n=int(m/n)Then Goto 90
50 c←m -int(m/n)*n
60 m←n
70 n←c
80 Goto 40
90 Print n
A .求x,y 的最小公倍数
B .求x,y 的最大公约数
C .求x 被y 整除的商
D .求y 除以x 的余数
答案:B
2.数2 004与1 992的最大公约数为( )
A .4
B .8
C .12
D .16
答案:C
3.下面一段伪代码的目的是( )
10 Read“a=,b=”;a,b
20 r←mod (a,b)
30 a←b
40 b←r
50 If r< >0 then 20
60 Print a
70 End
A .求a,b 的最小公倍数
B .求a,b 的最大公约数
C .求x 被y 整除的商
D .求y 除以x 的余数
答案:B
4.流程图填空:
输入x 的值,通过函数⎪⎩⎪⎨⎧≥-<≤-<=,
,
,
10113101121x x x x x x
y 求出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|<c,计算终止,x0就是方程的根,否则转S1.
写出用区间二分法求方程x3+x2-1=0在[0,1]上的近似解的伪代码.精确度为0.01.解:10 Read“输入初值a,b和误差c”;a,b,c
20 x0←(a+b)/2
30 f(a)←a∧3+a∧2-1
40 f(x0)←x0∧3+x0∧2-1
50 If f(x0)=0 then Goto 120
60 If f(a)*f(x 0)>0 then
70 a←x 0
80 Else
90 b←x 0
100 End if
110 If ABS (a-b)>=c then Goto 20
120 Print x 0
7.根据下面流程图写出其算法的伪代码.
解:伪代码如下:
10 a 1←1
20 i←9
30 a 0←2×(a 1+1)
40 a 1←a 0
50 i←i -1
60 If i>=1 then Goto 30
70 Print a 0
End
8.写出计算=1+!11+!21+…+!
n 1的算法的伪代码和流程图(用当型循环写出). 解:流程图如图:
伪代码:
Read“请输入n的值”;n
S←1
t←1
i←1
While i<=n
t←t/i
S←S+t
i←i+t
End While
Print“e=”;S
End
9.用秦九韶算法求多项式f(x)=1+x+0.5x2+0.166 67x3+0.041 67x4+0.008 33x5在x=-0.2的值.解:f(x)=1+x+0.5x2+0.166 67x3+0.041 67x4+0.008 33x5
=((((0.008 33x+0.041 67)x+0.166 67)x+0.5)x+1)x+1
而x=-0.2,所以有:
v0=a5=0.008 33,v1=v0x+a4=0.04
v2=v1x+a3=0.158 67,v3=v2x+a2+0.468 27
v4=v3x+a1=0.906 35,v5=v4x+a0=0.818 73
即f(-0.2)=0.818 73.
更上一层
1.马克思曾描述了这样一个问题:有30个人在一家小餐馆吃饭,其中有男人、女人和小孩.每个男人花了3先令,
每个女人花了2先令,每个小孩花了1先令,他们总共花了50先令.问男人、女人、小孩各多少?用伪代码表示该算法.
解:x←1
y←1
While x<=10
While y<=20
If 2*x+y=20 then
z←30-x-y
Print“男人、女人、小孩的个数分别为:”x,y,z.
End if
y←y+1
End while
x←x+1
y←1
End while
End
2.未知数的个数多于方程个数的方程(组)叫做不定方程.最早提出不定方程的是我国的《九章算术》.实际生活中有很多不定方程的例子,例如“百鸡问题”:公元五世纪末,我国古代数学家张丘建在《算经》中提出了“百鸡问题”:“鸡母一,值钱三;鸡翁一,值钱二;鸡雏二,值钱一.百钱买百鸡,问鸡翁、母、雏各几何?”
算法设计:
(1)设母鸡、公鸡、小鸡数分别为I、J、K,则应满足如下条件:
I+J+K=100;
3I+2J+1/2K=100.
(2)先分析一下三个变量的可能值.①I的最小值可能为零,若全部钱用来买母鸡,最多只能买33只,故I 的值为0~33中的整数.的最小值为零,最大值为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,满足即为所求解.
根据上述算法思想,画出流程图并用伪代码表示.
解:这是一个循环结构的嵌套,可以用循环语句实现.
伪代码:
For I from 0 to 32
For J from 0 to 49
K←100-I-J
If 3I+2J+0.5K=100 then
Print I,J,K
End for
End for
流程图:。