编写一个名为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;
}