函数重载与函数模板

键盘输入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;
}

可以很容易看出函数模板要更简单,但是函数重载在某些情况也能媲美函数模板

13b44dac978c48878929cd2fc0b75ac5.jpg


看完动手点个赞,生活越过越灿烂

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值