1、默认参数练习
创建默认参数函数 void stars(int cols ,int rows ) 该函数默认缺省值cols是10 rows是1。该函数完成功能是根据行和列数显示一个由星号组成的矩形。在main函数仲按照默认值调用该函数。按照cols是5调用该函数。按照列数和行数是7,3 调用该函数
#include<iostream>
using namespace std;
void stars(int cols=10,int rows=1);
int main()
{
stars();
cout<<endl;
stars(5);
cout<<endl;
stars(7,3);
cout<<endl;
}
void stars(int cols,int rows)
{
for(int i=0;i<rows;i++)
{
for(int j=0;j<cols;j++)
{
cout<<'*';
}
cout<<endl;
}
}
2、函数的重载练习
double calcWeeklyPay ( int , double ) ; //计算计时员工的周薪,周薪=工作时数* 单位小时工资,参数是工作时数*单位小时工资
double calcWeeklyPay ( double ) ;//计算员工的周薪,参数为年薪。周薪=年薪/52 返回周薪
输入界面如下:如果输入的不是H S h s要提示重复输入。根据输入的字符选择上面不同的函数调用
#include<iostream>
using namespace std;
double calcWeeklyPay(int hours,double money);
double cacWeeklyPay(double years);
int main()
{
char a;
int hours;
double money,years;
cout<<"请选择计算工资的方式"<<endl;
cout<<"(H)计算计时的工资"<<endl;
cout<<"(S)计算员工的工资"<<endl;
cout<<"请输入H或S"<<endl;
cin>>a;
while(!(a=='H'||a=='h'||a=='S'||a=='s'))
{
cout<<"输入错误继续输入"<<endl;
cin>>a;
}
if(a=='H'||a=='h')
{
cout<<"请输入工作时数和单位小时工资"<<endl;
cin>>hours>>money;
cout<<calcWeeklyPay(hours,money);
}
if(a=='S'||a=='s')
{
cout<<"请输入年薪"<<endl;
cin>>years;
cout<<cacWeeklyPay(years);
}
}
double calcWeeklyPay(int hours,double money)
{
return hours*money;
}
double cacWeeklyPay(double years)
{
return years/52.0;
}
3、函数模板练习一
template < 类型参数表 >
返回值类型 函数名 ( 形式参数表 )
{
// 函数体
}
例如:
template < class T >
T square ( T number )
{
return number * number ;
}
例如:
template < class T1 , class T2>
void swap ( T1 &var1 , T2 &var2 )
{ T1 temp ;
temp = var1 ;
var1 = ( T1 ) var2 ;
var2 = ( T2 ) temp ;
}
利用函数模板定义void swaps 参数是不确定数据类型的两个变量。 完成功能是交换两个变量的值。
在main函数中输入两个字符型变量,调用swaps完成交换,输出变量值;输入两个整数类型变量,调用swaps完成交换,输出变量值;输入两个浮点数变量,调用swaps完成交换,输出变量值;
#include<iostream>
using namespace std;
template<class T>
void swaps(T &x,T &y)
{
T t;
t=x;
x=y;
y=t;
}
int main()
{
char x,y;
cin>>x>>y;
swaps(x,y);
cout<<x<<" "<<y<<endl;
int a,b;
cin>>a>>b;
swaps(a,b);
cout<<a<<" "<<b<<endl;
double c,d;
cin>>c>>d;
swaps(c,d);
cout<<c<<" "<<d;
}
这个函数模板中的表示该函数模板有一个类型参数T,在函数实例化时可以指定具体的类型。在函数体中,我们可以使用T作为一种类型来定义变量、进行类型转换等操作。这样就可以实现一个可以处理多种数据类型的通用函数。
另外,使用template定义的函数模板也可以改写为template,两者在语法上是等价的。class和typename都可以用来定义模板类型参数,但是在模板定义中通常使用typename,在模板的模板参数中使用class
4、函数模板练习二
创建函数模板sum 可以计算不同类型的两个参数的和,返回两者之和; 创建函数模板sum 可以计算三个同类型参数的和,返回值为三者之和。
在main函数中输入 一个字符一个整数 运算两者之和;输入一个整数一个实数,运算两个之和。输入三个实数运算之和
#include<iostream>
using namespace std;
template <class T1,class T2>
T1 sum(T1 a,T2 b)
{
return a+b;
}
template <class T>
T sum(T a,T b,T c)
{
return a+b+c;
}
int main()
{
int x;
char y;
double z,a,b;
cout<<"输入 一个字符一个整数"<<endl;
cin>>y>>x;
cout<<sum(y,x)<<endl;
cout<<"输入一个整数一个实数"<<endl;
cin>>x>>z;
cout<<sum(x,z)<<endl;
cout<<"输入 三个实数"<<endl;
cin>>z>>a>>b;
cout<<sum(z,a,b)<<endl;
}