欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++经典函数例题——函数的定义和调用方法、重载函数及系统函数的使用

程序员文章站 2022-03-17 13:00:50
...

一、函数定义格式:
返回类型 函数名(参数列表)
{
函数体;
}

  • 自定义函数的返回类型,可以是int、double、char等,如果没有返回值,则类型可以为void。
  • 函数名是标识符,其名字要按照标识符的规则取名。
  • 参数列表中,可以有一个或多个参数,参数之间用逗号隔开,其中每个参数都是由参数类型和参数名组成,参数列表也可以为空。
  • 除了返回类型是void的自定义函数,函数体中至少有一条语句是return表达式,用来返回函数的值。

例题:
1、编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9

#include<iostream>
using namespace std;
//定义一个转换温度的函数
int exchange(int F)
{   
 int C;    
 C=(F-32)*5/9;	 
 return C;
 }
 void main()
 {	
 int x;	
 cin>>x;
 cout<<exchange(x)<<endl;//在主函数中调用exchange()函数
 }

输入:32
输出:0

二、重载函数
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。

例题:
2、编写重载函数max1可分别求取两个整数,三个整数,两个浮点数,三个浮点数的最大值。

#include<iostream>
using namespace std;
int maxl(int x ,int y)//返回两个整数中的最大值
{
return (x>y?x:y);
}
int maxl(int x,int y,int z)//返回三个整数中的最大值
{  
 int t;
 t=maxl(x,y);
 return (t>z?t:z);
 }
 float maxl(float x,float y)//返回两个浮点数中的最大值
 {	
 return (x>y?x:y);
 }
 float maxl(float x,float y,float z)//返回三个浮点数中的最大值
 {   
        int t;
 	t=maxl(x,y);	
 	return (t>z?t:z);
 	}
 void main()
 {
 int a,b,c;
 float x,y,z;
 cout<<"输入两个整数:"<<endl;
 cin>>a>>b;
 cout<<"大:"<<maxl(a,b)<<endl;
 cout<<"输入三个整数:"<<endl;
 cin>>a>>b>>c;
 cout<<"大:"<<maxl(a,b,c)<<endl;
 cout<<"输入两个浮点数:"<<endl;
 cin>>x>>y;cout<<"大:"<<maxl(x,y)<<endl;
 cout<<"输入三个浮点数:"<<endl;
 cin>>x>>y>>z;
 cout<<"大:"<<maxl(x,y,z)<<endl;
 }

Eg:
输入两个整数:2 9
大:9
输入三个整数:3 8 6
大:8
输入两个浮点数:3.0 9.7
大:9.7
输入三个浮点数:4.6 8.9 7.3
大:8

上面程序中声明的4个函数互为重载函数,它们之间满足参数类型不同和参数个数不同两个条件中的一个或两个,编译器就会根据参数的不同,自动找到要调用的函数。

3、使用系统函数pow(x,y)计算xy的值,注意包含头文件math.h。

#include<iostream>
#include<math.h>
using namespace std;
void main()
{	
int x,y;	
cout<<"x=";	
cin>>x;	
cout<<"y=";	
cin>>y;
cout<<"x^y="<<pow(x,y)<<endl;
}

Eg:
x=3
y=2
x^y=9

4、计算3的阶乘

#include<iostream>
using namespace std;
int fun(int x)
{
int N,s=1;
for(N=1;N<=x;N++)
{s=s*N;}
return s;
}

void main()
{int x,N;
cin>>N;
x=fun(N);
cout<<N<<"!="<<x<<endl; 
	}

输入:3
输出:3!=6

心得体会:
1、在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。不能仅通过返回类型的不同来重载函数
2、函数调用运算符 () 可以被重载用于类的对象。当重载 () 时,您不是创造了一种新的调用函数的方式,相反地,这是创建一个可以传递任意数目参数的运算符函数