




免费预览已结束,剩余40页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
lesson 6 使用函数封装代码,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 = fun(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, int 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,%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,参数传递9-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,参数传递9-2,2010.9.24以下程序的运行结果是 int f(int x) return x * 2; main() int n = 1, m; m = f(f(f(n); printf(“%d“, m); ,8,参数传递9-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,参数传递9-4,2011.3.32以下程序的运行结果是 int fun(int x, int y) if (x != y) return (x+y)/2; else return x; main() int a = 4, b = 5, c = 6; printf(“%d“, fun(2*a, fun(b,c); ,6,参数传递9-5,2006.9.25以下程序的运行结果是 fun(int x, int y) return x + y; main() int a = 1, b = 2, c = 3, s; s = fun(a+, b+, a+b), c+); printf(“%d“, s); ,8,参数传递9-6,2004.9.28以下程序的运行结果是 int f(int a) return a / 2; main() int a6 = 1,3,5,2,0,7, i, s = 0; for (i = 0; ai; i+) s += f(ai); printf(“%d“, s); ,4,参数传递9-7,2005.9.12程序运行时输入:1234,程序输出结果是 int sub(int n) return (n / 10 + n % 10); main() int x, y; scanf(“%d“, ,10,参数传递9-8,2005.4.26以下程序的运行结果是 int f1(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,参数传递9-9,2006.4.33以下程序的运行结果是 int fun1(double a) return a *= a; int fun2(double x, double y) double a = fun1(x), b = fun1(y); return (int)(a+b); main() double w = fun2(1.1, 2.0); printf(“%.2f“, w); ,5.00,全局变量作用域,int w = 3; void fun() printf(“%d“, w); int p = 5; main() printf(“%d, %d“, 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,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) 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); ,函数递归调用,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 - 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,函数递归6-1,2008.4.122009.9.152011.9.11以下程序的运行结果是 void fun(int x) if (x/2 0) fun(x/2); printf(“%d“, x); main() fun(3); ,13,函数递归6-2,2010.9.35以下程序的运行结果是 void fun(int x) if (x/2 1) fun(x/2); printf(“%d“, x); main() fun(7); ,37,函数递归6-3,2011.3.32设有如下函数定义 int fun(int k) if (k 1) return 0; else if (k = 1) return 1; else return fun(k - 1) + 1; 若执行调用语句:n = fun(3);,则函数fun总共被调用的次数是,3,函数递归6-4,2006.9.282008.4.34以下程序运行结果是 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,函数递归6-5,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,函数递归6-6,例以下程序的运行结果是 int f(int n) if (n = 1) return 1; return n + f(n-1) + f(n-2); main() printf(“%d“, f(3); ,8,习题演练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)函数的实参和形参共占同一存储单元 b)形参只是形式上的,不占用具体存储单元 c)同名的实参和形参占同一存储单元 d)函数的形参和实参分别占用不同的存储单元,2006.4.46以下叙述中错误的是 a)c程序必须由一个或一个以上的函数组成 b)函数调用可以作为一个独立的语句存在 c)若函数有返回值,必须通过return语句返回 d)函数形参的值也可以传回给对应的实参,习题演练4-4,2010.9.11以下关于结构化程序设计的叙述中正确的是 a)一个结构化程序必须同时由顺序、分支、循环三种结构组成 b)结构化程序使用goto语句会很便捷 c)在c语言中,程序的模块化是利用函数实现的 d)由三种基本结构构成的程序只能解决小规模的问题,函数声明,函数类型 函数名(类型1 参数名1, 类型2 参数名2, );,函数声明4-1,2004.4.26若程序中定义了以下函数fun,则以下选项中对该函数错误的声明是 double fun(double x, double y) return x + y; a)double fun(double x, y); b)double fun(double, double); c)double fun(double a, double b); d)double fun(double x, double y);,函数声明4-2,2011.9.24以下程序的运行结果是 double f(double x); main() double a = 0; int i; for (i = 0; i 30; i += 10) a += f(double)i); printf(“%5.0f“, a); dou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年数据分析师高级面试题集
- 桡尺骨骨折课件
- 2025年图书馆特色资源建设方案策划师招聘面试题解
- 2025年双语数学教学职位应聘面试攻略模拟题及答案解析民办学校
- 2025年区域经济与可持续发展考试试题及答案
- 2025年电力行业安全监理员招聘安全知识预测试题集
- 2026届湖南省邵阳市邵阳县第一中学化学高三上期末教学质量检测试题含解析
- 2026届河南省扶沟高中化学高二第一学期期末考试模拟试题含答案
- 2025年法律行业人工智能应用考察试卷及解析答案
- 2025年注册验船师资格考试(A级船舶检验专业综合能力)综合试题及答案一
- 中小学生研学旅行投标方案(技术方案)
- 成人手术后疼痛评估与护理-中华护理学会团体标准2023 2
- NB-T 10435-2020 电动汽车快速更换电池箱锁止机构通.用技术要求
- 学历认证授权委托书样本
- 中医医疗技术手册2013普及版汇编
- (高清版)JTGT 3360-01-2018 公路桥梁抗风设计规范
- gcp机构办公室工作计划
- 旅游学概论(郭胜 第五版) 课件 第1、2章 旅游学概述、旅游的产生与发展
- 1.1.3茶云纹叶枯病识别与防治
- MT-T 1199-2023 煤矿用防爆柴油机无轨胶轮运输车辆安全技术条件
- 道路清扫保洁及垃圾清运服务投标方案技术标
评论
0/150
提交评论