欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C 语言 课件 第3章函数.ppt

    • 资源ID:67341065       资源大小:256KB        全文页数:59页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C 语言 课件 第3章函数.ppt

    本章简介本章简介第第3 3章章 函数函数3.1 3.1 函数的定义与使用(掌握)函数的定义与使用(掌握)3.2 3.2 内联函数(掌握)内联函数(掌握)3.3 3.3 带默认形参值的函数(掌握)带默认形参值的函数(掌握)3.4 3.4 函数重载(掌握)函数重载(掌握)3.5 3.5 使用使用c+c+系统函数(掌握)系统函数(掌握)3.6 3.6 小结小结n n 函数是面向对象程序设计中的基本抽象单函数是面向对象程序设计中的基本抽象单元;元;n n 是对功能的抽象;是对功能的抽象;函数函数2 计算机基础教研室计算机基础教研室C+系统函数系统函数nC+C+的系统库中提供了几百个函数可供程序的系统库中提供了几百个函数可供程序员使用。员使用。例如:求平方根函数(例如:求平方根函数(sprt)、)、求绝对值函求绝对值函数(数(abs)等。等。n使用系统函数时要包含相应的头文件使用系统函数时要包含相应的头文件。例如:例如:cmath使 用 C+系 统 函 数3 计算机基础教研室计算机基础教研室 使用的系统函数使用的系统函数函 数 的 定 义 与 使 用 C+C+标准函数库提供一随机数生成器标准函数库提供一随机数生成器randrand,返回,返回0 0RAND_MAXRAND_MAX之间均匀分布的伪随机整数。之间均匀分布的伪随机整数。RAND_MAXRAND_MAX必须至少为必须至少为3276732767。rand()rand()函数不接受参数,函数不接受参数,默认以默认以1 1为种子(即起始值)。为种子(即起始值)。rand()rand()产生的随机数在每次运行的时候都是与上产生的随机数在每次运行的时候都是与上一次相同的,若要产生每次不同的随机数,可以使一次相同的,若要产生每次不同的随机数,可以使用用srandsrand(seed)(seed)函数进行随机化,随着函数进行随机化,随着seedseed的不同,的不同,就能够产生不同的随机数。就能够产生不同的随机数。4 计算机基础教研室计算机基础教研室系统函数应用举例系统函数应用举例n题目:题目:从键盘输入一个角度值,求出该角度的正弦值、从键盘输入一个角度值,求出该角度的正弦值、余弦值和正切值。余弦值和正切值。n分析:分析:系统函数中提供了求正弦值、余弦值和正切值系统函数中提供了求正弦值、余弦值和正切值的函数:的函数:sin()、cos()、tan(),函数的说明在头函数的说明在头文件文件cmath中。中。使 用 C+系 统 函 数5 计算机基础教研室计算机基础教研室#include#includeusing namespace std;const double pi(3.14159265);void main()double a,b;cina;b=a*pi/180;coutsin(a)=sin(b)endl;coutcos(a)=cos(b)endl;couttan(a)=tan(b)(“活动子集活动子集”栏栏)Visual C+Documentation -Visual C+Documentation -Using Visual C+-Visual C+Programmers Guide -Run-Time Library Reference -Run Time Routines by Category -Run Time Routines by Category 使 用 C+系 统 函 数7 计算机基础教研室计算机基础教研室n函数声明的语法形式函数声明的语法形式类型标识符类型标识符 函数名(形式参数表)函数名(形式参数表)语句序列语句序列若无参数,写若无参数,写void是被初始化的内部是被初始化的内部变量,寿命和可见变量,寿命和可见性仅限于函数内部性仅限于函数内部若无返回值,写若无返回值,写voidl l 形式参数表形式参数表 name1,name2,.,namenl 函数的返回值函数的返回值n由由 return 语句给出,例如:语句给出,例如:return 0;n无返回值的函数(无返回值的函数(void类型),不必写类型),不必写return语句。语句。函 数 的 定 义 与 使 用函数的定义函数的定义8 计算机基础教研室计算机基础教研室n调用前先声明函数原型:调用前先声明函数原型:在调用函数中,或程序文件中所有函数之外,在调用函数中,或程序文件中所有函数之外,按如下形式说明:按如下形式说明:类型标识符类型标识符 被调用函数名(含类型说明的形参表)被调用函数名(含类型说明的形参表);n调用形式调用形式 函数名(实参列表)函数名(实参列表)n嵌套调用嵌套调用函数可以嵌套调用,但不允许嵌套定义。函数可以嵌套调用,但不允许嵌套定义。n递归调用递归调用函数直接或间接调用自身。函数直接或间接调用自身。函 数 的 定 义 与 使 用函数的调用函数的调用9 计算机基础教研室计算机基础教研室编写一个求编写一个求x的的n次方的函数次方的函数#include using namespace std;Double power(double x,int n);void main(void)cout 5 to the power 2 is power(5,2)endl;Double power(double x,int n)double val=1.0;while(n)val=val*x;n-;return(val);函 数 的 定 义 与 使 用10 计算机基础教研室计算机基础教研室数制转换数制转换题目:题目:输入一个输入一个8位二进制数,将其转换为十进制位二进制数,将其转换为十进制数输出。数输出。例如:例如:(1101)2=1(23)+1(22)+0(21)+1(20)=(13)10 所以,所以,如果输入如果输入1101,则应输出,则应输出13函 数 的 定 义 与 使 用11 计算机基础教研室计算机基础教研室#include using namespace std;double power(double x,int n);void main(void)int i;int value=0;char ch;cout=0;i-)cin ch;if(ch=1)value+=int(power(2,i);cout Decimal value is valueendl;double power(double x,int n)double val=1.0;while(n-)val*=x;return(val);运行结果:运行结果:Enter an 8 bit binary number Enter an 8 bit binary number 0110100101101001Decimal value is 105Decimal value is 105函 数 的 定 义 与 使 用12 计算机基础教研室计算机基础教研室其中其中arctan用如下形式的级数计算:用如下形式的级数计算:直直到到级级数数某某项项绝绝对对值值不不大大于于10-15为为止止;和和x均均为为double型。型。函 数 的 定 义 与 使 用-=2391arctan451arctan16p编写程序求编写程序求的值的值13 计算机基础教研室计算机基础教研室#includeusing namespace std;void main()double a,b;double arctan(double x);/函数原型声明函数原型声明 a=16.0*arctan(1/5.0);b=4.0*arctan(1/239.0);/注意:因为整数相除结注意:因为整数相除结果取整,果取整,/如果参数写如果参数写1/5,1/239,结果就都是,结果就都是0 coutPI=a-b1e-15)f=e/i;r=(i%4=1)?r+f:r-f ;e=e*sqr;i+=2;return r;函 数 的 定 义 与 使 用14 计算机基础教研室计算机基础教研室n寻找并输出寻找并输出11-99911-999之间的数之间的数m m,它满足它满足m m、m2m2和和m3m3均为回文数。均为回文数。回文:各位数字左右对称的整数。回文:各位数字左右对称的整数。例如:例如:11满足上述条件满足上述条件 112=121,113=1331。n分析:分析:10取余的方法,从最低位开始,依次取出该数取余的方法,从最低位开始,依次取出该数的各位数字。按反序重新构成新的数,比较与的各位数字。按反序重新构成新的数,比较与原数是否相等,若相等,则原数为回文。原数是否相等,若相等,则原数为回文。函 数 的 定 义 与 使 用寻找回文数寻找回文数15 计算机基础教研室计算机基础教研室#include using namespace std;void main()bool symm(long n);long m;for(m=11;m1000;m+)if(symm(m)&symm(m*m)&symm(m*m*m)coutm=mm*m=m*m m*m*m=m*m*mendl;函 数 的 定 义 与 使 用16 计算机基础教研室计算机基础教研室bool symm(long n)long i,m;i=n;m=0;while(i)m=m*10+i%10;i=i/10 ;return(m=n);运行结果:运行结果:m=11 m*m=121 m*m*m=1331m=11 m*m=121 m*m*m=1331m=101 m*m=10201 m*m*m=1030301m=101 m*m=10201 m*m*m=1030301m=111 m*m=12321 m*m*m=1367631m=111 m*m=12321 m*m*m=1367631函 数 的 定 义 与 使 用17 计算机基础教研室计算机基础教研室计算如下公式,并输出结果:计算如下公式,并输出结果:其中其中r、s的值由键盘输入。的值由键盘输入。SIN x的近似值按如下公的近似值按如下公式计算,计算精度为式计算,计算精度为10-6:函 数 的 定 义 与 使 用计算计算sin(x)的值的值18 计算机基础教研室计算机基础教研室#include#includeusing namespace std;void main()double k,r,s;double tsin(double x);coutr;couts;if(r*r=s*s)k=sqrt(tsin(r)*tsin(r)+tsin(s)*tsin(s);else k=tsin(r*s)/2;coutk=p);return g;运行结果:运行结果:r=5r=5s=8s=81.377811.37781函 数 的 定 义 与 使 用20 计算机基础教研室计算机基础教研室游游戏戏规规则则是是:每每个个骰骰子子有有六六面面,点点数数分分别别为为1、2、3、4、5、6。游游戏戏者者在在程程序序开开始始时时输输入入一一个个无无符符号号整数,作为产生随机数的种子。整数,作为产生随机数的种子。每每轮轮投投两两次次骰骰子子,第第一一轮轮如如果果和和数数为为7或或11则则为为胜胜,游游戏戏结结束束;和和数数为为2、3或或12则则为为负负,游游戏戏结结束束;和和数数为为其其它它值值则则将将此此值值作作为为自自己己的的点点数数,继继续续第第二二轮轮、第第三三轮轮.直直到到某某轮轮的的和和数数等等于于点点数数则则取取胜胜,若若在此前出现和数为在此前出现和数为7则为负。则为负。由由rolldice函函数数负负责责模模拟拟投投骰骰子子、计计算算和和数数并并输输出和数。出和数。函 数 的 定 义 与 使 用投骰子的随机游戏投骰子的随机游戏21 计算机基础教研室计算机基础教研室int rolldice(void)/投骰子、计算和数、输出和数投骰子、计算和数、输出和数 int die1,die2,worksum;die1=1+rand()%6;die2=1+rand()%6;worksum=die1+die2;coutplayer rolled die1+die2=worksumendl;return worksum;22函 数 的 定 义 与 使 用22 计算机基础教研室计算机基础教研室#include#include using namespace std;int rolldice(void);void main()int gamestatus,sum,mypoint;unsigned seed;coutseed;/输入随机数种子输入随机数种子 srand(seed);/将种子传递给将种子传递给rand()sum=rolldice();/第一轮投骰子、计算和数第一轮投骰子、计算和数函 数 的 定 义 与 使 用23 计算机基础教研室计算机基础教研室 switch(sum)case 7:/如果和数为如果和数为7或或11则为胜则为胜,状态为状态为1 case 11:gamestatus=1;break;case 2:/和数为和数为2、3或或12则为负则为负,状态为状态为2 case 3:case 12:gamestatus=2;break;default:/其它情况其它情况,游戏尚无结果游戏尚无结果,状态为状态为0,记下点数记下点数,为下为下一轮做准备一轮做准备 gamestatus=0;mypoint=sum ;coutpoint is mypointendl;break;函 数 的 定 义 与 使 用24 计算机基础教研室计算机基础教研室 while(gamestatus=0)/只要状态仍为只要状态仍为 0,就继续进行下一轮就继续进行下一轮 sum=rolldice();if(sum=mypoint)/某轮的和数等于点数则取胜某轮的和数等于点数则取胜,状态置为状态置为1 gamestatus=1 ;else if(sum=7)/出现和数为出现和数为7则为负则为负,状态置为状态置为2 gamestatus=2;/当状态不为当状态不为0时上面的循环结束时上面的循环结束,以下程序段输出游戏结以下程序段输出游戏结果果 if(gamestatus=1)coutplayer winsn;else coutplayer losesn;运行结果:运行结果:Please enter an unsigned integer:23Please enter an unsigned integer:23player rolled 6+3=9player rolled 6+3=9point is 9point is 9player rolled 5+4=9player rolled 5+4=9player winsplayer wins函 数 的 定 义 与 使 用25 计算机基础教研室计算机基础教研室函数调用的执行过程函数调用的执行过程main()调调fun()结束结束fun()返回返回保存:保存:返回地址返回地址当前现场当前现场恢复:恢复:主调程序现场主调程序现场返回地址返回地址函 数 的 定 义 与 使 用26 计算机基础教研室计算机基础教研室嵌套调用嵌套调用main调调fun1()结束结束fun1()调调fun2()返回返回fun2()返回返回函 数 的 定 义 与 使 用27 计算机基础教研室计算机基础教研室 输入两个整数,求平方和输入两个整数,求平方和#include using namespace std;void main(void)int a,b;int fun1(int x,int y);cinab;couta、b的平方和的平方和fun1(a,b)endl;函 数 的 定 义 与 使 用28 计算机基础教研室计算机基础教研室int fun1(int x,int y)int fun2(int m);return(fun2(x)+fun2(y);int fun2(int m)return(m*m);运行结果:运行结果:3 43 4a a、b b的平方和:的平方和:2525函 数 的 定 义 与 使 用29 计算机基础教研室计算机基础教研室递归调用递归调用n 函数直接或间接地调用自身,称为递归调函数直接或间接地调用自身,称为递归调用。用。n 递归过程的两个阶段:递归过程的两个阶段:递推:递推:4!=43!3!=32!2!=21!1!=10!0!=1回归:回归:4!=43!=243!=32!=62!=21!=21!=10!=10!=1函 数 的 定 义 与 使 用30 计算机基础教研室计算机基础教研室求求n!分析:计算分析:计算n!的公式如下:的公式如下:这是一个递归形式的公式,应该用递归函数实现。这是一个递归形式的公式,应该用递归函数实现。函 数 的 定 义 与 使 用31 计算机基础教研室计算机基础教研室/源程序:源程序:#include using namespace std;long fac(int n)long f;if(n0)coutn0,data error!endl;else if(n=0)f=1;else f=fac(n-1)*n;return(f);函 数 的 定 义 与 使 用32 计算机基础教研室计算机基础教研室void main()long fac(int n);int n;long y;coutn;y=fac(n);coutn!=yendl;运行结果:运行结果:Enter a positive integer:8Enter a positive integer:88!=403208!=40320函 数 的 定 义 与 使 用33 计算机基础教研室计算机基础教研室组合数组合数n用递归法计算从用递归法计算从n n个人中选择个人中选择k k个人组成一个人组成一个委员会的不同组合数。个委员会的不同组合数。n分析:分析:由由n个人里选个人里选k个人的组合数个人的组合数=由由n-1个人里选个人里选k个人的组合数个人的组合数 +由由n-1个人里选个人里选k-1个人的组合数个人的组合数当当n=k或或k=0时,组合数为时,组合数为1函 数 的 定 义 与 使 用34 计算机基础教研室计算机基础教研室#includeusing namespace std;void main()int n,k;int comm(int n,int k);cinnk;coutcomm(n,k)n )return 0;else if(n=k|k=0 )return 1;else return comm(n-1,k)+comm(n-1,k-1);运行结果:运行结果:18 518 585688568函 数 的 定 义 与 使 用35 计算机基础教研室计算机基础教研室汉诺塔问题汉诺塔问题有三根针有三根针A、B、C。A针上有针上有N个盘子,大的个盘子,大的在下,小的在上,要求把这在下,小的在上,要求把这N个盘子从个盘子从A针移到针移到C针,针,在移动过程中可以借助在移动过程中可以借助B针,每次只允许移动一个针,每次只允许移动一个盘,且在移动过程中在三根针上都保持大盘在下,盘,且在移动过程中在三根针上都保持大盘在下,小盘在上。小盘在上。ABC函 数 的 定 义 与 使 用36 计算机基础教研室计算机基础教研室分析:分析:将将n 个盘子从个盘子从A针移到针移到C针可以分解为下面三个步骤:针可以分解为下面三个步骤:将将A 上上n-1个盘子移到个盘子移到 B针上(借助针上(借助C针)针);把把A针上剩下的一个盘子移到针上剩下的一个盘子移到C针上针上;将将n-1个盘子从个盘子从B针移到针移到C针上(借助针上(借助A针)针);事实事实上,上面三个步骤包含两种操作:上,上面三个步骤包含两种操作:将多个盘子从一个针移到另一个针上,这是一个将多个盘子从一个针移到另一个针上,这是一个递归的过程。递归的过程。hanoi函数实现。函数实现。将将1个盘子从一个针上移到另一针上。用个盘子从一个针上移到另一针上。用move函函数实现。数实现。函 数 的 定 义 与 使 用37 计算机基础教研室计算机基础教研室#include using namespace std;void move(char getone,char putone)cout getone putoneendl;void hanoi(int n,char one,char two,char three)void move(char getone,char putone);if(n=1)move(one,three);else hanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three);函 数 的 定 义 与 使 用38 计算机基础教研室计算机基础教研室void main()void hanoi(int n,char one,char two,char three);int m;coutm;coutthe steps to moving m diskes:CA-CA-BA-BC-BC-BA-CA-CB-AB-AB-CB-CA-CA-C函 数 的 定 义 与 使 用39 计算机基础教研室计算机基础教研室n在函数被调用时才分配形参的存储单元。在函数被调用时才分配形参的存储单元。n实参可以是常量、变量或表达式。实参可以是常量、变量或表达式。n实参类型必须与形参相符。实参类型必须与形参相符。n传递时是传递参数值,即单向传递。传递时是传递参数值,即单向传递。函 数 的 定 义 与 使 用函数的参数传递机制函数的参数传递机制传递参数值传递参数值40 计算机基础教研室计算机基础教研室参数值传递举例参数值传递举例XN被调函数:被调函数:主调函数:主调函数:3 2.5AD=power(A,3)2.53double power(double X,int N)函 数 的 定 义 与 使 用41 计算机基础教研室计算机基础教研室函 数 的 定 义 与 使 用函数调用过程函数调用过程42 计算机基础教研室计算机基础教研室输入两整数交换后输出输入两整数交换后输出#includeusing namespace std;void Swap(int a,int b);int main()int x(5),y(10);coutx=xy=yendl;Swap(x,y);coutx=xy=yendl;return 0;void Swap(int a,int b)int t;t=a;a=b;b=t;运行结果运行结果:x=5 x=5 y=10y=10 x=5 x=5 y=10y=10函 数 的 定 义 与 使 用43 计算机基础教研室计算机基础教研室a=b;5 x10 y5 a10 b执行主函数中的函数调用执行主函数中的函数调用Swap(x,y);t=a;5 x10 y5 a10 b5tb=t;5 x10 y10 a5 b5t5 x10 y10 a10 b5t在在Swap子函数中子函数中返回主函数以后返回主函数以后5x10y函 数 的 定 义 与 使 用44 计算机基础教研室计算机基础教研室函数的参数传递函数的参数传递用引用做形参用引用做形参n引用引用(&)是标识符的别名是标识符的别名,是一种派生数据类是一种派生数据类型,不占存储空间。型,不占存储空间。例如例如:int someInt;int&rInt=someInt;/建立一个建立一个int型的引用型的引用rInt,并将其并将其 /初始化为变量初始化为变量someInt的一个别名的一个别名n声明一个引用时,必须声明一个引用时,必须同时对它进行初始化同时对它进行初始化,使它指向一个已存在的对象。使它指向一个已存在的对象。n一旦一个引用被初始化后,一旦一个引用被初始化后,就不能改为指向就不能改为指向其它对象。其它对象。n引用可以作为形参引用可以作为形参 void void swap(intswap(int&a,&a,intint&b).(&b).(作用作用)函 数 的 定 义 与 使 用45 计算机基础教研室计算机基础教研室输入两个整数交换后输出输入两个整数交换后输出#includeusing namespace std;void Swap(int&a,int&b);int main()int x(5),y(10);coutx=x y=yendl;Swap(x,y);coutx=x y=yendl;return 0;void Swap(int&a,int&b)int t;t=a;a=b;b=t;运行结果运行结果:x=5 y=10 x=5 y=10 x=10 y=5x=10 y=5函 数 的 定 义 与 使 用46 计算机基础教研室计算机基础教研室x xy y105函 数 的 定 义 与 使 用47 计算机基础教研室计算机基础教研室内联函数声明与使用内联函数声明与使用n声明时使用关键字声明时使用关键字 inlineinline。n编译时在调用处用函数体进行替换编译时在调用处用函数体进行替换,节省了节省了参数传递、控制转移等开销。参数传递、控制转移等开销。n注意:注意:内联函数体内不能有循环语句和内联函数体内不能有循环语句和switch语句。语句。内联函数的声明必须出现在内联函数第一次被内联函数的声明必须出现在内联函数第一次被调用之前。调用之前。对内联函数不能进行异常接口声明。对内联函数不能进行异常接口声明。内 联 函 数48 计算机基础教研室计算机基础教研室内联函数应用举例内联函数应用举例#includeusing namespace std;inline double CalArea(double radius)return 3.14*radius*radius;int main()double r(3.0);double area;area=CalArea(r);coutareaendl;return 0;内 联 函 数49 计算机基础教研室计算机基础教研室默认形参值的作用默认形参值的作用n函数在声明时可以预先给出默认的形参值,函数在声明时可以预先给出默认的形参值,调用时如给出实参,则采用实参值,否则采调用时如给出实参,则采用实参值,否则采用预先给出的默认形参值。用预先给出的默认形参值。n例如:例如:int add(int x=5,int y=6)return x+y;void main(void)add(10,20);/10+20 add(10);/10+6 add();/5+6带 默 认 形 参 值 的 函 数50 计算机基础教研室计算机基础教研室默认形参值的说明次序默认形参值的说明次序n默认形参值必须默认形参值必须从右向左从右向左顺序声明,并且顺序声明,并且在默认形参值的右面不能有非默认形参值在默认形参值的右面不能有非默认形参值的参数。因为调用时实参取代形参是从左的参数。因为调用时实参取代形参是从左向右的顺序。向右的顺序。n例:例:int add(int x,int y=5,int z=6);/正确正确int add(int x=1,int y=5,int z);/错误错误int add(int x=1,int y,int z=6);/错误错误带 默 认 形 参 值 的 函 数51 计算机基础教研室计算机基础教研室默认形参值与函数的调用位置默认形参值与函数的调用位置n调用出现在函数体实现之前时,调用出现在函数体实现之前时,默认形参默认形参值必须在函数原形中给出值必须在函数原形中给出;而当调用出现;而当调用出现在函数体实现之后时,默认形参值需在函在函数体实现之后时,默认形参值需在函数实现时给出。数实现时给出。n例:例:int add(int x=5,int y=6);void main(void)add();/调用在实现前调用在实现前int add(int x,int y)return x+y;int add(int x=5,int y=6)return x+y;void main(void)add();/调用在实现后调用在实现后带 默 认 形 参 值 的 函 数52 计算机基础教研室计算机基础教研室默认形参值的作用域默认形参值的作用域n在相同的作用域内,默认形参值的说明应在相同的作用域内,默认形参值的说明应保持唯一,但如果在不同的作用域内,允保持唯一,但如果在不同的作用域内,允许说明不同的默认形参。许说明不同的默认形参。n例:例:int add(int x=1,int y=2);void main(void)int add(int x=3,int y=4);add();/使用局部默认形参值(使用局部默认形参值(实现实现3+4)void fun(void).add();/使用全局默认形参值(使用全局默认形参值(实现实现1+2)带 默 认 形 参 值 的 函 数53 计算机基础教研室计算机基础教研室重载函数的声明重载函数的声明nC+C+允许功能相近的函数在相同的作用域允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。方内以相同函数名声明,从而形成重载。方便使用,便于记忆。便使用,便于记忆。n例:例:形参形参类型类型不同不同int add(int x,int y);float add(float x,float y);形参形参个数个数不同不同int add(int x,int y);int add(int x,int y,int z);函 数 重 载54 计算机基础教研室计算机基础教研室注意事项注意事项n不要将不同功能的函数声明为重载函数,以免出现不要将不同功能的函数声明为重载函数,以免出现调用结果的误解、混淆。调用结果的误解、混淆。int add(int x,int y);int add(int a,int b);编译器不以形参名来区分编译器不以形参名来区分int add(int x,int y);void add(int x,int y);编译器不以返回值来区分编译器不以返回值来区分int add(int x,int y)return x+y;float add(float x,float y)return x-y;n重载函数的形参必须不同重载函数的形参必须不同:个数不同或类型不同个数不同或类型不同。n编译程序将根据实参和形参的类型及个数的最佳编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。匹配来选择调用哪一个函数。函 数 重 载55 计算机基础教研室计算机基础教研室重载函数应用举例重载函数应用举例编写三个名为编写三个名为add的重载函数,分别实的重载函数,分别实现两整数相加、两实数相加和两个复数相现两整数相加、两实数相加和两个复数相加的功能。加的功能。#includeusing namespace std;struct complexdouble real;double imaginary;函 数 重 载56 计算机基础教研室计算机基础教研室void main(void)int m,n;double x,y;complex c1,c2,c3;int add(int m,int n);double add(double x,double y);complex add(complex c1,complex c2);coutmn;coutinteger m+n=add(m,n)endl;函 数 重 载57 计算机基础教研室计算机基础教研室coutxy;coutreal number x+y=add(x,y)endl;coutc1.realc1.imaginary;coutc2.realc2.imaginary;c3=add(c1,c2);coutcomplex number(c1.real,c1.imaginary)+(c2.real,c2.imaginary)=(c3.real,c3.imaginary)n;函 数 重 载58 计算机基础教研室计算机基础教研室int add(int m,int n)return m+n;double add(double x,double y)return x+y;complex add(complex c1,complex c2)complex c;c.real=c1.real+c2.real;c.imaginary=c1.imaginary+c2.imaginary;return c;运行结果:运行结果:Enter two integer:3 5Enter two integer:3 5integer 3+5=8integer 3+5=8Enter two real number:2.3 5.8Enter two real number:2.3 5.8real number 2.3+5.8=8.1real number 2.3+5.8=8.1Enter the first complex number:12.3 45.6Enter the first complex number:12.3 45.6Enter the second complex number:56.7 67.8Enter the second complex number:56.7 67.8complex number(12.3,45.6)+(56.7,67.8)=(69,113.4)complex number(12.3,45.6)+(56.7,67.8)=(69,113.4)函 数 重 载59 计算机基础教研室计算机基础教研室

    注意事项

    本文(C 语言 课件 第3章函数.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开