第8章 函数1 (第13次课)课件

上传人:我*** 文档编号:138886778 上传时间:2020-07-18 格式:PPT 页数:22 大小:266KB
返回 下载 相关 举报
第8章 函数1 (第13次课)课件_第1页
第1页 / 共22页
第8章 函数1 (第13次课)课件_第2页
第2页 / 共22页
第8章 函数1 (第13次课)课件_第3页
第3页 / 共22页
第8章 函数1 (第13次课)课件_第4页
第4页 / 共22页
第8章 函数1 (第13次课)课件_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《第8章 函数1 (第13次课)课件》由会员分享,可在线阅读,更多相关《第8章 函数1 (第13次课)课件(22页珍藏版)》请在金锄头文库上搜索。

1、教学目的与要求 (1) 掌握函数的申明、定义、调用 (2) 掌握函数的参数和返回值 (3) 掌握传值和传地址 (3) 理解数组与函数参数 课时 2,第8章 函数1,内容提要:,8.1 问题的提出和程序示例 8.2 函数定义 8.3 函数调用,8.1 问题的提出和程序示例,我们来看一段程序:,x = 1; for(i=1; i=n; i+) x = x * i;,这段程序的 功能是求 n!,8.1 问题的提出和程序示例,main( ) int m, n, x=1, y=1, z=1, i, cmn; scanf(%d%d, ,8.1 问题的提出和程序示例,int fac(int n) /* 求某

2、个数 n 的阶乘 */ int i, x=1; for(i=1; i=n; i+) x = x * i; return(x); ,main() /* 求组合函数的解 */ int m, n, cmn; scanf(%d%d, ,问题提出: 是否可以减少相似类型的操作而使程序变得简洁一些?,8.2 函数定义,8.2.1 函数基础,函数定义:即定义函数的功能。未经定义的函 数不能使用。,函数调用:即执行一个函数,调用函数时,程 序跳转到被调用函数的第一句开始 执行,执行至被调用函数的最后一 句,然后程序返回调用该函数处。,函数声明:即通知编译系统该函数已经定义过 了。,函数类型 函数名(参数表)

3、函数体 ,函数头,函数体,函数名:一个有效的标识符。,函数类型:返回值的类型说明符。 如果不指定,即缺省,就是 int。 void :表示函数不返回任何值。,参数表:声明参数,多个参数用逗号分隔开。 接收传递进来的数据。必须为每个参数指定数据 类型。,8.2.2 函数定义,1.形参 函数定义时,函数名后面小括号内的参数就是形式参数,简称形参. 2.实参 调用函数时,函数名后面小括号内的参数就是实际参数,简称实参. 3.形参与实参的关系 当发生函数调用时,实参向形参传值,要实现数值传递的正确性,应该保证实参与形参的三个一致性类型一致、个数一致、顺序一致 请看图8.1,8.2.3 形参与实参的关系

4、,8.2.4 有参函数与无参函数,1.有参函数 函数类型 函数名(形式参数表) 函数体 ,有参函数比无参函数多了两个内容,其一是形 式参数表, 其二是形式参数类型说明。在形参表中 给出的参数称为形式参数, 它们可以是各种类型的 变量, 各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。 形参既然是变量,当然必须给以类型说明。,【例8-2】定义一个函数fun, 其功能是用”*”打印直角三角形,void fun(int n) int i, j; for(i = 1; i= n; i+) for(j = 1; j =2*i-1; j+) printf(* ); printf

5、(n); void main() int x=5; fun(x); fun(x+2); ,8.2.4 有参函数与无参函数,2.无参函数 函数类型 函数名( ) 函数体 ,无参函数定义时,函数名后有一个空括号,其 中无没有参数,但括号不可少。表示此函数被调用 时,没有数据传递进来。,括号不可省略,函数定义时,根据函数名后的圆括号内是否有形参,分为有参函数和无参函数两类。,如果一个函数无返回值,此类函数任务 完成后不需向调用者返回结果,一般可以不 写 return 语句。用户在定义此类函数时需指 定它的返回值为“空类型”(即 void 类型)。,1.返回值不空, int ,float等类型 2.函

6、数的返回值类型为空(即void类型),8.2.4 函数的返回类型,(1)return语句的一般格式: return ( 返回值表达式 ); (2)return语句的功能:返回调用函数,并将“返回值表达式”的值带给调用函数。,函数定义时的类型就是函数返回值的类型。从 理论上,C语言要求函数定义的类型应当与返回语 句中表达式的类型保持一致。,8.2.4 函数的返回类型,8.3 函数调用,函数调用的一般形式为:函数名(实参表) 请看图8.2 函数调用过程 retrun的作用:结束函数,可返回一个值。 return 的用法: (1)return (表达式); (2)return 表达式; (3)ret

7、urn ; /专用于void类型的函数,例8.4 定义一个函数max,求两个数中的较大数。,int max(int a,int b) int m; m=(ab)?a:b; return(m); void main() int x=5,y=9,z; z=max(x,y); printf(z=%dn,z); ,例8.5定义一个函数max(),求两个数是的较大数,并在函数max()中输出结果,void max(int a,int b) int m; m=(ab)?a:b; printf(“m=%dn,m); return ; /可省略 void main() int x=5,y=9; max(x,y

8、); ,1. 值传递方式 以上例题中主调函数与被调函数之间的数值传递是通过参数(实参和形参)传递、以及返回值实现的。实参是主调函数中的变量或表达式,形参是被调函数中的变量,调用函数时实参的值传递给形参,这种方式称为传值。,传值过程如下: (1)函数被调用时,形参变量被创建; (2)实参将其数值复制一份赋值给形参变量; (3)当被调函数运行结束返回主调函数时,形参被释放。,8.3.4 函数参数的传递方式,#include void swap(int, int); void main(void) int x = 2, y = 3; printf( (1) x=%d, y=%dn, x, y); s

9、wap(x, y); printf( (4) x=%d, y=%dn, x, y); void swap(int a, int b) int t; printf( (2) a=%d, b=%dn, a, b); t = a; a = b; b = t; printf( (3) a=%d, b=%dn, a, b); ,程序运行结果: (1)x=2, y=3 (2)a=2, b=3 (3)a=3, b=2 (4)x=2, y=3,例8.6 编写一个函数,试图交换主函数中的x,y,【例8.7】通过调用swap( )函数,把主函数中变量x和y中的数据进行交换。 #include void swap(

10、int *, int *); void main( ) int x = 2, y = 3; printf( (1) x=%d, y=%dn, x, y); /输出调用swap( )函数前x、y的值 swap( /输出调用swap( )函数后x、y的值 ,2.地址传递方式,8.3.3 函数的传地址方式,void swap(int *a, int *b) int t; printf( (2) *a=%d, *b=%dn, *a, *b); /输出swap( )函数开始运行时a、b的值 t = *a; *a = *b; *b = t; /*a代表主调函数中的变量x /*b代表主调函数中的变量y pr

11、intf( (3) *a=%d, *b=%dn, *a, *b); /输出swap( )函数运行结束时a、b的值 程序运行结果: (1) x=2, y=3 (2) *a=2, *b=3 (3) *a=3, *b=2 (4) x=3, y=2,8.3.3 函数的传地址方式,第13次上机作业,8.1 8.2 自学static变量 8.3 (1),(2),(3) 写函数练习: 1.求1+2+n,返回结果 2.求一维数组的最大值,返回其下标. 提示: int f1(int a, int n)或int f2(int *p,int n) 调用f1(数组名,m); 3.求二维数组的最大值,在函数中输出其下标.在子函数中给主函数中的i1,j1赋值. 提示:void f3(int a5,int n,int m,int* a,int*b) 调用:f3(数组名,n,m, &i1,&j1),

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

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

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