ch7函数进阶和结构化编程精选.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文档。上传文档
查看更多
第 7 章 函数进阶和结构化编程 7.1 结构化编程 结构化程序设计 Structured Programming 是一种良好的程序设计技术,它由著名计算机科学家E·W·Dijkstra于1969年提出 7.1.1 自顶向下分析问题 自顶向下分析问题就是把一个较大的复杂问题分解成几个小问题后再解决。 7.1.2 模块化设计 模块化设计时要遵循模块独立性的原则,即模块之间的联系应该尽量简单。具体体现在: 1.一个模块只完成一个指定的功能 2.一个模块只有一个入口和一个出口 3.模块间通过参数进行调用 4.模块内慎用全局变量 在C语言中,模块一般通过函数来实现,一个模块对应一个函数。 7.1.3 结构化编码 经模块化设计后,每个模块都可以独立编码。编程时应选用顺序、选择和循环3种控制结构,并使程序具有良好的风格。 1.见名知义命名对象名 2.使用注释 3.使程序结构清晰 4.使程序具有良好的交互性 7.2 函数的嵌套调用 例:求组合数。 float fac int n int i; float f 1; for i 2;i n;i++ f* i; return f; float cmn int m,int n float res; res fac m / fac n *fac m-n ; return res; 7.4 递归调用 7.4.1 递归函数的执行过程 如果函数直接或间接地对自己进行调用,称函数是递归函数,这种调用过程称为递归调用。 例: 计算前n个正整数之和。 main printf %d,sum 4 ; int sum int n if n 1 return n; else return n+sum n-1 ; 7.4.2 递归问题求解 例1:有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁;问第4个人多少岁?他说比第3个人大2岁;问第3个人多少岁?他说比第2个人大2岁;问第2个人多少岁?他说比第1个人大2岁;问第1个人,他说是10岁。请问第5个人多大? 分析: age 5 age 4 +2 ………… age 2 age 1 +2 age 1 10 用公式表述如下: 10 n 1 age n age n-1 +2 n 1 int age int n int c ; if n 1 c 10; else c age n-1 +2; return c ; main printf %d,age 5 ; 例2:求Fibonacci数列的第40个数。Fibonacci数列有如下特点:第1、第2个数均为1,从第3个数开始的每一个数均是其前两个数之和。 分析:递归公式表示 1 n 1,2 Fn Fn-1+Fn-2 n≥3 long fib int t long int c; if t 1||t 2 c 1; else c fib t-1 +fib t-2 ; return c; void main printf %10ld,fib 40 ; 7.5 编译预处理 7.5.1 预处理的概念 7.5.2 宏定义 宏:代表一个字符串的标识符; 宏代换(宏展开):在编译预处理时,对程序中所有的“宏”,用宏定义中的字符串去代换的过程。 说明: 1.宏名习惯上用大写字母; 2.宏定义不是说明或语句,不作语法检查; 3.宏名的作用域一般自定义起到本源程序结束; 可用#undef 结束。 4.宏定义允许嵌套;如: #define PI 3.1415926 #define S PI*y*y … printf “%f”, S ; … 5.宏名在源程序中若用引号括起来,则TC中预处理不对其作宏代换;如: printf “PI\n” ; 二、有参宏 格式: #define 宏名 参数1,…,参数n 字符串 如: #define S a, b a*b … area S 3, 2 ; … 例:利用宏定义求两个数中的大数。 #define MAX a, b a b ?a:b main int x, y, max; scanf “%d %d”,x,y ; max MAX x,y ; printf “max %d\n”,max ; 例: #define PI 3.1415926 #define S r PI*r*r main float a, area; a 3.6; area S a ; printf “r %f\narea %f\n”,a, area ; 7.5.3 文件包含 一般形式: #include

文档评论(0)

贪玩蓝月 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档