函数与变量作用域课件

上传人:我*** 文档编号:141132673 上传时间:2020-08-04 格式:PPT 页数:43 大小:3.34MB
返回 下载 相关 举报
函数与变量作用域课件_第1页
第1页 / 共43页
函数与变量作用域课件_第2页
第2页 / 共43页
函数与变量作用域课件_第3页
第3页 / 共43页
函数与变量作用域课件_第4页
第4页 / 共43页
函数与变量作用域课件_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《函数与变量作用域课件》由会员分享,可在线阅读,更多相关《函数与变量作用域课件(43页珍藏版)》请在金锄头文库上搜索。

1、Lesson 6使用函数封装代码,无参函数调用,main() printf(A); fun(); printf(B); ,void fun() printf(C); printf(D); ,A,C,D,B,main() int a = 3, b = 4, c; c = fun(a, b) printf(c=%d, c); ,70,有参函数,int fun(int x, int y) int z; z = x + y; return z; ,b,a,c,3,4,7,3,4,7,y,x,z,c=7,;,* 10;,0,参数传递原则,main() int a = 3, b = 4, c; c = f

2、un(a, b); printf(%d,%d,%d, a,b,c); ,int fun(int x, int y) int z = x + y; x+, y+; return z; ,b,a,c,3,4,7,3,4,7,y,x,z,3,4,7,单向值传递,4,5,实参和形参,main() int a = 3, b = 4, c; c = fun(a * 10, b * 10) + 100; printf(c = %d, c); ,int fun(int x, int y) int z; z = x + y; return z; ,c = 170,声明形参其它形式,int f(int x, in

3、t y) int z = x + y; return z; main() printf(%d, f(2,3); ,int f(x, y) int x, y; int z = x + y; return z; ,局部变量,main() int a = 3, b = 4, c; c = fun(a, b); printf(%d, c); ,int fun(int x, int y) int z = x + y; return z; ,= z = a + b;,= (%d, z);,局部变量同名,main() int a = 3, b = 4, c; c = fun(a, b); printf(%d

4、,%d,%d, a,b,c); ,int fun(int x, int y) int a = x + y; return a; ,b,a,c,3,4,7,3,4,7,y,x,a,3,4,7,参数传递7-1,2009.9.24以下程序的运行结果是 void fun(int p) int d = 2; p = d+; printf(%d, p); main() int a = 1; fun(a); printf(%dn, a); ,21,参数传递7-2,2006.9.25以下程序的运行结果是 fun(int x, int y) return x + y; main() int a = 1, b =

5、 2, c = 3, s; s = fun(a+, b+, a+b), c+); printf(%d, s); ,8,参数传递7-3,2009.3.24以下程序的运行结果是 int f(int x, int y) return (y - x) * x; main() int a = 3, b = 4, c = 5, d; d = f(f(a, b), f(a, c); printf(%dn, d); ,9,参数传递7-4,2004.9.28以下程序的运行结果是 int f(int a) return a / 2; main() int a6 = 1,3,5,2,0,7, i, s = 0; f

6、or (i = 0; ai; i+) s += f(ai); printf(%d, s); ,4,参数传递7-5,2005.9.12程序运行时输入:1234,程序输出结果是 int sub(int n) return (n / 10 + n % 10); main() int x, y; scanf(%d, ,10,参数传递7-6,2010.9.24以下程序的运行结果是 int f(int x) return x * 2; main() int n = 1, m; m = f(f(f(n); printf(%d, m); ,8,参数传递7-7,2005.4.26以下程序的运行结果是 int f

7、1(int x, int y) return xy?x:y; int f2(int x, int y) return xy?y:x; main() int a=4, b=3, c=5, d=2, e, f, g; e = f2(f1(a, b), f1(c, d); f = f1(f2(a, b), f2(c, d); g = a + b + c + d - e - f; printf(%d,%d,%dn, e, f, g); ,4,3,7,全局变量作用域,int w = 3; void fun() printf(%d, w); int p = 5; main() printf(%d, %d,

8、 w, p); int s = 7;,全局变量,int w = 0; void fun() w+; printf(3.w = %dn, w); main() w+; printf(1.w = %dn, w); fun(); printf(2.w = %dn, w); ,0,w,2,1.w = 1,1,3.w = 2,2.w = 2,变量作用域,int w = 0; void fun() w+; printf(w = %dn, w); main() int w = 5; w+; printf(w = %dn, w); fun(); printf(w = %dn, w); ,0,w,w = 6,1

9、,w = 1,w = 6,5,w,6,全局变量与局部变量,全局变量增加了函数间数据联系的渠道。,局部变量与全局变量同名时,优先使用局部变量。,除非迫不得已,否则尽可能不要使用全局变量。,变量作用域3-1,2007.4.8以下程序的运行结果是 int k = 0; void fun(int m) m += k; k += m; printf(%d,%d, m, k+); main() int i = 4; fun(i+); printf(%d,%dn, i, k); ,4,4,5,5,变量作用域3-2,2009.9.11以下程序的运行结果是 int a = 5; void fun(int b)

10、int a = 10; a += b; printf(%d, a); main() int c = 20; fun(c); a += c; printf(%dn, a); ,3025,变量作用域3-3,2006.9.42以下程序的运行结果是 void fun2(int a, int b) printf(%d%d, a, b); int a = 1, b = 2; void fun1() a = 3; b = 4; main() fun1(); printf(%d%d, a, b); fun2(5, 6); ,3456,阶乘,4!= 1234,main() printf(%d, f(4); ,函

11、数递归调用,int f(int n) if (n=1) return 1; return n * f(n-1); ,int f(int n) if (n=1) return 1; return n * f(n-1); ,int f(int n) if (n=1) return 1; return n * f(n-1); ,int f(int n) if (n=1) return 1; return n * f(n-1); ,4,3,2,1,4 *,3 *,2 *,1,2,6,24,main() f(3); ,void f(int n) if (n 0) printf(%d,n); f(n -

12、1); printf(%d,n); ,函数递归举例,void f(int n) if (n 0) printf(%d,n); f(n - 1); printf(%d,n); ,void f(int n) if (n 0) printf(%d,n); f(n - 1); printf(%d,n); ,void f(int n) if (n 0) printf(%d,n); f(n - 1); printf(%d,n); ,3,2,3,1,0,3,2,1,2,3,1,2,1,1,2,3,函数递归7-1,例以下程序的运行结果是 int f(int n) if (n = 1) return 1; re

13、turn n + f(n-1) + f(n-2); main() printf(%d, f(3); ,8,函数递归7-2,2008.4.12以下程序的运行结果是 void fun(int x) if (x/2 0) fun(x/2); printf(%d, x); main() fun(3); ,13,函数递归7-3,2009.9.15以下程序的运行结果是 void fun(int x) if (x/2 0) fun(x/2); printf(%d, x); main() fun(6); ,136,函数递归7-4,2010.9.35以下程序的运行结果是 void fun(int x) if (

14、x/2 1) fun(x/2); printf(%d, x); main() fun(7); ,37,函数递归7-5,2006.9.28以下程序的运行结果是 int fun(int x) int p; if (x=0 | x=1) return 3; p = x - fun(x-2); return p; main() printf(%d, fun(7); ,2,函数递归7-6,2008.4.34以下程序的运行结果是 int fun(int x) int y; if (x=0 | x=1) return 3; y = x*x - fun(x-2); return y; main() print

15、f(%d, fun(3); ,6,函数递归7-7,2008.9.30以下程序的运行结果是 int fun(int a, int b) if (b = 0) return a; else return fun(-a, -b); main() printf(%dn, fun(4,2); ,2,习题演练4-1,2008.9.22下面fun函数的实参个数是 fun(f(v1,v2),(v3,v4,v5),(v6,max(v7,v8); A)3 B)4 C)5 D)8,2008.9.25以下叙述中错误的是 A)用户定义的函数中可以没有return语句 B)用户定义的函数中可以有多个return语句,以便调用一次返回多个函数值 C)用户定义的函数如果没有return语句,应当定义函数为void类型 D)函数的return语句中可以没有表达式,习题演练4-2,2010.3.24以下关于return语句的叙述中正确的是 A)一个自定义函数中必须有一条return语句 B)一个自定义函数中可以根据不同情况设置多条return语句 C)定义成void类型的函数中可以有带返回值的return语句 D)没有return语句的自定义函数在执行结束时不能返回到调用处,习题演练4-3,2007.9.25以下叙述中正确的是 A)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号