我是靠谱客的博主 激情钻石,最近开发中收集的这篇文章主要介绍函数重载与函数模板,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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


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

最后

以上就是激情钻石为你收集整理的函数重载与函数模板的全部内容,希望文章能够帮你解决函数重载与函数模板所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部