2014年C语言从入门到精通,非常不错的课件第6章.pptVIP

2014年C语言从入门到精通,非常不错的课件第6章.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6.1模块化程序设计与函数 在设计较复杂的程序时,我们一般采用的方法是:把问题分成几个部分,每部分又可分成更细的若干小部分,逐步细化,直至分解成很容易求解的小问题。这样的话,原来问题的解就可以用这些小问题来表示。 6.1.1 模块与函数 C语言程序由基本语句和函数组成,每个函数可完成相对独立的任务,依一定的规则调用这些函数,就组成了解决某个特定问题的程序。 6.1.2模块设计的原则 设计算法:找出a,b两数中的较大者,并输出 分析: 这个问题分三个步骤: 输入两个数; 找出其中的大数; 输出大数。 6.2 函数的定义与调用 在C语言中,函数(Function)是一个处理过程,可以进行数值运算、信息处理、控制决策,即一段程序的工作放在函数中进行,函数结束时可以携带或不带处理结果。 库函数(标准函数):系统提供 自定义函数:用户自己写 “函数”的主要知识点 函数的定义 函数的参数和返回值 函数的调用 嵌套和递归 变量的作用域 6.2.1 标准库函数 C语言有丰富的库函数,这些函数的说明在不同的头文件(*.h)中。 6.2.2 函数的定义 自定义函数的声明 求1!+2!+3!+…+10! 算法:i =1; s=0; 当 i = 10 s=s+ i! 定义求 i! 的函数 函数的参数 int max(int a,int b) { ? int y; ? y=(ab)? a:b; ? return y; ?????????????? } 形式参数与实际参数的关系 形式参数在函数中是变量名,在函数调用时,形参被分配相应的内存。 实际参数是表达式负责向对应的形参标识的内存单元传递数据。 实参与形参必须个数相同。 对应的形参和实参的类型必须一致。  函数返回值 函数返回值通过return语句获得 函数返回值的类型就是函数的类型 ? return y;? 将变量y的值返回给调用者? return y+3;? 将表达式的值返回给调用者 return 的数据类型与函数的类型矛盾时,自动将数据转换成函数的类型 函数没有返回值, 函数定义成空类型 void putline() ?? { int i; ???? for (i=0;i35;i++) ????? printf(-); ???? printf(\n); ?? } 调用函数 6.3 函数的递归调用 例:递归方法求n! 第1个月有1对兔子 过2个月,兔子就可每个月生1对兔子 问第n个月有多少对兔子? 分析: 设第n个月有f(n)对兔子 根据题意有 f(1)=1, f(2)=1 f(n)= f(n-1) + f(n-2) f(n-1): 前一个月的兔子数 f(n-2): 本月生的兔子数 定义函数f(n) long f(int n ) { switch (n ) { case 1: return 1; case 2: return 1; default: return f(n-1) + f(n-2); /*调用函数f(n) */ } } 辗转相除法求最大公约数 求 m和 n 的公约数算法 if (m % n) == 0 n 是公约数; else 求 n 和 m % n 的公约数; 求最大公约数的主函数 void main() { int m,n,t; int gcd(int m, int n); scanf(“%d %d”,m,n); if (mn) {t=a; a=b; b=t; } t= gcd( m, n); /*调用函数gcd( m, n); */ print(“\n gcd=%d”,t); } 汉诺塔 问题可分为三个步骤 递归方法解汉诺塔 递归汉诺塔步骤 递归汉诺塔步骤 6.4 变量的作用域与存储方式 先看一个例子,错在那里?: void f1( ) { int t=2; a *= t; b /= t; } main() { int a, b; printf(“ Enter a,b:”); scanf(“%d,%d”, a, b); f1( ); /* 调用函数f1( ) */ printf (“a=%d,b=%d”, a, b); } 变量的作用域即变量的有效范围 1.变量按

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档