第6 函数.pptVIP

  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文档。上传文档
查看更多
第6 函数

6.6 综 合 范 例 例8:编写程序,从键盘输入一个正整数number,通过函数int reverseDigits(int number)将number的数字反向返回。为简单起见, number的取值范围为1~9999。 例如:整数:4629,函数的返回值:9264; 整数:3027,函数的返回值:7203。 程序以输入?1作为结束。 分析:问题的核心是将数字number反向后,返回一个新的数reverse。 算法关键:分离number的每1位数字; 使number的最低位成为reverse的最高位。 6.6 综 合 范 例 函数int reverseDigits(int number) 的算法流程如图所示: 程序:example6_14.c 思考 是否还有其他算法? 6.6 综 合 范 例 例9:编写程序,求方程f(x)= ax2+bx+c 在某区间的定积分: 。为了程序的通用性,要求从键盘输入方程f(x)的系数a、b和c的值以及积分区间的上下限upper、lower的值。 分析:积分的结果为图(a)所示阴影部分的平面面积。 ?计算机求解时,是将积分区间分解成n个微小区间,如图(b)所示。 求出这n个小区间的面积之和,即为整个区域面积。 6.6 综 合 范 例 在图(b)中,第i个区间的面积为: (0≤i≤n?1) 式中的xi=lower+i×h。 ?设计积分的求和函数: double integrate(double lower,double upper) ?积分算法思想: ①确定区间的个数:n(区间的个数决定计算结果的精度)。 ②获得区间的宽度大小:h=(upper?lower)/n ③计算某个小区间的面积: s=h×(f(lower+i×h)+f(lower+(i+1)×h))/2 ④对s求和: ,结果即为该积分的近似值。 ?被积分函数f(x)= ax2+bx+c另外用模块单独生成。 ?程序:example6_15.c 6.6 综 合 范 例 1. 怎样控制积分计算的精度? 2. 是否还有其他算法? 思考 6.6 综 合 范 例 例10:由一个古老的传说演变成的汉诺塔游戏:有三根柱子A、B、C,在A柱上按大小依次放着n个中间有孔的盘子,如图(a)所示。 现在要将这n个盘子从A柱移到C柱上去,如图(b)所示。 移动过程中,可以借助于中间的B柱,规定每次只能移动一个盘子,且在盘子的移动过程中,大盘子只能在小盘子的下面,怎样才能够以最少的移动步骤来完成这个任务?请编写程序,给出完成汉诺塔游戏的移动步骤。 6.6 综 合 范 例 分析:采用递归算法,分3步进行。 ① 将A柱上的n?1个盘子移到B柱上;(与原始问题类似) ② 直接将A柱上最下面的那个盘子移到C柱上; ③ 将B柱上的n?1个盘子借助于A柱移到C柱。(原始问题简化) 算法: 程序:example6_16.c 思考: 1.函数HanoTower(n,A,B,C)的递归调用过程。 2.用非递归算法求解。 6.7 本 章 小 结 本章重要概念 1. 函数定义、函数申明、函数调用的方法。 2. 函数传值调用的作用。 3. 静态存储的意义和作用。 4. 递归函数的设计条件。 5. 宏处理。 本 章 习 题 一、单选题。 二、判断题。 三、填空题。 所有 四、阅读程序,写出运行结果。 五、程序填空题。 六、编程题。 【题6.37】 【题6.38】【题6.40】【题6.47】 (5) 用static声明外部变量   在定义外部变量时加一个static声明,则这些外部变量只能被本文件使用,而不能被其他文件引用。称为静态外部变量。 例3:设计一个函数:long fac(int n),用来计算正整数的阶乘,编写程序进行测试。 分析:由于计算机对变量的字节长度分配有限,整型变量的最大值是一定的,因此,目前计算整数的阶乘只能针对较小的整数。假定要计算1~5的阶乘。 ?算法的核心思想:对于任意正整数n,如果知道(n?1)!,则n!=n×(n?1)!。 可在函数中定义一个static型变量,用来保存每一次阶乘的计算结果。 局部变量 外部变量 存储类别 auto register 局部static 外部static 外部 存储方式 动态 静态 存储区 动态区 寄存器 静态存储区 生存期 函数调用开始至结束 程序整个运行期间 作用域 定义变量的函数或复合语句内 本文件 其它文件 赋初值 每次函数调用时 编译时赋初值,只赋一次 未

文档评论(0)

peili2018 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档