网站大量收购独家精品文档,联系QQ:2885784924

c语言第3章程序的简单算法设计(修改).ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言第3章程序的简单算法设计(修改)

程序=数据结构+算法+程序设计方法+语言工具和环境 数据结构: 一个程序至少应包括对数据的描述和对操作的描述两个部分,其中对数据的描述就是指在程序中要指定数据的类型和数据的组织形式,这就是数据结构。 算法: 对操作的描述就是对解决问题的操作步骤的描述,即所谓的算法。算法是程序的灵魂。 一个程序除了数据结构和算法外,还与具体的程序设计环境和语言工具有关。必须使用一种计算机语言,像BASIC(True basic、Qbasic、Virtual Basic)语言、 C语言、 PASCAL语言、FORTRAN 语言等都是计算机语言。 本书将具体介绍C语言环境下数据结构的定义与算法的实现。 【例2】:求1×2×3×4×5的值 原始解题步骤: 步骤1:先求1×2,得到1×2的结果:2 步骤2:将步骤1的结果乘以3,得到1×2×3的结果:6 步骤3:将步骤2的结果乘以4,得到1×2×3×4的结果:24 步骤4:将步骤3的结果乘以5,得到1×2×3×4×5的结果:120 用计算机算法表示: 步骤1:使k=1 步骤2:使w=2 步骤3:k=k×w,结果仍放在k中 步骤4:使w的值加1(w+1→w), 步骤5:如果w的值不大于5,再返回执行步骤3、步骤4;否则结束 最后得到1×2×3×4×5的结果:120 【例3】:判定2000~2500年之间的每一年是否为闰年,并输出该年是否为闰年的信息。 闰年条件: (1)年份能被4整除,但不能被100整除 (2)年份能被100整除,同时也能被400整除 设year为被检测的年份,算法可表示如下: s1:2000 →year s2:若year不能被4整除,则输出“year不是闰年”,然后转到s6; s3:若year能被4整除但不能被100整除,则输出“year是闰年”,然后转到s6; S4:若year能被100整除又能被400整除,则输出“year是闰年”,否则输出“year不是闰年”,然后转到s6; s5:输出“year不是闰年” S6:year+1 → year S7:当year≤2500时,返回s2继续执行,否则结果 1.2算法的特性 有穷性:无论算法有多么复杂,都必须在有限步之后结束并终止运行,即算法的步骤必须是有限的。在任何情况下,算法都不能陷入无限循环中。 确定性:算法中的每一条指令必须有确切的含义,每个步骤都有确定的执行顺序,即上一步在哪里,下一步是什么,都必须明确,无二义性。 可行性:算法首先必须是正确的,都是能够精确地执行的。对于任意的一组输入,包括合理的输入与不合理的输入,总能得到预期的输出。如果一个算法只是对合理的输入才能得到预期的输出,而在异常情况下却无法预料输出的结果,那么它就不是正确的。 输入:一个算法有零个或多个输入,这些输入的信息有的是在执行过程中输入,而有的已被嵌入到算法之中。 输出: 一个算法之中可以有一个或多个输出。没有输出结果的算法是没有任何意义的。 一个问题的解决方案可以有多种表达方式,但只有满足以上5个条件的解才能称之为算法。 3.4 顺序结构程序设计 所谓顺序结构就是按照程序中语句出现的先后次序执行各条语句。即按书写顺序依次执行的算法结构,它是构成算法的最基本的结构。 程序结构最终均归结为顺序结构。 【例】求一元二次方程ax+bx+c=0的根。 分析: 本题要求首先从键盘输入一元二次方程的三个系数a,b,c的值。为方便,假设输入的a,b,c作为一元二次方程的三个系数能满足一元二次方程有二个实根的条件,即b-4ac0,这样一来就不用去判别该一元二次方程是否有实根了。 #include stdio.h #include math.h main() { float a,b,c,disc,x1,x2,p,q; scanf(a=%f,b=%f,c=%f,a,b,c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf(\nx1=%5.2f\nx2=%5.2f\n,x1,x2); } 【例】输入一个三位数,依次输出该数的正号或负号、百位、十位、个位数字。 #include math.h main( ) { char c1,c2,c3,c4; int x; scanf(%d,x); /*输入1个3位数的整数*/ if(x=0) c4=+;else c4=-; x=abs(x); c3=x%10+48; /*x%10获得个位数字后加48转换成对应字符*/

文档评论(0)

yan666888 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档