编一个程序,用来求 2 个或 3 个正整数中的最大数。 ①用不带默认参数的函数实现。 ②用带有默认参数的函数实现。 c++
时间: 2024-09-23 15:13:52 浏览: 63
在C++中,你可以编写两个版本的函数来求解这个问题:一个不带默认参数的函数,用于处理任意数量的输入;另一个带有一个默认参数的函数,专门针对三个数的情况提供简洁的语法。以下是这两个函数的例子:
**1. 不带默认参数的函数:**
```cpp
#include <iostream>
#include <algorithm> // 使用max_element函数
int findMax(int a, int b, int c = 0) {
if (c != 0) { // 如果有三个参数
return std::max(a, std::max(b, c)); // 返回最大的一个
} else {
return std::max({a, b}); // 如果只有两个参数,直接返回最大值
}
}
int main() {
int num1, num2, num3;
std::cout << "Enter three numbers (or two for comparison): ";
std::cin >> num1 >> num2;
if (std::cin >> num3) {
std::cout << "The maximum number is: " << findMax(num1, num2, num3) << std::endl;
} else {
std::cout << "The maximum number between " << num1 << " and " << num2 << " is: " << findMax(num1, num2) << std::endl;
}
return 0;
}
```
**2. 带有默认参数的函数:**
```cpp
#include <iostream>
int findMax(int a, int b, int c = INT_MIN) { // 使用INT_MIN作为默认最小值,避免意外比较
return std::max({a, b, c}); // 直接处理三个参数
}
int main() {
int num1, num2;
std::cout << "Enter two numbers or press enter to use default third number (-1): ";
std::cin >> num1 >> num2;
if (std::cin.peek() == '\n') {
std::cin.clear(); // 清除缓存的换行符
int num3 = -1; // 使用默认第三个数
} else {
std::cin >> num3;
}
std::cout << "The maximum number is: " << findMax(num1, num2, num3) << std::endl;
return 0;
}
```
在第二个示例中,如果用户没有输入第三个数字,则默认使用`-1`。当只有一个或两个输入时,程序会根据函数签名自动选择正确的行为。
阅读全文