2406_86548294 2025-01-04 21:38 采纳率: 33.3%
浏览 30

1812. 排名第二高的成绩

问题描述
统计一个班级

N (
10
<

<
100
10<N<100)个同学的考试成绩(成绩不可能全一样)中排名第二高的成绩是多少?

输入

1
1 行有一个整数

n(
5
<

<
100
5<n<100)。


2
2 行有

n 个整数,用空格隔开。

输出
输出排名第
2
2 高的成绩。

样例
输入复制
15
98 98 56 88 98 99 66 87 67 89 54 77 66 89 60
输出复制
98
输入复制
5
100 100 99 99 100
输出复制
99

  • 写回答

3条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    以下是一个可能的解决方案的 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 开始的,所以我们输出的实际上是第三高的成绩。如果要输出排名第二高的成绩,我们需要在输出前移除已经输出过的第一名(最高的成绩)。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月4日