专栏文章

B2159 成绩排序

B2159题解参与者 10已保存评论 9

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
9 条
当前快照
1 份
快照标识符
@mip6rlof
此快照首次捕获于
2025/12/03 07:05
3 个月前
此快照最后确认于
2025/12/03 07:05
3 个月前
查看原文
欢迎报名洛谷网校,期待和大家一起进步!
本题考察结构体,排序。
我们用一个结构体 Stu 来存储每个学生的信息,包括名字 nm(字符串)和成绩 sc(整数):
CPP
struct Stu {
    string nm;
    int sc;
}a[105];
这样,我们可以直接使用 a[i].nm 和 a[i].sc` 来获取第 ii 个学生的名字和成绩。
接下来是排序部分。本题要求:主要按分数从大到小,且分数相同时,按名字的字母顺序从小到大。因此,我们把它当作排序的条件,进行排序即可。
在参考代码中提供的是冒泡排序:
CPP
for (int i = 1; i <= n - 1; ++i) {
    for (int j = 1; j <= n - i; ++j) {
        bool sw = false;
        // 分数小往后;分数相同名字大(字典序大)往后
        if (a[j].sc < a[j+1].sc || (a[j].sc == a[j+1].sc && a[j].nm > a[j+1].nm)) {
            Stu t = a[j];
            a[j] = a[j+1];
            a[j+1] = t;
        }
    }
}

评论

9 条评论,欢迎与作者交流。

正在加载评论...