编写一个名为max()的函数,用于求包含n个元素的数组的最大值,要求通过函数重载能求int、double、char、string的最大值。
函数接口定义:
int max(int *a, int n) ; double max(double *a, int n) ; char max(char *a, int n); string max(string *a, int n);
其中 a
和 n
都是用户传入的参数。 a
是数组首地址,n是数组元素个数,不超过20个。
裁判测试程序样例:
#include <iostream> using namespace std; int max(int *a, int n) ; double max(double *a, int n) ; char max(char *a, int n); string max(string *a, int n) ; int main() { int n; cin>>n; int aint[n]; double adouble[n]; char achar[n]; string astring[n]; for(int i=0;i<n;i++) { cin>>aint[i]; } for(int i=0;i<n;i++) { cin>>adouble[i]; } for(int i=0;i<n;i++) { cin>>achar[i]; } for(int i=0;i<n;i++) { cin>>astring[i]; } cout<<max(aint,n)<<endl; cout<<max(adouble,n)<<endl; cout<<max(achar,n)<<endl; cout<<max(astring,n)<<endl; return 0; } /* 请在这里填写答案 */
输入样例:
3
45 67 89
5.6 8.9 3.4
asdf
we are fine
输出样例:
89
8.9
s
we
思路:
// 整数数组的最大值函数
int max(int *a, int n)
{
int maxVal = a[0]; //先定义a[0]为最大值maxVal (max value)
for (int i = 0; i < n; ++i)
{
if (a[i] > maxVal)
maxVal = a[i]; //比较得出最大值
}
return maxVal; //返回最大值
}
// 双精度浮点数组的最大值函数
double max(double *a, int n) //同上
{
double maxVal = a[0];
for (int i = 0; i < n; ++i)
{
if (a[i] > maxVal)
maxVal = a[i];
}
return maxVal;
}
// 字符数组的最大值函数 //字符数组比较(ASCII码)
char max(char *a, int n)
{
char maxVal = '\0'; //先定义最大值maxVal为'\0'
for (int i = 0; i < n; ++i)
{
if (a[i] > maxVal)
maxVal = a[i];
}
return maxVal; //返回字符数组中ASCII最大的值
}
// 字符串数组的最大值函数
string max(string *a, int n)
{
string maxVal = ""; //先定义字符串数组最大值maxVal为""
for (int i = 0; i < n; ++i)
{
if (a[i].length() > maxVal.length()) //先比较长度,长度大则值越大
maxVal = a[i];
else if (a[i].length() == maxVal.length() && a[i] > maxVal)
maxVal = a[i]; //长度相同再比较数值大小
}
return maxVal;
}