设计两个函数模板,其功能分别是返回两个值中的较大者和返回多个值中的较大者。要求不仅能够处理整型、实型等数值型数据,而且能够正确处理字符串。用c++解决
时间: 2024-03-22 11:38:47 浏览: 53
可以使用函数模板来实现这两个函数,代码如下:
```c++
#include <iostream>
#include <string>
using namespace std;
template <typename T>
T max(T a, T b) {
return a > b ? a : b;
}
template <typename T>
T max(T a, T b, T c) {
return max(max(a, b), c);
}
template <typename T>
T max(T a, T b, T c, T d) {
return max(max(a, b), max(c, d));
}
template <typename T>
T max(T a, T b, T c, T d, T e) {
return max(max(a, b), max(c, d, e));
}
template <typename T>
T max(T a, T b, T c, T d, T e, T f) {
return max(max(a, b), max(c, d, e, f));
}
template <typename T>
T max(T a, T b, T c, T d, T e, T f, T g) {
return max(max(a, b), max(c, d, e, f, g));
}
int main() {
cout << max(1, 2) << endl; // 输出 2
cout << max(1.1, 2.2) << endl; // 输出 2.2
cout << max("apple", "orange") << endl; // 输出 orange
cout << max(string("apple"), string("orange")) << endl; // 输出 orange
cout << max(1, 2, 3) << endl; // 输出 3
cout << max(1, 2, 3, 4) << endl; // 输出 4
cout << max(1, 2, 3, 4, 5) << endl; // 输出 5
cout << max(1, 2, 3, 4, 5, 6) << endl; // 输出 6
cout << max(1, 2, 3, 4, 5, 6, 7) << endl; // 输出 7
return 0;
}
```
上面的代码中,我们定义了多个函数模板 `max`,其中:
- 函数模板 `max(T a, T b)` 返回两个值中的较大者。
- 函数模板 `max(T a, T b, T c)` 返回三个值中的较大者。
- 函数模板 `max(T a, T b, T c, T d)` 返回四个值中的较大者。
- 函数模板 `max(T a, T b, T c, T d, T e)` 返回五个值中的较大者。
- 函数模板 `max(T a, T b, T c, T d, T e, T f)` 返回六个值中的较大者。
- 函数模板 `max(T a, T b, T c, T d, T e, T f, T g)` 返回七个值中的较大者。
这些函数模板都使用了递归的方式实现。注意,为了正确处理字符串,我们需要重载 `max` 函数模板,使其能够接受 `string` 类型的参数。
阅读全文