以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
以下是一个可能的解决方案的 C++ 代码。该代码首先将所有成绩存储在一个 vector 中,然后使用 sort 函数进行排序。最后,它返回排名第二高的成绩。请注意,这个代码假设输入的成绩中没有重复的成绩。如果有重复的成绩,你可能需要做一些额外的处理来确定哪个成绩是第二高的。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n; // 输入学生数量
vector<int> scores(n); // 创建向量来存储成绩
for (int i = 0; i < n; ++i) { // 输入每个学生的成绩并存储在向量中
cin >> scores[i];
}
sort(scores.begin(), scores.end(), greater<int>()); // 使用 sort 函数对成绩进行降序排序
cout << scores[1] << endl; // 输出排名第二高的成绩
return 0;
}
在这个程序中,首先我们从输入中读取学生数量并将其存储在变量 n 中。然后我们创建一个 vector 来存储学生的成绩。接着,我们遍历输入并将每个学生的成绩存储在 vector 中。然后,我们使用 sort 函数对成绩进行降序排序(使用 greater<int>() 作为比较函数)。最后,我们输出排序后的 vector 中的第二个元素,也就是排名第二高的成绩。注意我们使用 vector 的索引是从 0 开始的,所以我们输出的实际上是第三高的成绩。如果要输出排名第二高的成绩,我们需要在输出前移除已经输出过的第一名(最高的成绩)。