B2159 成绩排序
欢迎报名洛谷网校,期待和大家一起进步!
本题考察结构体,排序。
我们用一个结构体 Stu 来存储每个学生的信息,包括名字 nm(字符串)和成绩 sc(整数):
struct Stu {
string nm;
int sc;
}a[105];
这样,我们可以直接使用 a[i].nm 和 a[i].sc` 来获取第
接下来是排序部分。本题要求:主要按分数从大到小,且分数相同时,按名字的字母顺序从小到大。因此,我们把它当作排序的条件,进行排序即可。
在参考代码中提供的是冒泡排序:
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;
}
}
}