c语言程序灵魂编译后,(上课用)第2章 算法---程序的灵魂

《(上课用)第2章 算法---程序的灵魂》由会员分享,可在线阅读,更多相关《(上课用)第2章 算法---程序的灵魂(70页珍藏版)》请在人人文库网上搜索。

1、复习完最后一课后,我学习了机器语言、汇编语言和高级语言,还学习了C语言程序的基本结构。预处理指令:预处理指令和其他程序的结果形成一个源程序,编译后形成一个目标程序。全局声明:声明整个源程序的有效数据和变量函数定义:主函数和其他函数完成特定的函数。3.掌握C语言程序的一些特点:只有一个主函数,函数的执行总是从主函数开始。每个数据语句和语句必须以分号结束。C语言本身不提供输入和输出,这需要通过诸如scanf和printf之类的库函数来完成。第2章算法程序的灵魂。一个程序主要包括以下两个方面的信息:(1)数据描述。在程序中,有必要指定使用哪些数据、这些数据的类型以及数据的组织形式,这是通过数据结构(。

2、2)对操作的描述。也就是说,需要计算机操作的步骤也是算法。因此,算法数据结构=程序。描述:1。除了算法和数据结构的主要元素外,程序还应该采用结构化编程方法进行编程,用某种计算机语言表达算法、数据结构、编程方法和语言工具是程序员的知识。2.该算法是为了解决“做什么”和“怎么做”的问题。程序中的操作语句是算法的体现。如果你不懂算法,你就不能谈论程序设计。2.1什么是算法2.2简单算法示例2.3算法的特征2.4如何表示算法2.5结构化编程方法2.1什么是算法?广义地说,解决问题的方法和步骤被称为“算法”。对于同一个问题,可以有不同的方法和步骤来解决问题。(例如,学生来学校报告交通)为了有效地解决问题。

3、,不仅要保证算法的正确性,还要考虑算法的质量并选择合适的算法。2.1什么是算法?计算机算法可分为两类:数值算法非数值算法数值运算的目的是寻找数值解,如寻找函数的正切值和寻找方程的解。非数字操作涵盖广泛的领域,其中最常见的是在事务管理领域,如图书检索和人事管理。2.2一个简单的算法示例,在示例2.1中,找到12345可以通过最原始的方法来完成:步骤1:首先找到1*2,然后得到结果2。步骤2:将步骤1中得到的乘积2乘以3,得到结果6。步骤3:6乘以4得到24。步骤4:24乘以5得到120。这是最后的结果。例2.1: 12345 1000,这太麻烦了;2.2:简单算法示例;改进算法:变量p为被乘数,。

4、变量I为乘数,用循环算法求出结果;2.2:简单的算法示例,S1:使p=1,或写1ps2:使i=2,或写2i S3:用I乘p,乘积仍放在变量p中,但除此之外,p的值是5!如果是1000,你想要什么?2.2一个简单的算法示例,S1:让p=1,或者写1ps2:让i=2,或者写2i S3:用I乘p,并且乘积仍然在变量p中,这可以表示为:p * ips4:将I的值加1,即i1is5:如果I不大于5,则返回重新执行S3;否则,p的值为5!1357911、3、3、2、11、11的值等于I11。在案例2.2中,有50名学生,要求输出学生人数和分数在80分以上的学生。将第一名学生的学号用ni表示,将第一名学生的。

5、成绩用gi表示S1:1 S2:如果gi80,则输出ni和gi;否则,不输出S3:1 S4:如果i50,返回步骤S2并继续执行;否则,算法结束。例2.3确定2000-2500年的每一年是否是闰年,并输出结果。闰年的条件:(1)被4整除但不能被100整除的年份都是闰年,如2008年、2012年和2048年;(2)可被400整除的年份是闰年;如果2000年不符合这两个条件,它就不是闰年,如2009年和2100年,所以年份是要测试的年份。该算法表示如下:S1:2000年2:如果年不能被4整除,则输出年的值和“非闰年”。然后到S6 S3:如果年可被4整除,但不能被100整除,则输出年的值,“是闰年”。然。

6、后转到S6 S4:如果年可以被400整除,输出年和“闰年”的值,然后转到S6 S5:输出年和“非闰年”的值,在其他情况下S6:第1年S7:当年2500时,转到S2,否则停止,年不能被4整除,不是闰年,年,闰年,年可以被100整除,可以被400整除。闰年,其他人,非闰年,逐渐缩小判断范围。例2.4寻找规则:第一项的分子分母是1 第二项的分母是2,未来每项的分母是前一项的分母加1 第二项前的运算符是后一项前的“-”。示例2.4查找S1:符号=1s2: sum=1s3: deno=2s4:符号=(-1) *符号5:项=符号* (1/deno) S6: sum=sum项S7: deno=deno1s8。

7、:如果deno100,返回S4;否则,算法结束,符号-当前项-符号-当前值总和-当前和分母-当前分母,-1,-1/2,1-1/2,3,满足,返回到s4,在示例2.4中,找到S1:符号=1s2:总和=1s3:分母=2s4:符号=(-)否则,算法结束,符号-当前项符号-当前项值总和-当前项总和分母-当前项分母,1,1/3,1-1/2 1/3,4,满足,返回到S4否则,算法结束,99个周期后的和的值是所需的结果。例2.5给出一个大于或等于3的正整数来判断它是否是质数。素数是指除了1和数字本身之外,不能被任何其他整数整除的数。例如,13是一个质数,因为它不能被2,3,4,12整除。判断一个数n(n3)。

8、是否是素数:依次取n为被除数,取2到(n-1)之间的每一个整数为除数。如果它们都不能被整除,那么n就是质数S1。输入N的值S2: I=2 (I为除数)S3: N除以I得到余数r S4。如果r=0,表示n可以除以,否则,执行S5:I1 S6:如果in-1,返回S3;否则,输出n 是一个质数,然后结束。如何表示一个算法可以改为n/2,2.4。常用的方法有:传统流程图结构的流程图伪码,2.4如何表示算法,2.4.2算法的三种基本结构2.4.3和改进的流程图2.4.4用N-S流程图表示算法2.4.5用伪码表示算法2.4 2.4.2算法用流程图表示。流程图是用一些图形框来表示各种操作算法,直观易懂,起始。

9、和结束框,输入和输出框,处理框,判断框,流程线,连接点,注释框,x0,y,n,嘿。流程图使用一些图片框架来表示各种操作。图形表示算法直观易懂。起始和结束框、输入和输出框、处理框、判断框、流线、连接点、注释框、位置不够。12345.如果您需要输出最终结果:1t,i5,start,2i,t * it,1i,end,N,Y,示例2.6。用流程图显示示例2.1的算法。12345如果需要,输出:1t的最终结果,输出t,i5,start,2i,t * it,1i,end,n,y,示例2.7,以及示例2.2的算法。有50名学生被要求输出成绩在80分以上的学生人数和年级。1i,i50,start,i1i,en。

10、d,N,Y,input ni,gi,1i,start,gi80,output ni,gi,i1i,i50,N,Y,Y,N,如果包括输入数据部分,1i,i50,start,确定从2000年到2500年的每一年是否是闰年,并输出结果。例2.9例2.4的算法由流程图表示。1 sum 2 deno 1 sign,(-1)* sign sign *(1/deno)term sum term um deno 1 deno,n,y,例2.10,例2.5,用于判断素数的算法在流程图中示出。对于大于或等于3的正整数,判断它是否是质数。n,y,2i,n% IR,1i,y,n,从上面的例子中,可以看出流程图是一个很。

11、好的表达算法的工具。流程图包括以下几个部分:(1)代表相应操作的方框(2)带有箭头的流程线(3)方框内外必要的词语解释流程线。别忘了画箭头,否则很难判断每个盒子的执行顺序。2.4.3三个基本结构和改进的流程图,1。传统流程图的缺点。传统的流程图使用流程线来指出每一帧的执行顺序。对流线的使用没有严格的限制。2.4.3三个基本结构和改进后的流程,用户可以不受限制地自由转动流程,这使得人们很难理解算法的逻辑(例如,在判断闰年的算法中,它涉及多个判断和多个流程转移)。2.三个基本结构(1)顺序结构,A,B,2.4.3和改进的流程图,2。三个基本结构(2)选择结构,A,B,Y,N,A,Y,N,例2.8判。

12、断闰年例2.7判断结果,2.4.3三个基本结构和0x,1x1,输出1,2,3,4,5,2.4.3,和改进的流程图;2.三个基本结构(3)循环结构最新的循环结构,A,Y,N,Y,0x,1x1,输出1,2,3,4,4也就是说,对于每一帧,应该有一条从入口到出口的路径。(4)结构中没有“无限循环”,它是由三个基本结构派生出来的:A,N,Y,B,它们是根据表达式P,A,B,P=P1,P=P2,M,N,该算法用N-S图表示。直到i5,1t,输出t,2i,t * it,1i,示例2.12,示例2.2的算法由N-S图表示。输出分数高于80分的50名学生的人数和分数。直到i50,1t,1i,1i,输入ni,g。

13、i,i 1i,直到i50,gi80,否,是,输出ni,gi,在示例2.13中,示例2.3中用于判断闰年的算法由N-S图表示,直到2500年,2000年,第1年。Year0不是0,year0是0,是,否,输出年非闰年,输出年闰年,输出年闰年。在示例2.14中,示例2.4的算法由N-S图表示。直到分母100,分母1,输出和,1sum,1sign,2deno,(-1) * signsign,sign * (1/deno)项,和termsum。在例2.15中,例2.5中判断素数的算法用N-S流程图表示。例2.10的流程图不是由三个基本结构组成,有两个出口,不符合基本结构的特征。它不能由南北流程图的三个。

14、基本结构的符号直接表示。首先,进行必要的转换,输入n,r=0,是,否,0w,2i,n% IR,1w,1i,直到I或w 0,w=0最后检查的类别,1。程序由数据结构和算法组成,其中数据组织描述数据类型和组织形式,算法描述数据的操作过程。2.传统的流程图方法描述了算法的步骤和特点。3.改进的流程图描述了算法(分为三种基本结构,即顺序、选择和循环),所有程序结构都由这三种组合组成。4.N-S图描述了算法,消除了流程线,并进一步改进了三个基本结构,形成了一个结构化的程序结构。结构化算法由一些基本结构按顺序组成。基本结构之间没有向前或向后的跳跃,流动的过渡只存在于基本结构内。一个非结构化算法可以被一个等。

15、价的结构化算法所代替,并且它的功能保持不变。如果一个算法不能分解成几个基本结构,它肯定不是一个结构化的算法。伪代码使用自然语言和计算机语言之间的字符和符号来描述算法。用伪代码编写算法没有固定和严格的语法规则,伪代码可以用英语编写,也可以用中英文混合编写。例如,2.16需要5!1 t2i当I 5 t * I ti1i打印t结束,例2.17查找开始sum deno设计当deno 100 (-1) *符号* 1/deno项sum deno 1deno打印结束,2.4.6要用计算机语言表示算法,需要完成一项任务,包括设计算法和实现算法。设计算法的目的是实现算法。我们不仅要考虑如何设计算法,还要考虑如何实现算法。例2.18将例2.16表示的算法(对于5!)用c语言表达。#include int main() int。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值