- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 函数与程序结构 内容提要 函数定义、函数调用、函数原型、函数返回值 难点:函数的参数传递与返回值 全局变量、自动变量、静态变量、寄存器变量 难点:变量的作用域与存储类型 结构设计与模块化 代码风格问题 程序设计的艺术 程序设计方式 A.诸葛亮型的主函数 1986年IBM在OS/360的研究结果:大多数有错误的函数都大于500行 B. 功能单一,规模较小的若干个函数各司其职 1991年对148,000行代码的研究表明:小于143行的函数比更长的函数更容易维护 程序设计的艺术 《三国演义》中有这样一段描写: 懿问曰:“孔明寝食及事之烦简若何?”使者曰:“丞相夙兴夜寐,罚二十以上皆亲览焉。所啖之食,日不过数升。”懿顾谓诸将曰:“孔明食少事烦,其能久乎?” 此话音落不久,诸葛亮果然病故于五丈原。 “事无巨细”,“事必躬亲” 管理学的观点是极其排斥这种做法的,认为工作必须分工,各司其职 其中的思想,在程序设计里也适用 程序设计的艺术 结构化程序设计有两大最高级的艺术 算法设计艺术 结构设计艺术 C语言为程序的结构提供了两样武器 函数和模块 函数(function)是结构设计的最基本单位 “一个程序应该是轻灵自由的,它的子过程就象串在一根线上的珍珠。” Geoffrey James的《编程之道》 数学函数(1) 数学函数(2) 数学函数(3) 数学函数(4) 数学函数(5) 程序设计中的函数 程序设计中的函数不局限于计算 计算类,如打印阶乘表的程序…… 判断推理类,如排序、查找…… 用函数解决问题的要点 分而治之 函数把较大的任务分解成若干个较小的任务,并提炼出公用任务 复用 程序员可以在其他函数的基础上构造程序,而不需要从头做起 信息隐藏 设计得当的函数可以把具体操作细节对程序中不需要知道它们的那些部分隐藏掉,从而使整个程序结构清楚 C中的函数(Function) 说明: 一个源程序文件由一个或多个函数组成。 C程序的执行从main函数开始,调用其他函数后流程回到main函数,在main函数中结束整个程序运行。 所有函数都是平行的,即函数定义时是互相独立的,一个函数并不从属于另一个函数。 例2.1:一个简单的C程序例子 #include stdio.h /*函数功能:计算两个整数相加之和 入口参数:整型数据a和b 返回值: 整型数a和b之和 */ int Add(int a, int b) { return (a + b); } /*主函数*/ main() { int x, y, sum = 0; printf(Input two integers:); scanf(%d%d, x, y); /*输入两个整型数x和y*/ sum = Add(x, y); /*调用函数Add计算x和y相加之和*/ printf(sum = %d\n, sum); /*输出x和y相加之和*/ } 函数的分类 标准函数,即库函数 用户自定义函数 函数定义(definition) 返回值类型 函数名(类型 参数1, 类型 参数2, …… ){ 函数体 return 表达式;} 如果没有参数,则应该用void注明 函数的返回值只有一个 如果不需要返回值,则应该用void定义返回值类型 返回值类型与return语句配合 当函数执行到return语句时,就中止函数的执行,返回到调用它的地方 函数内部可以定义只能自己使用的变量,称内部变量。 参数表里的变量也是内部变量 函数参数 函数参数: 形参( 形式参数 ): 在定义函数时,定义函数名后面括号中的变量名 实参( 实际参数 ): 在主调函数中调用一个函数,调用函数名后面括号中的参数(或表达式) 实参的数量必须与形参相等,对应的类型必须匹配; 实参与形参有各自的存储空间,所以形参值的改变不会影响实参; 参数的类型没有限制,也可以定义没有参数的函数; 函数调用(call) 从实参到形参是单向值传递 调用函数时,必须提供所有的参数(且必须是已赋值的) 特例,printf和scanf是采用变长变量表定义的函数,所以变量的个数不固定。 提供的参数个数、类型、顺序应与定义时相同 例5.1a 计算两个整数的平均数 /* 函数功能: 计算平均数 函数入口参数: 整型x,存储第一个运算数 整型y,存储第二个运算数 函数返回值: 平均数 */ int Average(int x, int y) { int result; result = (x + y) / 2; return resul
文档评论(0)