概述
键盘输入10个数(可能为整形、浮点型、双精度型及其字符类型),分别利用函数重载和函数模板,求出其中的最大值和最小值。
//函数重载
#include <iostream>
using namespace std;
int max(int* a)
{
int r, i;//定义最大值r
r = a[0];
for (i = 1; i < 10; i++)
{
if (r < a[i])
r = a[i];
}
return r;
}
int min(int* a)
{
int r, i;//定义最小值r
r = a[0];
for (i = 1; i < 10; i++)
{
if (r > a[i])
r = a[i];
}
return r;
}
float max(float* a)
{
int i;
float r;//定义最大值
r = a[0];
for (i = 1; i < 10; i++)
{
if (r < a[i])
r = a[i];
}
return r;
}
float min(float* a)
{
int i;
float r;//定义最小值
r = a[0];
for (i = 1; i < 10; i++)
{
if (r > a[i])
r = a[i];
}
return r;
}
double max(double* a)
{
int i;
double r;//定义最大值
r = a[0];
for (i = 1; i < 10; i++)
{
if (r < a[i])
r = a[i];
}
return r;
}
double min(double* a)
{
int i;
double r;//定义最小值
r = a[0];
for (i = 1; i < 10; i++)
{
if (r > a[i])
r = a[i];
}
return r;
}
char max(char* a)
{
int i;
char r;//定义最大值
r = a[0];
for (i = 1; i < 10; i++)
{
if (r < a[i])
r = a[i];
}
return r;
}
char min(char* a)
{
int i;
char r;//定义最小值
r = a[0];
for (i = 1; i < 10; i++)
{
if (r > a[i])
r = a[i];
}
return r;
}
int main()
{
int i,choice;//定义变量
int max_int, min_int, N_int[10];//定义最大值最小值及数组
float max_float, min_float, N_float[10];
double max_double, min_double, N_double[10];
char max_char, min_char, N_char[10];
cout << "1.整型 2.浮点型 3.双精度型 4.字符型" << endl;
cout << "请选择你想要输入的类型:" ;
cin >> choice;
switch(choice)
{
case 1:
{
for (i = 0; i < 10; i++)
{
cin >> N_int[i];
}
max_int = max(N_int);
min_int = min(N_int);
cout << "最大的是" << max_int << " 最小的是" << min_int << endl;
break;
}
case 2:
{
for (i = 0; i < 10; i++)
{
cin >> N_float[i];
}
max_float = max(N_float);
min_float = min(N_float);
cout << "最大的是" << max_float << " 最小的是" << min_float << endl;
break;
}
case 3:
{
for (i = 0; i < 10; i++)
{
cin >> N_double[i];
}
max_double = max(N_double);
min_double = min(N_double);
cout << "最大的是" << max_double << " 最小的是" << min_double << endl;
break;
}
case 4:
{
for (i = 0; i < 10; i++)
{
cin >> N_char[i];
}
max_char = max(N_char);
min_char = min(N_char);
cout << "最大的数是" << max_char << " 最小的数是" << min_char << endl;
break;
}
}
return 0;
}
//函数模板
#include <iostream>
using namespace std;
template <class T>
T max(T* a)
{
int i;
T r = a[0];//定义最大值
for (i = 1; i < 10; i++)
{
if (r < a[i])
r = a[i];
}
return r;
}
template <class T>
T min(T* a)
{
int i;
T r = a[0];//定义最小值
for (i = 1; i < 10; i++)
{
if (r > a[i])
r = a[i];
}
return r;
}
int main()
{
int i, choice;//定义变量
int max_int, min_int, N_int[10];//定义最大值最小值及数组
float max_float, min_float, N_float[10];
double max_double, min_double, N_double[10];
char max_char, min_char, N_char[10];
cout << "1.整型 2.浮点型 3.双精度型 4.字符型" << endl;
cout << "请选择你想要输入的类型:";
cin >> choice;
switch (choice)
{
case 1:
{
for (i = 0; i < 10; i++)
{
cin >> N_int[i];
}
max_int = max(N_int);
min_int = min(N_int);
cout << "最大的是" << max_int << " 最小的是" << min_int << endl;
break;
}
case 2:
{
for (i = 0; i < 10; i++)
{
cin >> N_float[i];
}
max_float = max(N_float);
min_float = min(N_float);
cout << "最大的是" << max_float << " 最小的是" << min_float << endl;
break;
}
case 3:
{
for (i = 0; i < 10; i++)
{
cin >> N_double[i];
}
max_double = max(N_double);
min_double = min(N_double);
cout << "最大的是" << max_double << " 最小的是" << min_double << endl;
break;
}
case 4:
{
for (i = 0; i < 10; i++)
{
cin >> N_char[i];
}
max_char = max(N_char);
min_char = min(N_char);
cout << "最大的数是" << max_char << " 最小的数是" << min_char << endl;
break;
}
}
return 0;
}
可以很容易看出函数模板要更简单,但是函数重载在某些情况也能媲美函数模板
看完动手点个赞,生活越过越灿烂
最后
以上就是激情钻石为你收集整理的函数重载与函数模板的全部内容,希望文章能够帮你解决函数重载与函数模板所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复