欢迎来到天天文库
浏览记录
ID:56402478
大小:211.50 KB
页数:30页
时间:2020-06-16
《谭浩强版C语言课件第2章.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、C程序设计东北大学电子信息工程第2章程序的灵魂——算法一个程序应包括以下两方面内容:(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(datastructure)。(2)对操作的描述。即操作步骤,也就是算法(algorithm)。著名计算机科学家沃思(NikiklausWirth)提出一个公式:数据结构+算法=程序实际上:程序=算法+数据结构+程序设计方法+语言工具和环境2.1 算法的概念2.2 简单算法举例2.3 算法的特性2.4 怎样表示一个算法2.5 结构化程序设计方
2、法2.1算法概念为解决一个问题而采取的方法和步骤,就称为“算法”。算法分类:一、数值算法:求解数值解,可运用数值分析方法二、非数值算法:范围广泛,常见的是用于事物管理领域。2.2简单算法举例例2.1求1×2×3×4×5。最原始的方法:步骤1:先求1×2,得到结果2。步骤2:将步骤1得到的乘积2再乘以3,得到结果6。步骤3:将6再乘以4,得24。步骤4:将24再乘以5,得120。这就是最后的结果。用循环算法来求结果:S1:使p=1S2:使i=2S3:使p×i,乘积仍放在变量p中,可表示为p×i=>p
3、S4:使i的值加1,即i+1=>iS5:如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则,算法结束。最后得到p的值就是5!的值。如果题目改为求1×3×5×7×9×11算法只需作很少的改动即可:S1:1=>pS2:3=>iS3:p×i=>pS4:i+2=>iS5:若i≤11,返回S3;否则,结束若把S5改为如下:S5:若i<11,返回S3。这样会有什么问题?会得到什么结果?例2.2有50个学生,要求将他们之中成绩在80分以上者打印出来。用n表示学生学号,n1代表第一个学生学号,ni
4、代表第i个学生学号。用g代表学生成绩,gi代表第i个学生成绩,算法可表示如下。S1:1=>iS2:如果gi≥80,则打印ni和gi,否则不打印S3:i+1=>iS4:如果i≤50,返回S2,继续执行;否则,算法结束。本例中,变量i作为下标,用它来控制序号(第几个学生,第几个成绩)。当i超过50时,表示已对50个学生的成绩处理完毕,算法结束。例2.3判定2000—2500年中的每一年是否闰年,将结果输出。闰年的条件是:①能被4整除,但不能被100整除的年份都是闰年,如1996年,2004年是闰年;②
5、能被100整除,又能被400整除的年份是闰年。如1600年、2000年是闰年。不符合这两个条件的年份不是闰年。算法可表示如下:设y为被检测的年份。可采取以下步骤:S1:2000=>yS2:y不能被4整除,则输出y“不是闰年”。然后转到S6S3:若y能被4整除,不能被100整除,则输出y“是闰年”。然后转到S6S4:若y能被100整除,又能被400整除,输出y“是闰年”;否则输出“不是闰年”。然后转到S6S5:输出y“不是闰年”S6:y+1=>yS7:当y≤2500时,转S2继续执行,如y>2500
6、,算法停止。在考虑算法时,应当仔细分析所需判断的条件,如何一步一步缩小被判断的范围。有的问题,判断的先后次序是无所谓的,而有的问题,判断条件的先后次序是不能任意颠倒的。例2.4求1-1/2+1/3-1/4+…+1/99-1/100。算法可以表示如下:S1:1=>signS2:1=>sumS3:2=>denoS4:(-1)×sign=>signS5:sign×(1/deno)=>termS6:sum+term=>sumS7:deno+1=>denoS8:若deno≤100返回S4;否则算法结束。例2
7、.5对一个大于或等于3的正整数,判断它是不是一个素数。所谓素数,是指除了1和该数本身之外,不能被其他任何整数整除的数。例如,13是素数,因为它不能被2,3,4,…,12整除。判断一个数n(n≥3)是否素数的方法是很简单的:将n作为被除数,将2到(n-1)各个整数轮流作为除数,如果都不能被整除,则n为素数。算法可以表示如下:S1:输入n的值S2:2=>i(i作为除数)S3:n被i除,得余数rS4:如果r=0,表示n能被i整除,则打印n“不是素数”,算法结束;否则执行S5S5:i+1=>iS6:如果i
8、≤n-1,返回S3;否则打印n“是素数”,然后结束。实际上n不必被2到(n-1)的整数除,只需被2到n的开方间整数除即可,甚至只需被2到n/2之间的整数除即可。例如,判断13是否素数,只需将13被2、3除即可,如都除不尽,n必为素数。S6步骤可改为:S6:如果i≤n,返回S2;否则算法结束。通过以上几个例子,可以初步了解怎样设计一个算法。2.3算法的特性1.有穷性2.确定性3.有零个或多个输入4.有一个或多个输出5.有效性设计算法,编写算法适用的对象:2.4怎样表示一个算法为了表示
此文档下载收益归作者所有