编程技能训练与等级考试 PPT 第8章 函数.pptVIP

编程技能训练与等级考试 PPT 第8章 函数.ppt

  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文档。上传文档
查看更多
* §8.4 函数的调用 3.对被调函数的声明和函数原形 主调函数调用被调函数的条件: 被调函数必须已存在; 调用库函数时,一般要在文件开头进行“文件包含处理”:#include 头文件 ; 函数的声明: 在同一个文件中,被调函数在主调函数之后出现,则需要在主调函数中对被调函数进行声明 例8.5:对被调的函数作声明 原形函数:在声明函数时不写明形参 例如例8.5中 float add(float,float); // float add( ); 也对 被调函数在主调函数之前可以不用声明; 如果在所有函数定义之外声明函数,则在被调函数中不必声明. int exchange(int x,int y ) { int z; {z=x; x=y; y=z; printf(“%d,%d\n”,x,y);} } main( ) {int a,b; scanf(“%d,%d”,a,b); exchange(a,b); printf(“%d,%d\n”,a,b); } // 不用声明 char letter(char,char); float f(float,float); int i(double,double); main( ) {……} char letter(char c1,char c2); {……} float f(float f1,float f2); {……} int i(double d1,double d2); {……} // 不用声明 §8.5 函数的嵌套调用 函数调用方式: 递归调用 嵌套调用 规定:C语言不能嵌套定义函数,但可以嵌套调用函数。 在调用一个函数的过程中又要调用其它函数,称为函数的嵌套调用。 一般来说,被调函数在前,主调函数在后(减少对被调函数的类型说明)。 例8.6:用弦截法求方程的根 嵌套调用形式: f3(…) {……} f2(…) {…f3( ) …} f1(…) {…f2( ) …} main() {…f1( ) …} §8.6 函数的递归调用 概念 在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。 例8.7:递归求年龄 例8.9:Hanoi塔问题 直接调用 源程序: int f(int x) {int y, z; scanf(“%d”,y); z=f(y); return(2*z); } f(x) f(y) 主调函数 return 2*z 间接调用 源程序: int f1(int x) {int y, z; scanf(“%d”,y); z=f2(y); return(2*z); } int f2(int a) {int b; b=f1(2*a); return(b); } f1(x) f2(a) 主调函数 return 2*z y 2a 直接调用 源程序: int f(int x) {int y, z; scanf(“%d”,y); z=f(y); return(2*z); } f(x) f(y) 主调函数 return 2*z 循环 间接调用 源程序: int f1(int x) {int y, z; scanf(“%d”,y); z=f2(y); return(2*z); } int f2(int a) {int b; b=f1(2*a); return(b); } f1(x) f2(a) 主调函数 return 2*z 循环 y 2a if (递归结束条件) return (递归结束条件中的返回值) else return (递归计算公式) 递归控制 递归计算公式 递归结束条件 源程序 思考 1.n值过大如何? 2.n为负数时如何不带回返回值? 例:计算n! 递归计算公式:p(n)=n*p(n-1) 递归结束条件:p(0)=p(1)=1 §8.7 数组作为函数参数 1.数组元素作函数实参 例8.10:比较数组大小 2.数组名作为函数参数 例8.11:处理数组元素 8.13:选择法排序 说明: 用数组名作为函数参数,应该在主调函数与被调函数中分别定义数组; 实参数组与形参数组类型应一致; 在调用函数时,只是将实

文档评论(0)

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

大部分文档都有全套资料,如需打包优惠下载,请留言联系。 所有资料均来源于互联网公开下载资源,如有侵权,请联系管理员及时删除。

1亿VIP精品文档

相关文档