用c++编写程序:设计函数模板,实现求解两个数的最小值 输入 两个整数和两个浮点型(float)数据 输出 两个整数的最小值 两个浮点数的最小值 浮点数保留小数点后1位小数 样例输入 1 2 1.3 2.3 样例输出 1 1.3
时间: 2024-09-30 18:04:19 浏览: 30
为了实现一个通用的函数模板,可以编写一个模板函数来接收任意类型的数值并找到它们之间的最小值。下面是一个C++示例,使用了模板函数以及`std::min`库函数:
```cpp
#include <iostream>
#include <type_traits> // 包含对C++11及以上版本支持的trait类型检测
#include <iomanip> // 用于设置浮点数的输出精度
// 模板函数模板,用于找到两个数的最小值
template<typename T, typename EnableIfIntegral = void>
T min(T a, T b) {
return std::min(a, b);
}
template<typename T, typename EnableIfFloatingPoint = void>
T min(T a, T b) {
return static_cast<T>(std::min<double>(a, b)); // 将类型转换回原始类型,以便保持精度
}
// 特化模板处理浮点数保留一位小数的情况
template<typename T>
std::string min_to_string(T a, T b) {
return std::fixed << std::setprecision(1) << std::min(a, b);
}
int main() {
int int_min = min<int>(1, 2);
float float_min = min<float>(1.3f, 2.3f);
std::cout << "Minimum integer: " << int_min << std::endl;
std::cout << "Minimum float (rounded to 1 decimal place): " << min_to_string(float_min, 2.3f) << std::endl;
return 0;
}
```
上面的代码定义了一个模板函数`min`,它有两个版本:一个处理整数类型,另一个处理浮点数类型。对于浮点数,需要先转换成`double`进行比较,然后再转换回原始类型。`min_to_string`函数则是用来显示浮点数时保留一位小数。
在`main`函数中,我们使用这两个函数找到给定样例输入的最小值,并按照要求输出结果。
阅读全文