帮我写个c++代码给定n个正的int,求第二大的数的数值。 首先输入一个正整数n,n不超过100,然后再输入n个正int。 例如输入是:3 1 2 3 则输出是:2 特别的,如果输入是:3 2 3 3 则输出是:2 输入保证至少有2种不同的数值。
时间: 2024-03-21 14:41:31 浏览: 22
c++输入数组并输出第二大值
好的,以下是一个可能的 C++ 解决方案:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
int max_num = nums[0];
int second_max = INT_MIN;
for (int i = 1; i < n; i++) {
if (nums[i] > max_num) {
second_max = max_num;
max_num = nums[i];
} else if (nums[i] > second_max && nums[i] != max_num) {
second_max = nums[i];
}
}
cout << second_max << endl;
return 0;
}
```
这个 C++ 解决方案和之前的 Python 解决方案非常相似。首先读入n和n个整数,然后使用一个循环遍历整个数组nums,找到最大值和次大值。如果当前数字比最大值要大,那么次大值就变成了原来的最大值,最大值变成了当前数字。如果当前数字比次大值要大,且不等于最大值,那么次大值就更新为当前数字。最后输出次大值即可。
请注意,这个解决方案也假设输入至少有两个不同的数字,因此它也没有检查这个假设是否成立。如果需要,可以添加一个检查以确保输入至少有两个不同的数字。
阅读全文