键盘输入10个数(可能为整形、浮点型、双精度型及其字符类型),分别利用函数重载和函数模板,求出其中的最大值和最小值。
时间: 2023-05-22 12:03:34 浏览: 76
可以使用以下的函数重载和函数模板:
```cpp
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
// 模板函数:返回数组的最大值
template<typename T>
T max(T arr[], int n) {
T res = arr[0];
for (int i = 1; i < n; i++) {
res = std::max(res, arr[i]);
}
return res;
}
// 模板函数:返回数组的最小值
template<typename T>
T min(T arr[], int n) {
T res = arr[0];
for (int i = 1; i < n; i++) {
res = std::min(res, arr[i]);
}
return res;
}
// 函数重载
int max(int arr[], int n) {
return max<int>(arr, n);
}
int min(int arr[], int n) {
return min<int>(arr, n);
}
double max(double arr[], int n) {
return max<double>(arr, n);
}
double min(double arr[], int n) {
return min<double>(arr, n);
}
char max(char arr[], int n) {
char res = arr[0];
for (int i = 1; i < n; i++) {
res = std::max(res, arr[i]);
}
return res;
}
char min(char arr[], int n) {
char res = arr[0];
for (int i = 1; i < n; i++) {
res = std::min(res, arr[i]);
}
return res;
}
int main() {
int a[10] = { 1, 6, -3, 8, 2, 5, 7, 0, 4, -2 };
double b[10] = { 1.3, 2.2, -3.5, 4.8, 5.9, 0.2, 2.8, 1.7, -1.1, 0.9 };
char c[10] = "dceabhgf";
int max_a = max(a, 10);
int min_a = min(a, 10);
double max_b = max(b, 10);
double min_b = min(b, 10);
char max_c = max(c, 10);
char min_c = min(c, 10);
cout << "a 中的最大值为:" << max_a << ",最小值为:" << min_a << endl;
cout << "b 中的最大值为:" << max_b << ",最小值为:" << min_b << endl;
cout << "c 中的最大值为:" << max_c << ",最小值为:" << min_c << endl;
return 0;
}
```
注意:这里的 `char` 类型可以和 `int` 类型一样直接使用函数重载,而不用手动写一个 `char` 类型的模板函数。
阅读全文