面向对象程序设计上机练习一(函数重载)
Time Limit: 1000MS Memory limit: 65536K
题目描述
利用数组和函数重载求5个数最大值(分别考虑整数、单精度、长整数的情况)。
输入
分别输入5个int型整数、5个float 型实数、5个long型正整数。
输出
分别输出5个int型整数的最大值、5个float 型实数的最大值、5个long型正整数的最大值。
示例输入
11 22 666 44 55 11.11 22.22 33.33 888.88 55.55 1234567 222222 333333 444444 555555
示例输出
666 888.88 1234567
c++的模板函数的应用:
代码如下:
解决方法1
#include <iostream>
using namespace std;
int max(int a[])
{
int i;
int m=0;
for(i=0; i<5; i++)
{
if(a[i]>m)
m=a[i];
}
return m;
}
float max(float a[])
{
int i;
float m=0.0;
for(i=0; i<5; i++)
{
if(a[i]>m)
m=a[i];
}
return m;
}
long max(long a[])
{
int i;
long m=0;
for(i=0; i<5; i++)
{
if(a[i]>m)
m=a[i];
}
return m;
}
int main()
{
int i;
int x[5];
float y[5];
long z[5];
for(i=0; i<5; i++)
cin >> x[i];
for(i=0; i<5; i++)
cin >> y[i];
for(i=0; i<5; i++)
cin >> z[i];
int e;
e=max(x);
cout << e << endl;
float f;
f=max(y);
cout << f << endl;
long g;
g=max(z);
cout << g << endl;
return 0;
}
解决方法2:
#include <iostream> using namespace std; template <class T> T max(T a[]) { int i; T m=0; for(i=0; i<5; i++) { if(a[i]>m) m=a[i]; } return m; } int main() { int i; int x[5]; float y[5]; long z[5]; for(i=0; i<5; i++) cin >> x[i]; for(i=0; i<5; i++) cin >> y[i]; for(i=0; i<5; i++) cin >> z[i]; int e; e=max(x); cout << e << endl; float f; f=max(y); cout << f << endl; long g; g=max(z); cout << g << endl; return 0; }