c++语言编写一个函数模板,实现 10个数据的输入,返回 10个数中值最大的。并对 int、float、 char 数据类型进行验证)
时间: 2024-09-19 08:09:57 浏览: 44
第二章 数据类型、运算符和表达式(二级C++).pdf
在C++中,我们可以创建一个模板函数来接收不同类型的数据,如`int`、`float`和`char`,然后找出其中的最大值。这里是一个简单的实现:
```cpp
#include <iostream>
#include <vector>
#include <limits>
// 宏定义用于检查数据类型是否支持比较
#define DATA_TYPE_CHECK(type, value) \
static_assert(std::is_arithmetic<type>::value, "Unsupported data type")
// 模板函数,接收10个同类型的参数,返回它们中的最大值
template<typename T, size_t N>
T find_max(const T(&data)[N]) {
DATA_TYPE_CHECK(T, data[0]); // 验证数据类型
// 初始化最大值为第一个元素
T max_value = data[0];
// 遍历数组查找最大值
for (size_t i = 1; i < N; ++i) {
if (data[i] > max_value) {
max_value = data[i];
}
}
return max_value;
}
int main() {
// 输入10个int
int int_data[] = {1, 4, 7, 2, 9, 5, 8, 3, 6, 0};
std::cout << "Max of integers: " << find_max(int_data) << std::endl;
// 输入10个float
float float_data[] = {1.1f, 2.3f, 3.5f, 4.7f, 5.9f, 6.1f, 7.3f, 8.5f, 9.7f, 10.9f};
std::cout << "Max of floats: " << find_max(float_data) << std::endl;
// 输入10个char
char char_data[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};
std::cout << "Max ASCII character: " << find_max(char_data) << std::endl; // 注意字符需要转换为数值才能比较
return 0;
}
```
阅读全文