C语言编程-函数常见例题参考资料.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
31 void main( ) {int m; long f; 潤?牰湩晴尨 输入 m (m0):); scanf(%d,m); } while(m=0); f=fact(m); printf(%d!=%ld\n, m, f); } #include stdio.h long fact(int n) { if(n==0 || n==1) return 1; else return (n*fact(n-1)); } 32 该程序中,主函数调用了 fact 函数,而在 fact 函数 中又调用了自身 fact 函数。程序执行流程如图所示: 从图中可以看出, fact 函数每自我调用一次就进入新的 一层,递归函数和变量都在内存新的空间开辟。 33 6.4 Fibonacci 数列 6.3.1 程序解析 [ 例 6-10] 用递归方法编程输出 Fibonacci 数列的任一项,同时 打出计算 Fibonacci 数列某一项时所需的递归调用次数。 [ 分析 ] : – F1=F2=1,(n=1 或 2 ) – Fn=Fn-1+Fn-2 ( n=3) – 定义 fib(int n) 函数,递归次数通过 全局变量 count 返回 34 #includestdio.h int count=0; // 全局变量 int fib(int n) { int f; count++; if(n==1||n==2) f=1; else f=fib(n-1)+fib(n-2); return f; } void main( ) { int n,x; printf(please input n: ); scanf(%d, n); x=fib(n); printf(Fib(%d)=%d,count= %d\n,n,x,count); } 35 6.4.2 变量的作用域 作用域是指 变量的有效范围 , 通常分为局 部 变量和全局变量 两类 。 1. 局部变量 局部变量 : 函数的形参、函数内部定义的变量和复合 语句内定义的变量。 作用域 :仅限于函数内或复合语句内。 注: ? 在不同函数内可以定义同名的局部变量,同名变量间不会冲突。 ? 局部变量在被调用时,才临时分配内存,调用结束立即释放。 ? 若变量名相同,则局部变量比全局变量优先。 36 【例 6-11 】复合语句中的局部变量 #include stdio.h main() { int t=10; { int t=20; printf(in:%d\n,t); } printf(out:%d\n,t); } 37 全局变量 : 在所有函数 ( 包括 main 函数 ) 之外定义的变量,又叫 外部变量。 作用域 : 从定义开始到本程序文件结束,默认初值为 0 。 2. 全局变量 注: ? 全局和局部变量同名时,在局部变量有效的范围内,全局变量 不起作用。 ? 全局变量的定义必须在所有函数之外,且只能定义一次。其一 般形式为: 类型 变量名 1, 变量名 2, … , 变量名 n; ? 在编译时分配内存空间,系统自动赋 0 值 38 写出下面程序运行结果 #include stdio.h int a=5; main() { void funn(); int a=10; printf(: a=%d\n,a); { extern int a; printf(: a=%d\n,a); } funn(); } void funn() { printf(: a=%d\n,a); } 39 变量的存储方式(生存期) 是指变量使用内存空间的方式, 分为“动态存储”和“静态存储”两种。 动态存储 :用时分配,用完释放。(局部变量) 静态存储: 编译时分配,整个程序结束时释放。(全局变量) 生存期和作用域 是从时间和空间两个不同的方面描述变量的 特性两者既有关联,又有区别。变量的存储类型决定了变量的 生存期和作用域。 6.4.3 变量的存储属性 40 存储属性 动态存储 静态存储 存储类型 register( 寄 存器 ) auto( 自动 ) static( 静 态 ) extern( 外 部 ) 存储位置 寄存器 主 内 存 生存期 动态生存期 永久生存期 作用域 局 部 局部或全局 全 局 41 1. 自动类型 在函数内部定义的变量 ( 以前所用的变量、形参 ) [auto] 类型 变量名 1, 变量名 2, … , 变量名 n; ? 自动变量属于动态存储方式,用时分配,用完释放。 ? 自动变量为局部变量,只在定义的函数或复合语句 中起作用。 6.4.3 变量的存储属性 42 2.

文档评论(0)

jinzhuang + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档