C语言――第02章 算法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章程序的灵魂—算法§2.1算法的概念算法即程序操作的步骤。广义的说:算法就是为解决一个问题而采取的方法和步骤。数据结构就是程序中指定的数据类型和数据的组织形式。Wirth教授认为:程序=数据结构+算法实际上程序还应该包括语言环境和程序设计方法。§2.2简单举例例:对于一个大于3的正整数n,判断它是不是一个素数。(n被2,3,4……n-1除,若都不能整除,则n是素数)算法:S1:输入n的值S2:m=2S3:n被m除,得余数rS4:如果r=0,表示n能被m整除,则打印“n不是素数”,算法结束;否则执行s5S5:m=m+1S6:如果m=n-1,返回s3;否则打印“n不是素数”然后结束。§2.3算法的特性有穷性:即有限步解决问题;确定性:算法的每一个步骤不能含糊;有零个或多个输入;有一个或多个输出;有效性;§2.4算法的表示起止框输入输出框判断框处理框或流程线连接点注释框一些常用的流程图符号三种基本结构顺序结构选择(选取、分支)结构循环(重复)结构abAB顺序结构注:A,B可以是一个简单语句,也可以是一个基本结构选择(选取、分支)结构BAPab成立不成立APb成立不成立a选择结构BAPab成立不成立循环(重复)结构①当(while)型循环结构②直到型(Until)循环P1Aba成立当型循环结构P2Aba成立不成立直到型循环kA1A2AiAnk=k2k=k1k=knk=ki......多分支选择结构三种结构的特点:(1)只有一个入口和出口(2)结构内的每一部分都有机会被执行到。(3)结构内不存在死循环例:判断闰年的算法开始结束年份→yy能被4整除y能被100整除y能被400整除打印y“是润年”打印y“不是润年”打印y“不是润年”打印y“是润年”NNN表示算法的其他方法§用N-S流程图表示算法(1)顺序结构ABAB流程图N-S图(2)二分支选择结构PAB真假PBA真假(3)循环结构当型循环结构直到型循环结构PA假真当P为真AAP真假A直到P为真用伪代码表示算法例:打印2000-2500年中的每一年是否闰年。BEGIN2000ywhiley=2500{ify被4整除ify不被100整除printy;“闰年”elseify被400整除printy;“闰年”elseprinty;“非闰年”elseprinty;“非闰年”y=y+1}END§2.5结构化程序设计方法基本思路:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。具体方法:(1)自顶向下;(2)逐步细化;(3)模块化设计;(4)结构化编码。特点:考虑周全、结构清晰、层次分明、修改容易。过程:将问题求解由抽象逐步具体化,从顶层设计然后一步步细化。功能:将复杂的问题分解成若干个简单的问题。逐步细化的实现方法把给定的模块功能转换成它的详细过程性描述,通常都采用逐步细化的策略。例:在一组数中找出其中的最大数1.输入一组数;2.找出其中的最大数3.输出最大数2.1.任取一数,假设它就是最大数2.2.将该数与其余各数逐一比较2.3.若发现有任何数大于该假设的最大数,即取而代之.1.输入一个数组2.1先设第一个元素为最大数2.2从第二个到最后一个比较.2.3如果新元素最大数则将新元素→最大数3.输出逐步细化的实现方法逐步细化的步骤:(1)由粗到细地对程序进行逐步的细化。(2)在细化程序的过程中,同时对数据的描述进行细化。(3)每一步细化均使用相同的结构化语言,最后一步一般直接用伪代码来描述,以便编码时直接翻译为程序。优点:(1)每一步只优先处理当前最需要细化的部分,其余部分则推迟到适当的时机再考虑。(2)易于验证程序正确性,易为非专业人员接受,因而也更加实用。用“结构化”保证程序的清晰易读用“逐步细化”实现程序的正确性可靠

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功