C++语言程序设计三.ppt

上传人(卖家):三亚风情 文档编号:3376560 上传时间:2022-08-25 格式:PPT 页数:74 大小:712.50KB
下载 相关 举报
C++语言程序设计三.ppt_第1页
第1页 / 共74页
C++语言程序设计三.ppt_第2页
第2页 / 共74页
C++语言程序设计三.ppt_第3页
第3页 / 共74页
C++语言程序设计三.ppt_第4页
第4页 / 共74页
C++语言程序设计三.ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

1、2021/7/261(最新整理)C+语言程序设计(清华大学郑莉)三2021/7/262第三章第三章 函数函数清华大学清华大学 郑郑 莉莉C+语言程序设计C+语言程序设计清华大学 郑莉2021/7/263本章主要内容本章主要内容l函数的定义和调用函数的定义和调用l函数间的参数传递函数间的参数传递l内联函数内联函数l带默认形参值的函数带默认形参值的函数l函数重载函数重载lC+系统函数系统函数l深度探索深度探索C+语言程序设计清华大学 郑莉2021/7/264函数的定义函数的定义l函数是面向对象程序设计中,对功能的函数是面向对象程序设计中,对功能的抽象抽象l函数定义的语法形式函数定义的语法形式类型标

2、识符 函数名(形式参数表)语句序列函数的声明与使用是被初始化的内部变量,寿命和可见性仅限于函数内部若无返回值,写voidC+语言程序设计清华大学 郑莉2021/7/265函数的定义函数的定义l形式参数表形式参数表 name1,name2,.,namenl函数的返回值函数的返回值由 return 语句给出,例如:return 0无返回值的函数(void类型),不必写return语句。函数的声明与使用C+语言程序设计清华大学 郑莉2021/7/266函数的调用函数的调用l调用前先声明函数:调用前先声明函数:若函数定义在调用点之前,则无需另外声明;若函数定义在调用点之后,则需要在调用函数前按如下形式

3、声明函数原型:类型标识符 被调用函数名(含类型说明的形参表);l调用形式调用形式 函数名(实参列表)l嵌套调用嵌套调用函数可以嵌套调用,但不允许嵌套定义。l递归调用递归调用函数直接或间接调用自身。函数的声明与使用C+语言程序设计清华大学 郑莉2021/7/267例例3-1编写一个求编写一个求x的的n次方的函数次方的函数#include include using namespace std;using namespace std;/计算计算x的的n次方次方double power(double x,int n)double power(double x,int n)double val=1.0

4、;double val=1.0;while(n-)val while(n-)val*=x;=x;return val;return val;int main()int main()cout 5 to the power 2 is cout 5 to the power 2 is powerpower(5,2)endl;(5,2)endl;return 0;return 0;函数的声明与使用C+语言程序设计清华大学 郑莉2021/7/268运行结果:运行结果:5 to the power 2 is 255 to the power 2 is 25例例3-1编写一个求编写一个求x的的n次方的函数次

5、方的函数函数的声明与使用C+语言程序设计清华大学 郑莉2021/7/269例例3-2 数制转换数制转换题目:题目:输入一个输入一个8 8位二进制数,将其转换位二进制数,将其转换为十进制数输出。为十进制数输出。例如:例如:110111012 2=1(2=1(23 3)+1(2)+1(22 2)+0(2)+0(21 1)+1(2)+1(20 0)=13)=131010 所以,如果输入所以,如果输入11011101,则应输出,则应输出1313函数的声明与使用#include include using namespace std;using namespace std;/计算计算x的的n次方次方do

6、uble double powerpower(double x,int n);(double x,int n);int main()int main()int value=0;int value=0;cout Enter an 8 bit binary number ;cout=0;i-)for(int i=7;i=0;i-)char ch;char ch;cin ch;cin ch;if(ch=1)if(ch=1)value+=static_cast(value+=static_cast(powerpower(2,i);(2,i);cout Decimal value is value en

7、dl;cout Decimal value is value endl;return 0;return 0;double double powerpower(double x,int n)(double x,int n)double val=1.0;double val=1.0;while(n-)while(n-)val val*=x;=x;return val;return val;运行结果:运行结果:Enter an 8 bit binary number Enter an 8 bit binary number 0110100101101001Decimal value is 105De

8、cimal value is 10510C+语言程序设计清华大学 郑莉2021/7/2611例例3-3编写程序求编写程序求的值的值其中其中arctanarctan用如下形式的级数计算:用如下形式的级数计算:直到级数某项绝对值不大于直到级数某项绝对值不大于1010-15-15为止;为止;和和x x均为均为doubledouble型。型。函数的声明与使用2391arctan451arctan16357arctan357xxxxx#include#include using namespace std;using namespace std;double arctan(double x)double

9、 arctan(double x)double sqr=x double sqr=x*x;x;double e=x;double e=x;double r=0;double r=0;int i=1;int i=1;while(e/i 1e-15)while(e/i 1e-15)double f=e/i;double f=e/i;r=(i%4=1)?r+f:r-f;r=(i%4=1)?r+f:r-f;e=e e=e*sqr;sqr;i+=2;i+=2;return r;return r;12int main()int main()double a=16.0 double a=16.0*arcta

10、n(1/5.0)arctan(1/5.0);double b=4.0 double b=4.0*arctan(1/239.0)arctan(1/239.0);/注意:因为整数相除结果取整,如果参数写注意:因为整数相除结果取整,如果参数写1/51/5,1/2391/239,结果就都是,结果就都是0 0cout PI=a-b endl;cout PI=a-b endl;return 0;return 0;运行结果:运行结果:PI=3.14159PI=3.1415913C+语言程序设计清华大学 郑莉2021/7/2614例例3-4l寻找并输出寻找并输出1111999999之间的数之间的数m m,它满

11、足,它满足m m、m m2 2和和m m3 3均为回文数。均为回文数。回文:各位数字左右对称的整数。例如:11满足上述条件 112 2=121,113 3=1331。l分析:分析:10取余的方法,从最低位开始,依次取出该数的各位数字。按反序重新构成新的数,比较与原数是否相等,若相等,则原数为回文。函数的声明与使用#include#include using namespace std;using namespace std;/判断判断n n是否为回文数是否为回文数bool symm(unsigned n)bool symm(unsigned n)unsigned i=n;unsigned i=

12、n;unsigned m=0;unsigned m=0;while(while(i 0i 0)m=m=m m*10+i%10 10+i%10;i/=10;i/=10;return m=n;return m=n;15int main()int main()for(unsigned m=11;m 1000;m+)for(unsigned m=11;m 1000;m+)if(if(symmsymm(m)&(m)&symmsymm(m(m*m)&m)&symm symm(m(m*m m*m)m)cout m=m;cout m=m;cout m cout m*m=m m=m*m;m;cout m cou

13、t m*m m*m=m=m m*m m*m endl;m endl;return 0;return 0;16运行结果:运行结果:m=11 mm=11 m*m=121 mm=121 m*m m*m=1331m=1331m=101 mm=101 m*m=10201 mm=10201 m*m m*m=1030301m=1030301m=111 mm=111 m*m=12321 mm=12321 m*m m*m=1367631m=136763117C+语言程序设计清华大学 郑莉2021/7/2618例例3-5计算如下公式,并输出结果:计算如下公式,并输出结果:其中其中r r、s s的值由键盘输入。的值

14、由键盘输入。sin xsin x的近似的近似值按如下公式计算,计算精度为值按如下公式计算,计算精度为1010-6-6:函数的声明与使用1121753)!12()1(!7!5!3!1sinnnnnxxxxxx222222sinsinr1sin()r2rsskrss当当#include#include#include /#include /对对C+C+标准库中数学函数的说明标准库中数学函数的说明using namespace std;using namespace std;const double TINY_VALUE=1e-10;const double TINY_VALUE=1e-10;dou

15、ble tsin(double x)double tsin(double x)double g=0;double g=0;double t=x;double t=x;int n=1;int n=1;do do g+=t;g+=t;n+;n+;t=-t t=-t*x x*x/(2 x/(2*n-1)/(2 n-1)/(2*n-2);n-2);while(fabs(t)=TINY_VALUE);while(fabs(t)=TINY_VALUE);return g;return g;19int main()int main()double k,r,s;double k,r,s;cout r=;cou

16、t r;cin r;cout s=;cout s;cin s;if(r if(r*r=s r=s*s)s)k=sqrt(k=sqrt(tsintsin(r)(r)*tsintsin(r)+(r)+tsintsin(s)(s)*tsin(s);tsin(s);elseelsek=k=tsintsin(r(r*s)/2;s)/2;cout k endl;cout k endl;return 0;return 0;运行结果:r=5s=81.3778120C+语言程序设计清华大学 郑莉2021/7/2621例例3-6投骰子的随机游戏投骰子的随机游戏每个骰子有六面,点数分别为每个骰子有六面,点数分别为1

17、 1、2 2、3 3、4 4、5 5、6 6。游戏者在程序开始时输入一个无符号整数,作为产生游戏者在程序开始时输入一个无符号整数,作为产生随机数的种子。随机数的种子。每轮投两次骰子,第一轮如果和数为每轮投两次骰子,第一轮如果和数为7 7或或1111则为胜,则为胜,游戏结束;和数为游戏结束;和数为2 2、3 3或或1212则为负,游戏结束;和数则为负,游戏结束;和数为其它值则将此值作为自己的点数,继续第二轮、第为其它值则将此值作为自己的点数,继续第二轮、第三轮三轮.直到某轮的和数等于点数则取胜,若在此前直到某轮的和数等于点数则取胜,若在此前出现和数为出现和数为7 7则为负。则为负。由由rolld

18、icerolldice函数负责模拟投骰子、计算和数并输函数负责模拟投骰子、计算和数并输出和数。出和数。函数的声明与使用lrandrand函数原型:int rand(void);所需头文件:功能和返回值:求出并返回一个伪随机数lsrandsrand函数原型:void srand(unsigned int seed);参数:seed产生随机数的种子。所需头文件:功能:为使rand()产生一序列伪随机整数而设置起始点。使用1作为seed参数,可以重新初化rand()。22#include#include#include#include using namespace std;using namesp

19、ace std;/投骰子、计算和数、输出和数投骰子、计算和数、输出和数int rollDice()int rollDice()int die1=1+rand()%6;int die1=1+rand()%6;int die2=1+rand()%6;int die2=1+rand()%6;int sum=die1+die2;int sum=die1+die2;cout player rolled die1 +cout player rolled die1 +die2 =sum endl;die2 =sum endl;return sum;return sum;23enum GameStatus W

20、IN,LOSE,PLAYING;enum GameStatus WIN,LOSE,PLAYING;int main()int main()int sum,myPoint;int sum,myPoint;GameStatus status;GameStatus status;unsigned seed;unsigned seed;cout Please enter an unsigned integer:;cout seed;/cin seed;/输入随机数种子输入随机数种子srand(seed);/srand(seed);/将种子传递给将种子传递给rand()rand()sum=sum=rol

21、lDicerollDice();/();/第一轮投骰子、计算和数第一轮投骰子、计算和数24switch(sum)switch(sum)case 7:/case 7:/如果和数为如果和数为7 7或或1111则为胜则为胜,状态为状态为WINWINcase 11:case 11:status=WIN;status=WIN;break;break;case 2:/case 2:/和数为和数为2 2、3 3或或1212则为负则为负,状态为状态为LOSELOSEcase 3:case 3:case 12:case 12:status=LOSE;status=LOSE;break;break;default

22、:/default:/其它情况其它情况,游戏尚无结果游戏尚无结果,状态为状态为PLAYING,PLAYING,记记下点数下点数,为下一轮做准备为下一轮做准备 status=PLAYING;status=PLAYING;myPoint=sum;myPoint=sum;cout point is myPoint endl;cout point is myPoint endl;break;break;25while(status=PLAYING)/while(status=PLAYING)/只要状态仍为只要状态仍为PLAYING,PLAYING,就继续就继续进行下一轮进行下一轮 sum=sum=ro

23、llDicerollDice();();if(sum=myPoint)/if(sum=myPoint)/某轮的和数等于点数则取胜某轮的和数等于点数则取胜 status=WIN;status=WIN;else if(sum=7)/else if(sum=7)/出现和数为出现和数为7 7则为负则为负 status=LOSE;status=LOSE;/当状态不为当状态不为PLAYINGPLAYING时上面的循环结束时上面的循环结束,以下程序段输出游戏结以下程序段输出游戏结果果if(status=WIN)if(status=WIN)cout player wins endl;cout player w

24、ins endl;elseelse cout player loses endl;cout player loses endl;return 0;return 0;26运行结果运行结果2 2: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 wins27C+语言程序设计清华大学 郑

25、莉2021/7/2628嵌套调用嵌套调用函数的声明与使用main调fun1()结束fun1()调fun2()返回fun2()返回C+语言程序设计清华大学 郑莉2021/7/2629例例3-6 输入两个整数,求平方和。输入两个整数,求平方和。#include#include using namespace std;using namespace std;int int fun2fun2(int m)(int m)return m return m*m;m;int int fun1fun1(int x,int y)(int x,int y)return return fun2fun2(x)+(x)

26、+fun2fun2(y);(y);函数的声明与使用int main()int main()int a,b;int a,b;cout Please enter two integers(a cout a b;cin a b;cout The sum of square of a and cout The sum of square of a and b:b:fun1fun1(a,b)endl;(a,b)endl;return 0;return 0;运行结果:运行结果:Please enter two integers(a and b):3 4Please enter two integers(a

27、 and b):3 4The sum of square of a and b:25The sum of square of a and b:2530C+语言程序设计清华大学 郑莉2021/7/2631递归调用递归调用l函数直接或间接地调用自身,称为递归调用。l递归过程的两个阶段:递推:4!=43!3!=32!2!=21!1!=10!0!=1未知 已知回归:4!=43!=243!=32!=62!=21!=21!=10!=10!=1未知未知 已知已知函数的声明与使用C+语言程序设计清华大学 郑莉2021/7/2632例例3-8 求求n!分析:计算n!的公式如下:这是一个递归形式的公式,应该用递归

28、函数实现。函数的声明与使用)0()!1()0(1!nnnnn源程序:源程序:#include#include using namespace std;using namespace std;unsigned unsigned facfac(int n)(int n)unsigned f;unsigned f;if(n=0)if(n=0)f=1;f=1;else else f=f=facfac(n-1)(n-1)*n;n;return f;return f;33int main()int main()unsigned n;unsigned n;cout Enter a positive inte

29、ger:;cout n;cin n;unsigned y=unsigned y=facfac(n);(n);cout n !=y endl;cout n !=y endl;return 0;return 0;运行结果:运行结果:Enter a positive integer:8Enter a positive integer:88!=403208!=4032034C+语言程序设计清华大学 郑莉2021/7/2635例例3-9l用递归法计算从用递归法计算从n n个人中选择个人中选择k k个人组个人组成一个委员会的不同组合数。成一个委员会的不同组合数。l分析:分析:由n个人里选k个人的组合数=由

30、n-1个人里选k个人的组合数 +由n-1个人里选k-1个人的组合数当n=k或k=0时,组合数为1函数的声明与使用#include#include using namespace std;using namespace std;int comm(int n,int k)int comm(int n,int k)if(k n)if(k n)return 0;return 0;else if(n=k|k=0)else if(n=k|k=0)return 1;return 1;elseelse return comm(n-1,k)+comm(n-1,k-1);return comm(n-1,k)+co

31、mm(n-1,k-1);int main()int main()int n,k;int n,k;cout Please enter two integers n and k:;cout n k;cin n k;cout C(n,k)=comm(n,k)endl;cout C(n,k)=comm(n,k)endl;return 0;return 0;运行结果:18 5856836C+语言程序设计清华大学 郑莉2021/7/2637例例3-10汉诺塔问题汉诺塔问题有三根针有三根针A A、B B、C C。A A针上有针上有N N个盘子,大个盘子,大的在下,小的在上,要求把这的在下,小的在上,要求把这

32、N N个盘子从个盘子从A A针针移到移到C C针,在移动过程中可以借助针,在移动过程中可以借助B B针,每次针,每次只允许移动一个盘,且在移动过程中在三根只允许移动一个盘,且在移动过程中在三根针上都保持大盘在下,小盘在上。针上都保持大盘在下,小盘在上。函数的声明与使用ABC分析:分析:将将n n 个盘子从个盘子从A A针移到针移到C C针可以分解为下面三个步骤:针可以分解为下面三个步骤:将将A A 上上n-1n-1个盘子移到个盘子移到 B B针上(借助针上(借助C C针)针);把把A A针上剩下的一个盘子移到针上剩下的一个盘子移到C C针上针上;将将n-1n-1个盘子从个盘子从B B针移到针移

33、到C C针上(借助针上(借助A A针)针);事实上,上面三个步骤包含两种操作:事实上,上面三个步骤包含两种操作:将多个盘子从一个针移到另一个针上,这是一个递将多个盘子从一个针移到另一个针上,这是一个递归的过程。归的过程。hanoihanoi函数实现。函数实现。将将1 1个盘子从一个针上移到另一针上。个盘子从一个针上移到另一针上。用用movemove函数实现。函数实现。38#include#include using namespace std;using namespace std;/把把srcsrc针的最上面一个盘子移动到针的最上面一个盘子移动到destdest针上针上void move(c

34、har src,char dest)void move(char src,char dest)cout src dest endl;cout src dest endl;/把把n n个盘子从个盘子从srcsrc针移动到针移动到destdest针,以针,以mediummedium针作为中介针作为中介void hanoi(int n,char src,char medium,char dest)void hanoi(int n,char src,char medium,char dest)if(n=1)if(n=1)move(src,dest);move(src,dest);else else h

35、anoi(n-1,src,dest,medium);hanoi(n-1,src,dest,medium);move(src,dest);move(src,dest);hanoi(n-1,medium,src,dest);hanoi(n-1,medium,src,dest);39int main()int main()int m;int m;cout Enter the number of diskes:;cout m;cin m;cout the steps to moving m cout the steps to moving m diskes:endl;diskes:CA-CA-BA-B

36、C-BC-BA-CA-CB-AB-AB-CB-CA-CA-C41C+语言程序设计清华大学 郑莉2021/7/2642函数的参数传递机制函数的参数传递机制 传递参数值传递参数值l在函数被调用时才分配形参的存储在函数被调用时才分配形参的存储单元。单元。l实参可以是常量、变量或表达式。实参可以是常量、变量或表达式。l实参类型必须与形参相符。实参类型必须与形参相符。l传递时是传递参数值,即单向传递。传递时是传递参数值,即单向传递。函数的声明与使用C+语言程序设计清华大学 郑莉2021/7/2643函数的参数传递机制函数的参数传递机制 参数值传递举例参数值传递举例XN被调函数:被调函数:主调函数:主调函

37、数:3 3 2.5 2.5AD=power(A,3)2.5 2.53 3double power(double X,int N)函数的声明与使用C+语言程序设计清华大学 郑莉2021/7/2644例例3-11 输入两个整数交换后输出输入两个整数交换后输出#include#includeusing namespace std;using namespace std;void void swapswap(int a,int b)(int a,int b)int t=a;int t=a;a=b;a=b;b=t;b=t;函数的声明与使用int main()int main()int x=5,y=10;

38、int x=5,y=10;cout x=x y=y endl;cout x=x y=y endl;swapswap(x,y);(x,y);cout x=x y=y endl;cout x=x y=y endl;return 0;return 0;运行结果运行结果:x=5 y=10 x=5 y=10 x=5 y=10 x=5 y=1045a=b;5 x10 y5 a10 b执行主函数中的函数调用swap(x,y);swap(x,y);t=a;5 x10 y5 a10 b5tb=t;5 x10 y10 a5 b5t5 x10 y10 a10 b5t在swap子函数中返回主函数以后5x x10y46

39、46C+语言程序设计清华大学 郑莉2021/7/2647函数的参数传递函数的参数传递 用引用做形参用引用做形参l引用引用(&)(&)是标识符的别名是标识符的别名,例如例如:int i,j;int&ri=i;/建立一个int型的引用ri,并将其 /初始化为变量i的一个别名j=10;ri=j;/相当于 i=j;l声明一个引用时,必须同时对它进行初始化,声明一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象。使它指向一个已存在的对象。l一旦一个引用被初始化后,就不能改为指向一旦一个引用被初始化后,就不能改为指向其它对象。其它对象。l引用可以作为形参引用可以作为形参void swap(int

40、&a,int&b).void swap(int&a,int&b).函数的声明与使用C+语言程序设计清华大学 郑莉2021/7/2648例例3-12 输入两个整数交换后输出输入两个整数交换后输出#include#includeusing namespace std;using namespace std;void void swapswap(int(int&a,int a,int&b)b)int t=a;int t=a;a=b;a=b;b=t;b=t;int main()int main()int x=5,y=10;int x=5,y=10;cout x=x y=y endl;cout x=x

41、y=y endl;swapswap(x,y);(x,y);cout x=x y=y endl;cout x=x y=y endl;return 0;return 0;函数的声明与使用运行结果运行结果:x=x=5 5 y=10 y=10 x=10 y=x=10 y=5 5t=a;x x5t5x 的引用a ax xy y510y 的引用x 的引用a ab by 的引用x 的引用a ab bx x10y y10a=bb=t;y5t5y 的引用b bx xy y105swap(x,y);49C+语言程序设计清华大学 郑莉2021/7/2650内联函数声明与使用内联函数声明与使用l声明时使用关键字声明时

42、使用关键字 inlineinline。l编译时在调用处用函数体进行替换编译时在调用处用函数体进行替换,节省了参数传递、控制转移等开销。节省了参数传递、控制转移等开销。l注意:注意:内联函数体内不能有循环语句和switch语句。内联函数的声明必须出现在内联函数第一次被调用之前。对内联函数不能进行异常接口声明。内联函数C+语言程序设计清华大学 郑莉2021/7/2651例例3-14 内联函数应用举例内联函数应用举例#include#include using namespace std;using namespace std;const double PI=3.14159265358979;con

43、st double PI=3.14159265358979;inline double calArea(double radius)inline double calArea(double radius)return PI return PI*radius radius*radius;radius;int main()int main()double r=3.0;double r=3.0;double areadouble area=calArea(r);=calArea(r);cout area endl;cout area endl;return 0;return 0;内联函数C+语言程序

44、设计清华大学 郑莉2021/7/2652缺省形参值的作用缺省形参值的作用l函数在声明时可以预先给出缺省的形参值,函数在声明时可以预先给出缺省的形参值,调用时如给出实参,则采用实参值,否则采调用时如给出实参,则采用实参值,否则采用预先给出的缺省形参值。用预先给出的缺省形参值。l例如:例如:int add(int x=5,int y=6)return x+y;int main()add(10,20);/10+20add(10);/10+6add();/5+6带缺省形参值的函数C+语言程序设计清华大学 郑莉2021/7/2653缺省形参值的说明次序缺省形参值的说明次序l有缺省参数的形参必须在形参列表

45、的最后,有缺省参数的形参必须在形参列表的最后,也就是说缺省形参值的右面不能有无缺省也就是说缺省形参值的右面不能有无缺省值的参数。因为调用时实参与形参的结合值的参数。因为调用时实参与形参的结合是从左向右的顺序。是从左向右的顺序。l例:例: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);/错误带缺省形参值的函数C+语言程序设计清华大学 郑莉2021/7/2654缺省形参值与函数的调用位置缺省形参值与函数的调用位置l如果一个函数有原型声明,且原型声明在

46、定义之前,则缺如果一个函数有原型声明,且原型声明在定义之前,则缺省形参值必须在函数原型声明中给出;而如果只有函数的省形参值必须在函数原型声明中给出;而如果只有函数的定义,或函数定义在前,则缺省形参值需在函数定义中给定义,或函数定义在前,则缺省形参值需在函数定义中给出。出。l例:例:int add(int x=5,int y=6);/原型声明在前int main()add();int add(int x,int y)/此处不能再指定缺省值 return x+y;int add(int x=5,int y=6)/只有定义,没有原型声明 return x+y;int main()add();带缺省形

47、参值的函数C+语言程序设计清华大学 郑莉2021/7/2655重载函数的声明重载函数的声明lC+C+允许功能相近的函数在相同的作用域内以允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。方便使用,相同函数名声明,从而形成重载。方便使用,便于记忆。便于记忆。l例:例:形参类型不同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);函 数 重 载C+语言程序设计清华大学 郑莉2021/7/2656注意事项注意事项 不要将不同功能的函

48、数声明为重载函数,以免出现调用结果的误解、混淆。这样不好: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;函 数 重 载重载函数的形参必须不同:个数不同或类型不同。编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。C+语言程序设计清华大学 郑莉2021/7/2657例例3-16重

49、载函数应用举例重载函数应用举例编写两个名为编写两个名为sumOfSquaresumOfSquare的重载函数,分别求的重载函数,分别求两整数的平方和及两实数的平方和。两整数的平方和及两实数的平方和。#include#include using namespace std;using namespace std;int sumOfSquare(int a,int b)int sumOfSquare(int a,int b)return a return a*a+b a+b*b;b;double sumOfSquare(double a,double b)double sumOfSquare(do

50、uble a,double b)return a return a*a+b a+b*b;b;函 数 重 载int main()int main()int m,n;int m,n;cout Enter two integer:;cout m n;cin m n;cout Their sum of square:sumOfSquare(m,n)cout Their sum of square:sumOfSquare(m,n)endl;endl;double x,y;double x,y;cout Enter two real number:;cout x y;cin x y;cout Their

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C++语言程序设计三.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|