第1章算法初步章末复习课算法设计【例1】已知平面直角坐标系中两点A(-1,0),B(3,2),写出求线段AB的垂直平分线方程的一个算法.思路点拨:先由中点坐标公式求出线段AB的中点坐标,再由斜率公式求出直线AB的斜率,然后利用两直线垂直,斜率乘积等于-1,得到线段AB垂直平分线的斜率,最后由点斜式得到线段AB的垂直平分线方程.把这一解决问题的过程划分为若干明确的步骤并用简练的语言表述出来,就是一个算法.[解]算法如下:S1计算x0←-1+32=1,y0←0+22=1,得AB的中点N(1,1);S2计算k1←2-03--1=12,得AB斜率;S3计算k←-1k1=-2,得AB垂直平分线的斜率;S4由点斜式得直线AB的垂直平分线的方程,并输出.1.算法设计与一般意义上的问题解决不同,它是对一类问题、一般解法的抽象与概括.算法设计既要借助一般问题的解决方法,又要包含这类问题的所有可能情形,它往往是把问题的解决划分为若干个可执行的步骤,有时甚至需要重复多次某些步骤,但最终都必须在有限个步骤之内完成.2.对于给定的问题,设计其算法时应注意:(1)与解决该问题的一般方法相联系,从中提炼并概括出算法步骤;(2)将解决问题的过程划分为若干步骤;(3)引入有关的参数或变量对算法步骤加以表述;(4)用简练的语言将各个步骤表述出来.1.已知圆的方程(x-2)2+(y+3)2=25和点P(-1,2),写出求过点P且与圆相切的直线AB的方程的一个算法.思路点拨:把求圆的切线的解题过程划分为若干个明确的步骤表述出来即可.[解]算法步骤如下:第一步用点斜式写出直线AB的方程y-2=k(x+1);第二步将直线的方程化为一般方程kx-y+k+2=0;第三步计算点(2,-3)到直线AB的距离d=|2k+3+k+2|1+k2;第四步解方程5=|2k+3+k+2|1+k2,得k=0或k=158;第五步将k的值代入方程kx-y+k+2=0;第六步将第五步的运算结果化简,即得到直线AB的方程.2.一位老爷爷带一只狼、一只羊和一筐青菜准备过河,但由于船小,过河时每次只能带一样东西,而老爷爷不在时,狼会把羊吃掉,羊也会把青菜吃掉.请写出解决老爷爷怎样过河才能把所带的东西全部运到对岸这一问题的算法.思路点拨:在老爷爷运送东西过河的过程中,人离开岸边时必须保证岸边的每个东西相安无事,依据此原则可以确定安全的过河办法.[解]老爷爷过河的步骤如下:S1把羊带到对岸;S2回来接狼,把狼带到对岸后把羊带回来;S3把羊放在原地,把菜运到对岸;S4回来接羊.流程图的应用【例2】(1)执行如图所示的流程图,若输入的t∈[-2,2],则输出的S属于________.(2)执行如图所示的流程图,如果输入的a=4,b=6,那么输出的n的值为________.(1)[-3,6](2)4[(1)当0≤t≤2时,S=t-3∈[-3,-1],当-2≤t0时,2t2+1∈(1,9],t←2t2+1,即t∈(1,9],此时执行S=t-3,则S∈(-2,6],综上,S∈[-3,6].(2)运行流程图,第1次循环,a=2,b=4,a=6,s=6,n=1;第2次循环,a=-2,b=6,a=4,s=10,n=2;第3次循环,a=2,b=4,a=6,s=16,n=3;第4次循环,a=-2,b=6,a=4,s=20,n=4,结束循环,故输出的n=4.]解答此类问题的关键是读懂流程图,理解流程图的功能.流程图中的选择结构和循环结构一直是高考的热点,循环结构几乎是每年必考的内容,选择结构常用来设计分段函数求值;比较两个数的大小;对一组数进行排序筛选等问题.在解决此类问题时关键要弄清楚分类的条件.对于循环结构,应注意终止的条件,关键是看“是”与“否”后面对应的操作是什么.提醒:循环结构中循环次数的控制非常关键,它直接影响着运算的结果,注意两个问题:一是运算次数;二是循环结构的形式,即是当型循环还是直到型循环.3.执行如图所示的流程图,若输入n的值为3,则输出S的值为________.1[i=1,S=2-1,1≥3不成立;i=2,S=3-1,2≥3不成立;i=3,S=4-1=1,此时3≥3成立,结束循环,输出S的值为1.]4.如图所示的流程图是为了求出满足3n-2n1000的最小偶数n,那么在和两个空白框中,可以分别填入________,________.A≤1000n←n+2[由流程图中A=3n-2n,故判断框中应填入A≤1000,由于初始值n=0,要求满足A=3n-2n1000的最小偶数,故执行框中填入n←n+2.]伪代码的应用(1)如下所示的伪代码,当输入值x=4时,输出值y为________.ReadxIfx2y←2xIfx=2y←y←log2x-Printy(2)根据下面的伪代码,可知输出的结果S是________.a←1b←1S←a+bForiFrom1To4a←bb←SS←a+bPrintS(1)1(2)13[(1)因为输入值x=4,所以执行y←log2x-1,所以输出值y=log24-1=1.(2)由伪代码知a=1,b=1,S=1+1=2,i初值为1,终值为4,步长为1,则有i=1时,a=1,b=2,S=1+2=3;i=2时,a=2,b=3,S=2+3=5;i=3时,a=3,b=5,S=3+5=8;i=4时,a=5,b=8,S=13,算法结束,输出S=13.]由伪代码求值问题,通常先把伪代码算法转换成流程图算法直观易懂,步骤清晰.条件语句对应选择结构.循环语句对应循环结构.循环结构的两种格式(当型循环结构和直到型循环结构中)判断框内的条件在解决同一问题时是不同的,它们恰好相反.在用循环语句编写程序时,常用到三种循环语句,一是For语句,二是While语句,三是Do语句.要特别注意计数变量的取值范围,避免出现多一次循环或少一次循环的错误.5.某算法的伪代码如下,如果输出的y的值是4,那么输入的x的所有可能的值是________.ReadxIfx0y←x-2y←x2-3xEndPrinty-12,4[本题的伪代码表示的算法是求分段函数y=x-2,x0,x2-3x,x≥0的函数值.①当x0时,由x-2=4,得x=-12;②当x≥0时,由x2-3x=4,得x=4.]24[t=1×2×3×4=24.]6.根据下面的伪代码,可知输出的结果t是________.t←1i←2Whilei≤4t←t×ii←i+1EndWhilePrintt分类讨论思想【例4】批发部出售袜子,其批发数在100到500双之间,当批发数小于等于300双时,每双批发价为2.5元,当批发数超过300双时,每双批发价为2.2元.试画出流程图计算100~500双袜子的批发金额,并写出伪代码.思路点拨:实际问题――→数学语言转化y=2.5x,100≤x≤3002.2x,300<x≤500――→框图语言流程图――→条件语言伪代码[解]流程图如图:算法伪代码为:ReadxIfx≥100Andx≤300Theny←2.5xy←2.2xPrinty1.在解答某些数学问题时,有时会有多种情况,需对各种情况加以分类,逐步求解,最后综合得出结论,这就是分类讨论思想.在具体问题的算法设计中,往往需要根据条件进行逻辑判断,并进行不同的处理,这实际上就运用了分类讨论的思想方法.2.利用分类讨论思想,可以通过条件结构实现算法的选择.按条件进行分析、比较、判断,并根据不同的情况进行不同的处理.3.当遇到实际问题时,首先建立数学模型将实际问题转化为数学问题,然后找出各个量及各个量之间的相互关系,选用合适的结构画出流程图,写出伪代码.x0x0y←3[对照分段函数解析式完成填空.]7.任给一个x值计算y=1x0,2x=0,3x0中的y值的算法的流程图如图所示,其中图框中的①②③分别为________、________、________.8.分析如下伪代码,并回答问题:ReadxIfx≤2y←-y←x2-2xPrinty(1)伪代码解决的是什么问题?画出相应的流程图;(2)根据伪代码回答:①若输入的x值为1时,输出的y值为多少?②若输出的y值为8时,输入的x值应为多少?思路点拨:算法语句→y=-2,x≤2x2-2x,x>2→x=1时,y=-2y=8时,x=4[解](1)本题伪代码解决的是求分段函数y=-2,x≤2,x2-2x,x>2的函数值的问题.相应的流程图如图.(2)①当x=1时,因为1<2,所以y=-2,即输出y的值为-2.②当y=8时,x>2,由x2-2x=8,得x=4或x=-2(舍),所以输入x的值是4.