C语言程序设计算法.ppt
《C语言程序设计算法.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计算法.ppt(65页珍藏版)》请在三一办公上搜索。
1、第二章 程序的灵魂算法,徐国艳 北京航空航天大学交通科学与工程学院,本章内容提要,2.1 算法的概念2.2简单算法举例2.3算法的特性2.4算法的表示方法2.5结构化程序设计方法,一个程序应包括两个方面的内容:,对数据的描述:数据结构(data structure)对操作的描述:算法(algorithm),著名计算机科学家沃思提出一个公式:数据结构+算法=程序,数据结构算法程序设计方法语言工具,完整的程序设计应该是:,广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。,方法1:1+2,+3,+4,一直加到100 加99次方法2:100+(1+99)+(2+98)+(49+51)+50
2、=100+49100+50 加51次,对同一个问题,可有不同的解题方法和步骤,例:求,2.1 算法的概念,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。希望方法简单,运算步骤少。,2.算法的分类:数值算法 非数值算法1)数值算法:数值算法具有现成的数学模型,其研究比较深入,通常把这些算法汇集起来,编制为现成的程序,供人们调用。(求数值解,程序)2)非数值算法:其种类繁多,要求各异,难以规范化,通常只对一些典型的非数值算法进行研究。(事务管理,广泛),2.2 简单算法举例,例2.1:求12345,步骤1:先求12,得到结果2步骤2:将步骤1得到的乘积2再乘以3,得
3、到结果6步骤3:将6再乘以4,得24步骤4:将24再乘以5,得120,太繁琐,如果要求121000,则要写999个步骤,S1:使p=1。S2:使i=2。S3:使pi,乘积仍放在变量p中,可表示为:pi p S4:使i的值加1,即i+1 i。S5:如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则,算法结束。最后得到p的值就是5!的值。,可以设两个变量:一个变量代表被乘数,一个变量代表乘数。不另设变量存放乘积结果,而直接将每一步骤的乘积放在被乘数变量中。设p为被乘数,i为乘数。用循环算法来求结果,算法可改写:,思考1 如果题目改为1357911,算法如何改动?,S1:1 pS2:
4、3 iS3:pipS4:i2 iS5:如果i=11,则返回S3;否则,结束。,算法简练,思考2 如果题目改为2468910,算法如何改动?,S1:0 sumS2:2 iS3:sumisumS4:i2 iS5:如果i=10,则返回S3;否则,结束。,思考3如果S5改为i10,其结果如何?如果S1改为2 sum,其结果如何?,例2.2 有50个学生,要求将成绩在80分以上的学生的学号和成绩输出。用ni代表第i个学生学号,gi表示第i个学生成绩S1:1iS2:如果gi80,则输出ni和gi,否则不输出S3:i+1iS4:如果i50,返回到步骤S2,继续执行,否则,算法结束,例2.3 判定200025
5、00年中的每一年是否闰年,将结果输出。,闰年的条件是:(1)能被4整除,但不能被100整除的年份都是闰年,如1996年,2004年是闰年;(2)能被100整除,又能被400整除的年份是闰年。如1600年、2000年是闰年。,设y为被检测的年份,算法可表示如下:S1:2000 yS2:若y不能被4整除,则输出y“不是闰年”。然后转到S6。S3:若y能被4整除,不能被100整除,则输出y“是闰年”。然后转到S6。S4:若y能被100整除,又能被400整除,输出y“是闰年”,否则输出“不是闰年”。然后转到S6。S5:输出y“不是闰年”。S6:y+1 yS7:当y2500时,转S2继续执行,如y250
6、0,算法停止。,例2.4 求规律:第1项的分子分母都是1;第2项的分母是2,以后每一项的分母都是前一项的分母加1;笫2项前的运算符为“-”,后一项前面的运算符都与前一项前的运算符相反。,例2.4 求S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1)*signS5:term=sign*(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno100返回S4;否则算法结束,sign当前项符号term当前项的值sum当前各项的和deno当前项分母,-1,-1/2,1-1/2,3,满足,返回S4,例2.4 求S1:sign=1S2:sum=1S
7、3:deno=2S4:sign=(-1)*signS5:term=sign*(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno100返回S4;否则算法结束,sign当前项符号term当前项的值sum当前各项的和deno当前项分母,1,1/3,1-1/2+1/3,4,满足,返回S4,例2.4 求S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1)*signS5:term=sign*(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno100返回S4;否则算法结束,99次循环后sum的值就是所要求的
8、结果,例2.5 给出一个大于或等于3的正整数,判断它是不是一个素数。所谓素数(prime),是指除了1和该数本身之外,不能被其他任何整数整除的数例如,13是素数,因为它不能被2,3,4,12整除。,判断一个数n(n3)是否素数:将n作为被除数,将2到(n-1)各个整数先后作为除数,如果都不能被整除,则n为素数S1:输入n的值S2:i=2(i作为除数)S3:n被i除,得余数rS4:如果r=0,表示n能被i整除,则输出n“不是素数”,算法结束;否则执行S5S5:i+1iS6:如果in-1,返回S3;否则输出n“是素数”,然后结束。,2.3 算法的特性 有穷性 确定性 有零个或多个输入 有一个或多个
9、输出 有效性,算法应包含有限的操作步骤,而不能是无限的。,算法中的每一个步骤都应当是确定的,而不应是含糊、模棱两可的,算法中的每一个步骤都应当能够有效的执行,并得到确定的结果,输入可使算法从外界取得必要的信息,2.4 算法的表示方法,主要为两大类:文字图形,常用的算法描述方法:1、自然语言2、流程图3、N-S图4、伪代码,例:,2.4.1 用自然语言表示算法,2.2节介绍的算法是用自然语言表示的用自然语言表示通俗易懂,但文字冗长,容易出现歧义性用自然语言描述包含分支和循环的算法,不很方便除了很简单的问题外,一般不用自然语言,用流程图表示算法,流程图是用一些图框来表示各种操作用图形表示算法,直观
10、形象,易于理解,起止框,输入输出框,处理框,判断框,流程线,连接点,注释框,x0,Y,N,一个入口,两个出口,用流程图表示算法,流程图是用一些图框来表示各种操作用图形表示算法,直观形象,易于理解,起止框,输入输出框,处理框,判断框,流程线,连接点,注释框,位置不够,防止交叉,例2.6 将例2.1的算法用流程图表示。求12345如果需要将最后结果输出:,1t,i5,开始,2i,t*it,i+1i,结束,N,Y,例2.6 将例2.1的算法用流程图表示。求12345如果需要将最后结果输出:,1t,输出t,i5,开始,2i,t*it,i+1i,结束,N,Y,结束,Y,1i,开始,gi80,输出ni、g
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 算法
链接地址:https://www.31ppt.com/p-6504169.html