C语言程序设计 李晓东 庞岩梅 娄嘉鹏 第3章新.pptVIP

C语言程序设计 李晓东 庞岩梅 娄嘉鹏 第3章新.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.1 编写一个判断任意给定数是否为素数的程序 对于复杂的问题,思路和步骤才是关键 考虑下面的问题:如何判断一个数是否是素数? 3.1 编写一个判断任意给定数是否为素数的程序 对于复杂的问题,不能直接映射为程序,而是首先思考问题的解决思路,思考这个问题手工如何去解,手工步骤出来了,得到最终程序只是一个把步骤映射为程序的问题。 3.1 编写一个判断任意给定数是否为素数的程序 具体的做法是: (1)寻找思路使得问题可解; (2)由思路获得手工求解的步骤(应选择典型输入进行手工求解验证); (3)把手工步骤映射为自动执行的程序。 3.1 编写一个判断任意给定数是否为素数的程序 3.1.1 思路和步骤 3.1.2 C语言代码 3.1.1 思路和步骤 问题:如何判断一个数是否是素数? 思路:对于输入的整数n,可以计算它除以1到n的余数,如果有且只有两次余数为0,则为素数,否则不是素数。 3.1.1 思路和步骤 手工求解的步骤是什么呢? 对于输入的数n,让n除以1,若余数为0,则计数器加1;让n除以2,若余数为0,则计数器加1;直到让n除以n,若余数为0,则计数器加1。总共用n次除法,即n个步骤就能够解决。 3.1.1 思路和步骤 是不是对每个数都能保证经过这些步骤得到正确答案呢? 如果n为负数呢? 如果n为0、1按照上述步骤又怎样呢? 还有其他情况吗?没有了 。 3.1.1 思路和步骤 最终步骤为: (1)判断输入的数,若为负数,输出“应输入非负整数”,结束; (2)n依次除以1到n,若余数为0则计数器加1; (3)若计数器为2,则输出“素数”,否则输出“非素数”; (4)结束; 3.1.2 C语言代码 经过映射,可以得到下面的代码: #include stdio.h void main() { int n,i,c; printf(“input a integer:\n”); scanf(“%d”,n); if(n0) { printf(“应输入非负整数\n”); return; } for(i=1,c=0;i=n;i++) if(n%i==0) c++; if(c==2) printf(“素数\n”); else printf(“非素数\n”); } 3.2 算法的概念 3.2.1 什么是算法 3.2.2 算法的描述 3.2.1 什么是算法 算法(Algorithm)简单地说,就是步骤的序列,也就是有后继关系的步骤的集合。如果每一个步骤被看作一个节点,那算法就可以看作是一个有向图。 3.2.1 什么是算法 一个算法应该具有以下五个基本的特征: 输入 输出 确切性 可行性 有穷性 3.2.1 什么是算法 对于一个问题来说,满足上述5个基本特征的能够解决该问题的步骤序列都是这个问题的算法,所以一个问题的求解算法可以有许多个。 好的算法应该速度快,耗费的资源少,反之则是不好的算法。 3.2.1 什么是算法 在算法方面,基本的能力是: 如何找出一个问题的算法 如何对算法进行优化(分析算法的好坏,通过优化,获得优良的算法)。 3.2.2 算法的描述 算法常用的描述方式有: 自然语言 伪代码 流程图 N-S图 3.2.2 算法的描述 1.自然语言 自然语言就是用人们日常使用的语言描述解决问题的方法和步骤. 通俗易懂,但在语法和语义上往往具有多义性,并且比较烦琐,对程序流向等描述不明了、不直观。 前面描述判断一个数是否为素数的算法就使用的是这种方式。 3.2.2 算法的描述 2. 伪代码 伪代码是介于自然语言和计算机语言之间的文字和符号,它与一些高级编程语言(如Visual Basic和Visual C++)类似,但是不需要真正编写程序时所要遵循的严格规则。 伪代码用一种从顶到底,易于阅读的方式表示算法。 在程序开发期间,伪代码经常用于“规划”一个程序,然后再转换成程序。 用伪代码描述判断一个数是否为素数的算法 printf(“input a integer:”) scanf(“%d”,n) if(n0){ printf(“应输入非负整数”) return } 计数器c=0 对于从1到n的数i if(i是n的因子) c++; if(c==2) printf(“素数”) else printf(“非素数”) return 3.2.2 算法的描述 3. 流程图 流程图使用不同的几何图形来表示不同性质的操作,使用流程线来表示算法的执行方向。 比起前两种描述方式,具有直观形象、逻辑清楚、易于理解等特点,但它占用篇幅较大,流程随意转向,较大的流程图不易读懂。 3.2.2 算法的描述 流程图符号及说明 判断一个数是否为素数的算法流

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档