第7章 函数(第12,13,14,15次课).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第7章 函数(第12,13,14,15次课).ppt》由会员分享,可在线阅读,更多相关《第7章 函数(第12,13,14,15次课).ppt(114页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 7 章章 函数函数FUNCTION7.1 概述概述7.2 函数定义的一般形式函数定义的一般形式7.3 函数的调用函数的调用7.4 对被调函数的声明和函数原型对被调函数的声明和函数原型7.5 函数的嵌套调用函数的嵌套调用7.6 函数的递归调用函数的递归调用7.7 数组作为函数参数数组作为函数参数7.8 局部变量和全局变量局部变量和全局变量7.9 变量的存储类别变量的存储类别7.10 变量的声明和定义变量的声明和定义7.11 内部函数和外部函数内部函数和外部函数7.17.4基本应用基本应用7.57.7提高提高7.87.11 相关知识相关知识7.1 概述概述7.1 概述模块化程序设计思想:模块
2、化程序设计思想:将一个大的程序按功能分解将一个大的程序按功能分解成一些小模块,使每一模块成为:成一些小模块,使每一模块成为:功能单一功能单一 结构清晰结构清晰 接口简单接口简单 容易理解容易理解的子程序。C语言中语言中的的函数函数mainxyzmainabcdefghhiegf#include#include int main()void printstar();/*声明声明函数函数printstar()*/void print_message();/*声明声明函数函数print_message()*/printstar();/*调用调用函数函数printstar()*/print_messa
3、ge();/*调用调用函数函数print_message()*/printstar();/*调用调用函数函数printstar()*/return 0;void printstar()/*定义定义函数函数printstar()*/char star=*,space=;int i;for(i=0;istrlen(star);i+)putchar(stari);putchar(space);printf(n);void print_message()/*定义定义函数函数print_message()*/printf(How do you do!n);三要素:三要素:【例例7.1】函数调用的简单例子
4、(函数调用的简单例子(P170)*How do you do!*声明、声明、调用、调用、定义定义/*例例1.3 求求2个数中较大者。个数中较大者。*/#include void main()int max(int x,int y);/*对被调用函数对被调用函数max的的声明声明*/int a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);/*调用调用max函数函数,将得到的值赋给将得到的值赋给c*/printf(max=%dn,c);int max(int x,int y)/*max函数的函数的定义定义*/int z;if(xy)z=x;else z=y;return(z
5、);to student利用利用1.3求求3个数的最大值个数的最大值.C说明:说明:P171(1)(2)一个源一个源程序程序文件(文件(.c)由一个或多个)由一个或多个函数函数构成。构成。(3)c程序的执行从程序的执行从 函数开始;执行过程中调用函数开始;执行过程中调用其他函数,该函数执行结束后返回其他函数,该函数执行结束后返回 函数;在函数;在 函数中结束整个程序的运行。函数中结束整个程序的运行。一个程序中有且只有一个一个程序中有且只有一个 函数函数(4)所有函数的所有函数的 是平行的,是平行的,不能不能嵌套。嵌套。(5)从用户使用的角度看,函数分为:从用户使用的角度看,函数分为:函数和函数
6、和 函数函数(6)从函数的形式看函数分两类:从函数的形式看函数分两类:函数。函数。函数。一般情况下,执行被调函数时会得到一个函数。一般情况下,执行被调函数时会得到一个函数值,供主调函数使用。函数值,供主调函数使用。mainmainmainmain定义定义库库自定义自定义无参无参有参有参7.2 函数定义的一般形式函数定义的一般形式7.1 概述概述7.2 函数定义的一般形式函数定义的一般形式7.3 函数的调用函数的调用7.4 对被调函数的声明和函数原型对被调函数的声明和函数原型7.5 函数的嵌套调用函数的嵌套调用7.6 函数的递归调用函数的递归调用7.7 数组作为函数参数数组作为函数参数7.8 局
7、部变量和全局变量局部变量和全局变量7.9 变量的存储类别变量的存储类别7.10 变量的声明和定义变量的声明和定义7.11 内部函数和外部函数内部函数和外部函数(1)无参无参函数的一般形式函数的一般形式 函数类型函数类型 函数名函数名()/*函数头函数头*/声明部分;声明部分;/*包括变量的声明和函数的声明包括变量的声明和函数的声明*/可执行语句部分;可执行语句部分;无参数7.2 函数定义的一般形式void printstar()/*定义定义函数函数printstar()*/char star=*,space=;int i;for(i=0;iy?x:y;return(z);,形参要说明类型(3)
8、可以有)可以有“空函数空函数”类型说明符类型说明符 函数名函数名()【练习练习】to student求实数的和和积求实数的和和积.c/*补充程序:写出求两个实数和、积的函数补充程序:写出求两个实数和、积的函数sum和和product*/#include void main()/*函数声明函数声明*/float a,b,s,p;printf(输入两个任意实数(逗号间隔)输入两个任意实数(逗号间隔):n);scanf(%f,%f,&a,&b);s=;/*函数调用,求函数调用,求a,b的和的和*/p=;/*函数调用,求函数调用,求a,b的积的积*/printf(result is%.2f and%.
9、2f n,s,p);7.3 函数的调用函数的调用7.1 概述概述7.2 函数定义的一般形式函数定义的一般形式7.3 函数的调用函数的调用7.4 对被调函数的声明和函数原型对被调函数的声明和函数原型7.5 函数的嵌套调用函数的嵌套调用7.6 函数的递归调用函数的递归调用7.7 数组作为函数参数数组作为函数参数7.8 局部变量和全局变量局部变量和全局变量7.9 变量的存储类别变量的存储类别7.10 变量的声明和定义变量的声明和定义7.11 内部函数和外部函数内部函数和外部函数7.3.1 形式参数和实际参数形式参数和实际参数函数的参数分为函数的参数分为 和和 两种。两种。形参形参:个数和类型是根据:
10、个数和类型是根据 设设定的。定的。实参:实参:个数和类型是根据个数和类型是根据 设定的。设定的。7.3函数的调用形参形参实参实参形参形参的个数和类型的个数和类型发生函数发生函数调用调用时,主调函数把时,主调函数把实参实参的值复制的值复制1份,传送给被调用函数的份,传送给被调用函数的形参形参,从而实现主调函数,从而实现主调函数向被调用函数的数据传送。向被调用函数的数据传送。函数的功能函数的功能主调函数主调函数(实参实参)被调函数被调函数(形参形参)传值传值#include int main()/*函数函数声明声明*/int a,b,c;printf(input two numbers:n);sc
11、anf(%d,%d,&a,&b);c=;/*函数函数调用调用*/printf(max=%dn,c);return 0;int max(int x,int y)/*定义定义函数函数max()*/int z;z=xy?x:y;return(z);int max(int x,int y);max(a,b)实参实参a,b形参形参x,y【例例7.2】有参函数的调用有参函数的调用#include void main()int max(int a,int b);int a,b,c;printf(input two numbers:n);scanf(%d,%d,&a,&b);c=max(a,b);printf
12、(max=%dn,c);int max(int a,int b)int c;c=ab?a:b;return(c);input two numbers:2,3 执行情况:main()函数中bac23max()函数中(调用时)ba233creturn(c)3函数函数声明声明函数函数调用调用函数函数定义定义max=3_xy说明:说明:P177(1)只有发生函数只有发生函数 时才给形参分配内存单元,时才给形参分配内存单元,并进行值的传递。执行完毕后形参占用的内存单并进行值的传递。执行完毕后形参占用的内存单元被元被 。(2)实参向形参传递值实参向形参传递值单向传递单向传递。内存中,实。内存中,实参和形参
13、占据(不同,相同)的内存单元,形参参和形参占据(不同,相同)的内存单元,形参值的改变(能,不能)影响实参的值。值的改变(能,不能)影响实参的值。调用调用调用调用释放释放释放释放ab23xy1011说明:说明:P177(3)实参可以是常量、变量或表达式。实参可以是常量、变量或表达式。(4)函数定义时必须指定形参的数据类型。函数定义时必须指定形参的数据类型。(5)实参与形参的类型应相同或兼容。实参与形参的类型应相同或兼容。(6)通过通过return 语句将函数值带回到主调函数。语句将函数值带回到主调函数。7.3.2 函数的返回值函数的返回值从被调函数带回的值(P178)(1)函数返回值函数返回值是
14、通过函数中的 语句来获得的从从“被调函数被调函数”返回返回“主调函数主调函数”时,可以带回时,可以带回 个个值。值。return语句的一般格式:语句的一般格式:return(返回值表达式返回值表达式);return 返回值表达式返回值表达式;或:提示:提示:如:如:return(y);return(3+x);如:如:return y;return 3+x;return1(2)函数返回值函数返回值的类型int max(float x,float y)/*函数值为整型函数值为整型*/char letter(char c1,char c2)/*函数值为字符型函数值为字符型*/double min(i
15、nt x,int y)/*函数值为浮点型函数值为浮点型*/(3)函数返回值函数返回值的类型应与函数中的类型应与函数中return语句中语句中“返回值表达式返回值表达式”的类型的类型 。如果不一致,则以如果不一致,则以 为准。为准。一致一致函数类型函数类型int max(int a,int b)int c;c=ab?a:b;return(c);int max(int a,int b)float c;c=ab?a:b;return(c);P178(3)对于对于不带回值不带回值的函数,其类型的函数,其类型应当应当定义定义为为 类型。类型。P179(4)void(即空类型)(即空类型)此时,被调函数体
16、内不允许出现此时,被调函数体内不允许出现 语句。语句。return函数调用的一般形式为函数调用的一般形式为(P174)函数名函数名(实参表列实参表列)函数名函数名()或者:或者:hcf(u,v)切记:切记:实参的个数、类型和顺序,应该与被调实参的个数、类型和顺序,应该与被调用函数所要求的用函数所要求的 个数、类型和顺个数、类型和顺序一致,才能正确地进行数据传递。序一致,才能正确地进行数据传递。形参形参7.3 函数的调用函数的调用printstar()int hcf(int u,int v)7.3.3 函数调用的形式函数调用的形式(1)函数调用语句函数调用语句。C语言中的函数可以只进行某些语言中
17、的函数可以只进行某些操作而不返回函数值,这时的函数调用可作为一条操作而不返回函数值,这时的函数调用可作为一条独独立的语句立的语句。例如:例如:printstar();print_message();(2)函数表达式函数表达式。被调函数出现在表达式(或语句)。被调函数出现在表达式(或语句)中,作为表达式(或语句)的一项,以函数返回值参中,作为表达式(或语句)的一项,以函数返回值参与表达式(或语句)的运算。与表达式(或语句)的运算。这种方式要求函数是有这种方式要求函数是有返回值的。返回值的。例如:例如:c=max(a,b);(3)函数参数函数参数。函数作为另一个函数调用的实际参数。函数作为另一个函
18、数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传出现。这种情况是把该函数的返回值作为实参进行传送,因此送,因此要求该函数必须是有返回值的要求该函数必须是有返回值的。例如:例如:printf(最大公约数为:最大公约数为:%dn,hcf(u,v);在语言中,可以用以下几种方式调用函数在语言中,可以用以下几种方式调用函数(P175):无分号无分号包含多个函数的包含多个函数的C程序,其三个要素程序,其三个要素为:为:、。函数函数声明声明函数函数调用调用函数函数定义定义其中:其中:把函数名、函数类型以及把函数名、函数类型以及形参的类型、个数和顺序通知编译系统,形参的类型、个数和顺序通知编译
19、系统,编译系统据此对实参进行检查。编译系统据此对实参进行检查。是函数功能的确立,包括是函数功能的确立,包括函数类型、函数名、形参的类型、个数函数类型、函数名、形参的类型、个数和顺序等,它是一个和顺序等,它是一个完整的、独立的函完整的、独立的函数单位数单位。函数函数函数函数定义定义定义定义函数函数函数函数声明声明声明声明简单回顾简单回顾由于函数声明的形式与函数头一致,因由于函数声明的形式与函数头一致,因此,函数声明也称为此,函数声明也称为 。函数原型函数原型7.4 对被调函数的声明和函数原型对被调函数的声明和函数原型7.1 概述概述7.2 函数定义的一般形式函数定义的一般形式7.3 函数的调用函
20、数的调用7.4 对被调函数的声明和函数原型对被调函数的声明和函数原型7.5 函数的嵌套调用函数的嵌套调用7.6 函数的递归调用函数的递归调用7.7 数组作为函数参数数组作为函数参数7.8 局部变量和全局变量局部变量和全局变量7.9 变量的存储类别变量的存储类别7.10 变量的声明和定义变量的声明和定义7.11 内部函数和外部函数内部函数和外部函数7.4 对被调用函数的声明和函数原型对被调用函数的声明和函数原型在一个函数调用另一个函数(即被调函数)需要在一个函数调用另一个函数(即被调函数)需要具备如下条件:具备如下条件:p179(1)首先被调用的函数必须是首先被调用的函数必须是已经定义好已经定义
21、好的函数(是库函数或用的函数(是库函数或用户自己定义的函数)。但仅这一条还不够。户自己定义的函数)。但仅这一条还不够。(2)如果使用库函数,应该在本文件开头用如果使用库函数,应该在本文件开头用#include指令将调用指令将调用有关库函数时所需用到得信息包含到本文件中。有关库函数时所需用到得信息包含到本文件中。(3)如果使用用户自己定义的函数,而该函数的位置在调用它的如果使用用户自己定义的函数,而该函数的位置在调用它的函数(主调函数)函数(主调函数)之后之后,则应该在主调函数中对被调函数,则应该在主调函数中对被调函数作声作声明。明。【例例7.4】输入两个实数,求其和。输入两个实数,求其和。#i
22、nclude int main()float add(float a,float b);float a,b,c;printf(input two numbers:n);scanf(%f,%f,&a,&b);c=add(a,b);printf(“sum=%dn,c);return 0;float add(float a,float b)float z;z=a+b;return(z);函数函数声明声明定义时,不能省略定义时,不能省略变量名变量名7.4 对被调用函数的声明和函数原型对被调用函数的声明和函数原型函数原型函数原型的形式(的形式(2种):种):函数类型函数类型 函数名函数名(形参类型形参类
23、型1 形参名形参名1,形参类型形参类型2 形形参名参名2,形参类型形参类型n 形参名形参名n)int max(int a,int b);函数类型函数类型 函数名函数名(形参类型形参类型1,形参类型形参类型2,形形参类型参类型n)int max(int,int);如果如果函数定义函数定义写在调用函数之写在调用函数之前前,可可省略声明省略声明如果已如果已在源文件(在源文件(.c程序)的开头程序)的开头(所有函数之前),(所有函数之前),对本文件中所调用的函数进行了声明,则在各函数中对本文件中所调用的函数进行了声明,则在各函数中不不必必对这些函数再进行对这些函数再进行声明声明,可以直接调用。,可以直
24、接调用。友情提示友情提示:P182void ascending(int a10)/函数定义函数定义 int i,j,t;for(i=0;i9;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;printf(the sorted numbers:n);for(i=0;i10;i+)printf(%d,ai);void main()int x10,i;void ascending(int a10);/函数声明函数声明 printf(input 10 numbers:n);for(i=0;i10;i+)scanf(%d,&xi);ascending(x);/调用函数实现数组排
25、序调用函数实现数组排序#include/函数声明符合省略条件函数声明符合省略条件#include float sum1(int);float sum2(int);float sum3(int);void main()int n1=100,n2=50,n3=10;float s1,s2,s3;s1=sum1(n1);s2=sum2(n2);s3=sum3(n3);printf(sum=%8.2fn,s1+s2+s3);float sum1(int n)/*定义定义求和函数,求和函数,n=n1*/float k,s=0;for(k=1;k=n;k+)s=s+k;return(s);float su
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 函数第12 13 14 15次课 函数 12 13 14 15
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内