第8章 函数(第19次课课件

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

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

1、,第 8 章 函数 FUNCTION,8.1 概述 8.2 函数定义的一般形式 8.3 函数参数和函数的值 8.4 函数的调用 8.5 函数的嵌套调用 8.6 函数的递归调用 8.7 数组作为函数参数 8.8 局部变量和全局变量 8.9 变量的存储类别,8.18.4基本应用,8.58.7提高,8.88.9 相关知识,8.1 概述 8.2 函数定义的一般形式 8.3 函数参数和函数的值 8.4 函数的调用 8.5 函数的嵌套调用 8.6 函数的递归调用 8.7 数组作为函数参数 8.8 局部变量和全局变量 8.9 变量的存储类别,8.18.4基本应用,8.58.7提高,8.88.9 相关知识,函

2、数的递归调用,数组作为函数参数,8.1 概述 8.2 函数定义的一般形式 8.3 函数参数和函数的值 8.4 函数的调用 8.5 函数的嵌套调用 8.6 函数的递归调用 8.7 数组作为函数参数 8.8 局部变量和全局变量 8.9 变量的存储类别,8.1 概述,8.1 概述,模块化程序设计思想:将一个大的程序按功能分解成一些小模块,使每一模块成为: 功能单一 结构清晰 接口简单 容易理解 的子程序。,C语言中的函数,f,#include #include void main() void printstar(); /*声明函数printstar()*/ void print_message()

3、; /*声明函数print_message()*/ printstar(); /*调用函数printstar()*/ print_message(); /*调用函数print_message()*/ printstar(); /*调用函数printstar()*/ void printstar() /*定义函数printstar()*/ char star=*,space= ; int i; for(i=0;istrlen(star);i+) putchar(stari); putchar(space); printf(n); void print_message() /*定义函数print_

4、message()*/ printf(How do you do!n); ,三要素:,【例8.1】函数调用的简单例子(P155),* * * * * * * * * * * * How do you do! * * * * * * * * * * * *,声明、,调用、,定义,/* 例1.3 求2个数中较大者。*/ #include void main( ) int max(int x,int y); /* 对被调用函数max的声明 */ int a,b,c; scanf(%d,%d, ,to student利用1-3求3个数的最大值.C,说明:P156,(1) (2)一个源程序文件( .c

5、)由一个或多个函数构成。 (3) c程序的执行从 函数开始;执行过程中调用其他函数,该函数执行结束后返回 函数;在 函数中结束整个程序的运行。一个程序中有且只有一个 函数 (4)所有函数的 是平行的,不能嵌套。 (5)从用户使用的角度看,函数分为: 函数和 函数 (6)从函数的形式看函数分两类: 函数。 函数。,main,main,main,main,定义,库,自定义,无参,有参,8.1 概述 8.2 函数定义的一般形式 8.3 函数参数和函数的值 8.4 函数的调用 8.5 函数的嵌套调用 8.6 函数的递归调用 8.7 数组作为函数参数 8.8 局部变量和全局变量 8.9 变量的存储类别,

6、8.2 函数定义的一般形式,(1)无参函数的一般形式 函数类型 函数名( ) /*函数头*/ 声明部分; /*包括变量的声明和函数的声明*/ 可执行语句部分; ,无参数,8.2 函数定义的一般形式,void printstar() /*定义函数printstar()*/ char star=*,space= ; int i; for(i=0;istrlen(star);i+) putchar(stari); putchar(space); printf(n); ,(2)有参函数的一般形式 函数类型 函数名( 形式参数表列 ) /*函数头*/ 声明部分; 可执行语句部分; ,有形参,逗号间隔,i

7、nt max(int x int y) /*定义一个求最大值的函数max*/ int z; /*声明部分*/ z=xy?x:y; return(z); ,形参要说明类型,#include void main() /*函数声明*/ int a,b,c; printf(input two numbers:n); scanf(%d,%d, ,int max(int x, int y);,max(a,b),实参a,b,形参x,y,【例8.2】有参函数的调用,(3)可以有“空函数” 类型说明符 函数名() ,【练习】,to student求实数的和和积.c,/*补充程序:写出求两个实数和、积的函数sum

8、和product*/,#include void main() /*函数声明*/ float a,b,s,p; printf(输入两个任意实数(逗号间隔):n); scanf(%f,%f, ,查看“作业中的问题.ppt”,8.1 概述 8.2 函数定义的一般形式 8.3 函数参数和函数的值 8.4 函数的调用 8.5 函数的嵌套调用 8.6 函数的递归调用 8.7 数组作为函数参数 8.8 局部变量和全局变量 8.9 变量的存储类别,8.3 函数参数和函数的值,8.3.1 形式参数和实际参数,函数的参数分为 和 两种。 形参:个数和类型是根据 设定的。 实参:个数和类型是根据 设定的。,8.3

9、函数参数和函数的值,形参,实参,形参的个数和类型,发生函数调用时,主调函数把实参的值复制1份,传送给被调用函数的形参,从而实现主调函数向被调用函数的数据传送。,函数的功能,主调函数(实参),被调函数(形参),传值,#include void main() int max(int a, int b); int a,b,c; printf(input two numbers:n); scanf(%d,%d, ,input two numbers: 2,3,执行情况:,2,3,2,3,3,3,函数声明,函数调用,函数定义,max=3 _,说明:P159,(1)只有发生函数 时才给形参分配内存单元,并

10、进行值的传递。执行完毕后形参占用的内存单元被 。,(3)实参可以是常量、变量或表达式。,(4) 函数定义时必须指定形参的数据类型。,(5)实参与形参的类型应相同或兼容。,(2)实参向形参传递值单向传递。内存中,实参和形参占据(不同,相同)的内存单元,形参值的改变(能,不能)影响实参的值。,调用,释放,8.3.2 函数的返回值,从被调函数带回的值(P160),(1)函数返回值是通过函数中的 语句来获得的,从“被调函数”返回“主调函数”时,可以带回 个值。,return语句的一般格式:,return (返回值表达式);,return 返回值表达式;,或:,提示:,如:return (y); ret

11、urn (3+x);,如:return y; return 3+x;,return,1,P160,(2)函数返回值的类型,int max(float x,float y) /*函数值为整型*/ char letter(char c1,char c2) /*函数值为字符型*/ double min(int x,int y) /*函数值为浮点型*/,缺省类型为整型,(3)函数返回值的类型应与函数中return语句中“返回值表达式”的类型 。 如果不一致,则以 为准。,一致,函数类型,max(float x,float y),P160(2),int max(int a, int b) int c;

12、c=ab?a:b; return(c); ,int max(int a, int b) float c; c=ab?a:b; return(c); ,P160(3),对于不带回值的函数,其类型应当定义为 类型。,P161(4),void,(即空类型),此时,被调函数体内不允许出现 语句。,return,#include /求最大公约数和最小公倍数 void main() int u,v,r,temp,p; printf(input two numbers:n); scanf(%d,%d, ,#include /求最大公约数和最小公倍数 void main() int u,v; /可以根据需要增

13、加其他变量的定义 printf(input two numbers:n); scanf(%d,%d, ,to student求最大公约数和最小公倍数.c,(answer2)求最大公约数和最小公倍数.c的执行流程:,void main( ),调用函数hcf,end,int hcf(int u,int v),调用函数lcd,return ;,int lcd(int u,int v),调用函数hcf,return ;,函数的“嵌套”调用,(answer2)求最大公约数和最小公倍数.c的执行流程:,void main( ),调用函数hcf,end,int hcf(int u,int v),调用函数lc

14、d,return ;,int lcd(int u,int v),调用函数hcf,return ;,“嵌套”调用时,对调用函数需要进行函数声明,声明: hcf 和 lcd,声明: hcf,函数调用的一般形式为(P161),函数名(实参表列),函数名(),或者:,hcf(u,v),切记:实参的个数、类型和顺序,应该与被调用函数所要求的 个数、类型和顺序一致,才能正确地进行数据传递。,形参,8.4 函数的调用,printstar( ),int hcf(int u,int v) ,(1)函数表达式。被调函数出现在表达式(或语句)中,作为表达式(或语句)的一项,以函数返回值参与表达式(或语句)的运算。这

15、种方式要求函数是有返回值的。 例如: c= max(a,b); (2)函数语句。C语言中的函数可以只进行某些操作而不返回函数值,这时的函数调用可作为一条独立的语句。 例如: printstar(); print_message(); (3)函数实参。函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。 例如:printf(最大公约数为:%dn, hcf(u,v);,在语言中,可以用以下几种方式调用函数(P163):,包含多个函数的C程序,其三个要素 为: 、 、 。,函数声明,函数调用,函数定义,其中:,把函数名、函数类型以及形参的类型、个数和顺序通知编译系统,编译系统据此对实参进行检查。,是函数功能的确立,包括函数类型、函数名、形参的类型、个数和顺序等,它是一个完整的、独立的函数单位。,函数定义,函数声明,简单回顾,P164,由于函数声明的形式与函数头一致,因此,函数声明也称为 。,函数原型,8.4.3 对被调用函数的声明和函数原型,函数原型的形式(2种):,函数类型 函数名(形参类型1 形参名1,形参类型2 形参名2,形参类型n 形参名n),int max(int a, int b);,函数类型 函数名(形参类型1 ,形参类型2 ,形参类型n),int max(int

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

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

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