函数(4)省公共课一等奖全国赛课获奖课件.pptx
![资源得分’ 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)
《函数(4)省公共课一等奖全国赛课获奖课件.pptx》由会员分享,可在线阅读,更多相关《函数(4)省公共课一等奖全国赛课获奖课件.pptx(103页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 函数函数第1页本章内容本章内容 函数概述函数概述 函数定义和调用函数定义和调用 函数原型函数原型 参数传递机制参数传递机制 嵌套调用和递归调用嵌套调用和递归调用 函数与指针函数与指针 函数参数缺省函数参数缺省 函数重载函数重载 函数模板函数模板 内联函数内联函数 系统函数系统函数 作用域、生存期与可见性作用域、生存期与可见性 编译预处理编译预处理 第2页4.1 函数概述函数概述例例计算计算Xm+Xn程序实现程序实现1:#include void main()long int x,xm=1,xn=1;int m,n;cinx;cinmn;int i=1;while(i=m)xm*=
2、x;i+;i=1;while(i=n)xn*=x;i+;cout“xm+xn=”xm+xnendl;第3页4.1 函数概述函数概述程序实现程序实现2:#include void main()long int x;int m,n;cinx;cinmn;cout“xm+xn=”;coutpower(x,m)+power(x,n)endl;long int power(long x,int n)long int y=1;int i=1;while(in)y*=x;i+;return y;函数作用:函数作用:1.将复杂问题分解成简单问题给予完成;将复杂问题分解成简单问题给予完成;2.多人协同工作;多人
3、协同工作;3.最大程度地利用已经有工作,防止重复劳动。最大程度地利用已经有工作,防止重复劳动。第4页1.C+1.C+函数函数函数是能完成特定功效程序段。函数是能完成特定功效程序段。2.C+2.C+源程序组成源程序组成一个一个C+C+程序是由若干个含有调用关系函数组成。每个程序是由若干个含有调用关系函数组成。每个+程程序有且只有一个函数序有且只有一个函数 main(),它是程序执行起点。其它函,它是程序执行起点。其它函数必须经过调用来执行。数必须经过调用来执行。4.1 函数概述函数概述第5页4.1 函数概述函数概述3.函数函数分类分类系统函数(库函数)系统函数(库函数)在头文件中由系统预先定义,
4、在程序中直接调用,但需在头文件中由系统预先定义,在程序中直接调用,但需包含对应头文件。包含对应头文件。自定义函数自定义函数编程人员在程序中定义和调用编程人员在程序中定义和调用第6页4.2 函数定义和调用函数定义和调用1.函数定义普通形式函数定义普通形式 类型名类型名 函数名函数名(形式参数表形式参数表)语句序列语句序列 函数头函数头函数体函数体类型名:类型名:说明函数被调用后返回值类型。假如一个函数没说明函数被调用后返回值类型。假如一个函数没 有返回值,类型名为有返回值,类型名为void,缺省为,缺省为int。函数名:函数名:函数标识名,按标示符规则命名。函数标识名,按标示符规则命名。形式参数
5、表:形式参数表:用来接收调用时传递给函数数据,形式为:用来接收调用时传递给函数数据,形式为:类型名类型名1 参数参数1,类型名,类型名2 参数参数2,.语句序列:语句序列:完成函数特定功效一组语句。完成函数特定功效一组语句。第7页nretuen语句语句功效:功效:1.结束函数执行。结束函数执行。2.将返回值带回到调用处。将返回值带回到调用处。普通形式普通形式 格式一:格式一:return 表示式;表示式;表示式值作为函数返回值表示式值作为函数返回值,当表示式类型与函数类型不一当表示式类型与函数类型不一样时样时,把表示式类型强制转换为函数类型。把表示式类型强制转换为函数类型。格式二:格式二:re
6、turn;函数没有返回值时使用,此时函数类型必须为函数没有返回值时使用,此时函数类型必须为void,假假如如return;为函数体中最终一条语句,则可省略。;为函数体中最终一条语句,则可省略。第8页long power(int x,int n)long p=1;for(int i=1;ia2)if(a1a2)return a1;return a1;elseelsereturn a2;return a2;例例2:有多个有多个return语句函数语句函数定义定义举例举例第10页/交换两个变量值交换两个变量值void swap(int x,int y)void swap(int x,int y)in
7、t temp;int temp;temp=x;temp=x;x=y;x=y;y=temp;y=temp;cout“x=“x“;cout“x=“x“;cout“y=“yendl;cout“y=“yendl;return;/return;/能够省略能够省略 例例3:无返回值函数定义举例无返回值函数定义举例第11页例例4:没有形式参数函数定义举例没有形式参数函数定义举例void print()/void print()/括号不可少括号不可少/等价形式:等价形式:void print(void)void print(void)cout“Good luck!n”;cout“Good luck!n”;第1
8、2页2.函数调用函数调用1)函数调用过程)函数调用过程在一个函数(在一个函数(主调函数主调函数)执行期间,转去执行其它函数)执行期间,转去执行其它函数(被调函数被调函数),被调函数执行完成再返回主调函数过程。),被调函数执行完成再返回主调函数过程。2)函数调用形式:函数调用形式:函数名(函数名(实参表实参表)函数名:已定义函数名函数名:已定义函数名实参表:实参表:由若干个实际参数组成,其作用是对形式参数进行由若干个实际参数组成,其作用是对形式参数进行初始化。初始化。形式为形式为:实参实参1,实参,实参2,3)函数调用使用方式:函数调用使用方式:(1)参加表示式运算)参加表示式运算(2)作为实参
9、)作为实参(3)作为单独语句)作为单独语句第13页(1 1)参加表示式运算)参加表示式运算函数调用能够作为操作数出现在表示式中。函数调用能够作为操作数出现在表示式中。此时被调用函数此时被调用函数必须有返回值,必须有返回值,函数返回值将参加表示式计算。函数返回值将参加表示式计算。例例编写计算编写计算Xm+Xn程序程序自定义函数:自定义函数:long power(int x,int n)long p=1;for(int i=1;i=n;i+)p=p*x;return p;主函数:主函数:#include void main()int x;int m,n;cinx;cinmn;cout“xm+xn=
10、”power(x,m)+power(x,n)endl;第14页(2 2)作为实参)作为实参 函函数数返返回回值值将将作作为为实实参参传传递递给给形形参参进进行行下下一一次次调调用用,此此时时被调用函数必须有返回值。被调用函数必须有返回值。例:利用例:利用power函数计算函数计算(x2)3void main()void main()int x,i;int x,i;cout coutx;cinx;long m=power(long m=power(power(x,2)power(x,2),3);,3);coutmendl;coutmendl;第15页(3 3)作为单独语句:用于不需要返回值函数调
11、用)作为单独语句:用于不需要返回值函数调用例:交换两个变量值函数例:交换两个变量值函数/主函数主函数void main()void main()intx,y;intx,y;cout cout“xy;cinxy;swap(x,y);swap(x,y);void swap(int x,int y)void swap(int x,int y)int temp;int temp;temp=x;temp=x;x=y;x=y;y=temp;y=temp;cout“x=“x“cout“x=“x“;“;cout“y=“yendl;cout“y=“yendl;第16页4.3 函数原型函数原型l函数原型函数原型只
12、给出函数头函数申明只给出函数头函数申明。何时需要函数原型说明何时需要函数原型说明 函函数数调调用用在在前前、定定义义在在后后时时需需要要;反反之之则则不需要。不需要。函数原型说明普通形式:函数原型说明普通形式:形式一:形式一:类型名类型名 函数名(函数名(形参表形参表);形式二:形式二:类型名类型名 函数名(函数名(各形参类型各形参类型);第17页#include int power(int x,int n);/或或 int power(int,int);void main()int x;int m,n;cinx;cinmn;cout“xm+xn=”power(x,m)+power(x,n)e
13、ndl;long power(int x,int n)long p=1;for(int i=1;i=n;i+)p=p*x;return p;例例编写计算编写计算Xm+Xn程序程序(需要函数原型)(需要函数原型)第18页#include long power(int x,int n)long p=1;for(int i=1;ix;cinmn;cout“xm+xn=”power(x,m)+power(x,n)endl;例例编写计算编写计算Xm+Xn程序程序(不需要函数原型)(不需要函数原型)第19页4.4 参数传递机制参数传递机制n作用作用实现函数间数据共享。实现函数间数据共享。n基本规则基本规则
14、在调用一个函数时,必须提供与形式参数在调用一个函数时,必须提供与形式参数个数相个数相同、类型一致同、类型一致实际参数,实参和形参实际参数,实参和形参按位置对应按位置对应以实现函数间数据传递。以实现函数间数据传递。n两种实现方式两种实现方式值传递(值调用)值传递(值调用)传数值调用传数值调用 传地址调用传地址调用 引用传递(引用调用)引用传递(引用调用)第20页1.传值调用特点传值调用特点函数定义时:函数定义时:形参定义为变量;实参提供数值,能够是常数、变量或表示式形参定义为变量;实参提供数值,能够是常数、变量或表示式函数被调用时函数被调用时系统为形参分配存放空间系统为形参分配存放空间实参值拷贝
15、(传递)给与之对应形参。实参值拷贝(传递)给与之对应形参。被调函数执行结束,分配给形参存放空间被释放。被调函数执行结束,分配给形参存放空间被释放。注意:注意:形参和实参都是变量时,改变形参值不影响实参原有值。形参和实参都是变量时,改变形参值不影响实参原有值。这种方式是一个单向传递,即实参将数值传给形参这种方式是一个单向传递,即实参将数值传给形参第21页#include#include void swap(int x,int y);void swap(int x,int y);void main()void main()int a(15),b(18);int a(15),b(18);cout c
16、out main()输出输出1:a=ab=bendl;a=ab=bendl;swap(swap(a,ba,b););cout cout main()输出输出2:a=ab=bendl;:a=ab=bendl;void swap(int x,int y)void swap(int x,int y)int temp;int temp;temp=x;x=y;y=temp;temp=x;x=y;y=temp;cout cout swap()输出输出:x=xy=yendl;:x=xy=yendl;例:传值调用举例例:传值调用举例输出结果:输出结果:main()输出输出1:a=15 b=18a=15 b=1
17、8swap()swap()输出:输出:x=18 y=15x=18 y=15main()输出输出2:a=15 b=18a=15 b=18第22页2.传地址调用机制传地址调用机制函函数数定定义义时时,形形参参申申明明为为指指针针或或数数组组,实实参参提提供供地地址址函函数数被被调调用用时时,为为形形参参分分配配空空间间以以存存放放实实参参提提供供地地址址注意:注意:在在被被调调用用函函数数中中改改变变形形参参值值,对对实实参参提提供供地地址址值值无无影响影响在在被被调调用用函函数数中中改改变变形形参参指指针针指指向向存存放放单单元元内内容容,实参地址对应存放单元内容同时也被改变实参地址对应存放单元
18、内容同时也被改变这种方式能够实现双向传递数据这种方式能够实现双向传递数据第23页例例1:传地址调用机制举例:传地址调用机制举例程序执行结果:程序执行结果:main()输出输出1:a=15 b=18a=15 b=18swap()swap()输出:输出:*px=18*py=15*px=18*py=15main()输出输出2:a=18 b=15a=18 b=15第24页例例2:传地址调用机制举例:传地址调用机制举例程序执行结果:程序执行结果:main()输出输出1:a=15 b=18a=15 b=18swap()swap()输出:输出:*px=18*py=15*px=18*py=15main()输出
19、输出2:a=15 b=18a=15 b=18第25页经过传地址调用向被调用函数经过传地址调用向被调用函数传递一维数组传递一维数组。数组作函数参数数组作函数参数例例1(例例4.10):编写函数将数组编写函数将数组a中数按由小到大次序重新排列中数按由小到大次序重新排列第26页#include void sort(int *a,int n);/函数原型函数原型void main()int s10=2,3,5,1,7,9,0,4,8,6;sort(s,10);/调调sort函数函数 for(int i=0;i10;i+)/输出排序后结果输出排序后结果 coutsi ;coutendl;void sor
20、t(int*a,int n)int temp;for(int i=0;in-1;i+)for(int j=i+1;jaj)temp=ai;ai=aj;aj=temp;思索:编写函数将任意大小数组思索:编写函数将任意大小数组a中数按由小到大次序重中数按由小到大次序重新排列新排列注意:注意:函数函数sort()形参形参 int*a也能够写成也能够写成int a,但不但不能写成能写成 int an。第27页 例例1 1:求二维数组中每行元素最大值及其所在列。求二维数组中每行元素最大值及其所在列。经过传地址调用向被调用函数经过传地址调用向被调用函数传递二维数组传递二维数组。程序说明:程序说明:函数函数
21、fmax()形参形参 int pNN 也能够写成也能够写成int(*p)N或或int pN(不能写成不能写成int p)。)。第29页3.函数引用调用机制函数引用调用机制形形参参定定义义为为引引用用;实实参参应应为为变变量量,而而不不能能是是常常量量或表示式或表示式函函数数被被调调用用时时,不不为为形形参参分分配配存存放放空空间间,使使用用实实参存放空间。参存放空间。注意:注意:在在被被调调用用函函数数中中改改变变形形参参值值,实实参参内内容容同同时时也也被被改变。改变。这种方式能够实现双向传递数据这种方式能够实现双向传递数据第31页例:引用调用举例例:引用调用举例#include#inclu
22、de void swap(int&x,int&y);void swap(int&x,int&y);/函数原型函数原型/等价形式:等价形式:void swap(int&,int&);void swap(int&,int&);void main()void main()int a=15,b=18;int a=15,b=18;cout“main()cout“main()输出输出1 1:a=ab=bendl;a=ab=bendl;swap(a,b);swap(a,b);cout main()cout main()输出输出2 2:a=ab=bendl;a=ab=bendl;void swap(int&x
23、,int&y)void swap(int&x,int&y)int temp;int temp;temp=x;x=y;y=temp;temp=x;x=y;y=temp;输出结果:输出结果:main()输出输出1:a=15 b=18a=15 b=18main()输出输出2:a=18 b=15a=18 b=15第32页函数参数传递机制总结函数参数传递机制总结传递机制传递机制形参形参实参实参特点特点传值调用传值调用定义为变量定义为变量同类型常量、变量、表示式数据单向传递数据单向传递传地址调用传地址调用定义为指针定义为指针与形参相匹配地址数据双向传递数据双向传递引用调用引用调用定义为引用定义为引用与形参
24、同类型变量数据双向传递数据双向传递第33页利用函数编程基本步骤利用函数编程基本步骤1.功效划分功效划分 合理确定各个函数功效合理确定各个函数功效2.函数设计函数设计函数接口设计(函数头):参数和返回值函数接口设计(函数头):参数和返回值函数体设计(函数功效实现方法)函数体设计(函数功效实现方法)3.编程实现编程实现 选择适当语句实现各个函数选择适当语句实现各个函数第34页函数应用举例函数应用举例例题:有例题:有5名学生参加一门课程考试,编写程序实名学生参加一门课程考试,编写程序实现以下功效:现以下功效:1。输入。输入5名学生学号和考试成绩。名学生学号和考试成绩。2。输出最高分学生学号和成绩。输
25、出最高分学生学号和成绩。3。将成绩按由高到低次序排列,输出排列后学号。将成绩按由高到低次序排列,输出排列后学号和成绩。和成绩。第35页问题分析:问题分析:1。功效划分。功效划分 1)主函数)主函数 数据输入数据输入 输出成绩最高学生学号及成绩输出成绩最高学生学号及成绩 输出排序结果输出排序结果 2)子函数)子函数 (1)求最高分及学号,将结果返回主函数求最高分及学号,将结果返回主函数 (2)对成绩进行排序)对成绩进行排序第36页问题分析:问题分析:2。函数设计。函数设计1)求最高分函数:)求最高分函数:接收参数:接收参数:两个一维数组:处理学号和成绩两个一维数组:处理学号和成绩 一个整型变量:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 公共课 一等奖 全国 获奖 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内