在c++中,输入若干数字,找出其中第二大大数字,(考虑数字数量小于2或者没有第二大数字的情况)
时间: 2024-09-29 21:14:29 浏览: 24
在C++中,要找出一组输入数字中的第二大的数字,你可以这样做:
1. 首先创建两个变量 `max_num` 和 `second_max_num`,分别初始化为负无穷大和负无穷大,用于保存最大值和第二大值。
2. 开始一个循环,从标准输入(例如通过`std::cin`)接收数字,每输入一个就更新这两个变量。如果新来的数字比 `max_num` 大,将 `second_max_num` 更新为旧的 `max_num`,然后将新的最大值赋给 `max_num`。如果新数字介于 `max_num` 和 `second_max_num` 之间,直接更新 `second_max_num`。
3. 当输入结束(通常是遇到非数字字符或达到某个停止条件),检查 `second_max_num` 是否已经改变过了。如果没有改变,说明输入的数字只有一个或都是相同的,这时 `second_max_num` 就应该是未找到第二大的值。如果改变了,返回 `second_max_num`。
下面是一个简化的C++代码示例:
```cpp
#include <iostream>
#include <climits> // 包含 INT_MIN 的头文件
int findSecondLargest(int n) {
int max_num = INT_MIN, second_max_num = INT_MIN;
for (int i = 0; i < n; ++i) {
int num;
std::cin >> num;
if (num > max_num) {
second_max_num = max_num;
max_num = num;
} else if (num > second_max_num && num != max_num) {
second_max_num = num;
}
}
return second_max_num == INT_MIN ? -1 : second_max_num; // 返回 second_max_num 或者 -1 表示没有第二大的数字
}
int main() {
int num_of_numbers;
std::cout << "请输入数字的数量: ";
std::cin >> num_of_numbers;
int result = findSecondLargest(num_of_numbers);
if (result != -1) {
std::cout << "第二大的数字是: " << result << '\n';
} else {
std::cout << "没有第二大的数字。\n";
}
return 0;
}
```
当你运行这个程序时,它会提示你输入数字的数量,然后读取这些数字,并打印出第二大的数字。如果不存在第二大的数字,它会输出相应提示。
阅读全文