C语言程序设计教程张永第6章节幻灯片.pptVIP

C语言程序设计教程张永第6章节幻灯片.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文档。上传文档
查看更多
C语言程序设计教程 主编 张永 胡敏 中国水利水电出版社 第 6章 函数 主要内容 6.1 函数的定义和返回值 6.2 函数的调用 6.3 变量的作用域与生存期 6.4.4 外部变量传递方式 外部变量的传递方式也是和传递参数无关的一种方式,它利用了外部变量作用域覆盖主调函数和被调函数,在主调函数和被调函数之间任意传递数据。但是要注意,过多地使用外部变量会降低各个函数的独立性,是结构化程序设计所不提倡的,并且由于很多函数可以对外部变量进行操作,导致程序容易出错。 【例6-12】外部变量传递方式举例。 #includestdio.h int c; void sum(int x,int y) { c=x+y; printf(the first result is %d\n,c ); } main() { int a=2,b=2; sum(a,b); a=4; c=c+a; printf(the second result is %d,c); } 运行结果为: the first result is 4 the second result is 8 6.4.5 数组名作为函数参数的调用 【例6-13】数组名作为函数参数调用举例。求一个10人的实验小组的平均成绩。 #includestdio.h float average(float array[10]) { int i; float aver,sum=0; for(i=0;i10;i++) sum=sum+array[i]; aver=sum/10; return aver; } main() { float aver,grade[10]; int i; printf(please input the grades:); for(i=0;i10;i++) scanf(%f,grade[i]); aver=average(grade); printf(the average grade is %f,aver); } 6.5 嵌套调用与递归调用 6.5.1 嵌套调用 调用a函数 结束 调用b函数 返回 返回 main函数 a函数 b函数 计算12+22+32+…+n2的值。 #includestdio.h long square(long a) { long b; b=a*a; return b; } long sum(long n) { long c=0,d,i; for(i=1;i=n;i++) { d=square(i); c=c+d; } return c; } main() { long result,n; printf(please input n:); scanf(%d,n); result=sum(n); printf(the result is %d,result); } 6.5.2 递归调用 一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。C语言允许函数的递归调用。在递归调用中,主调函数又是被调函数。执行递归函数将反复调用其自身。每调用一次就进入新的一层。例如有函数f如下: int f (int x) { int y; z=f(y); return z; } 这个函数是一个递归函数。但是运行该函数将无休止地调用其自身,这当然是不正确的。为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段。常用的办法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。 汉诺塔问题。 一块板上从左到右有三根针:A,B,C。A针上套有n个大小不等的圆盘,大的在下,小的在上。要把这n个圆盘从A针移动到C针上,每次只能移动一个圆盘,移动可以借助B针进行。但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。求移动的步骤。 算法设计: 如果n=1,则将圆盘从A直接移动到C。 如果n=2,则: (1)将A上的n-1(等于1)个圆盘移到B上; (2)再将A上的一个圆盘移到C上; (3)最后将B上的n-1(等于1)个圆盘移到C上。 如果n=3,则: (1)将A上的n-1(等于2,令其为n1)个圆盘移到B(借助于C)。步骤如下: ① 将A上的n1-1(等于1)个圆盘移到C上; ② 将A上的一个圆盘移到B; ③ 将C上的n1-1(等于1)个圆盘移到B。 (2)将A上的一个圆盘移到C。 (3)将B上的n-1(等于2,令其为n1)个圆盘移到C(借助A)。步骤如下: ① 将B上的n1-1(等于1)个圆盘移到A; ② 将B上的一个盘子移到C; ③ 将A上的n1-1(等于1)个圆盘移到C。 到此,

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档