【题目来源】https://www.luogu.com.cn/problem/B2159【题目描述】给出班里某门课程的成绩单请你按成绩从高到低对成绩单排序输出如果有相同分数则名字字典序小的在前。【输入格式】第一行为 n(0n20)表示班里的学生数目。接下来的 n 行每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过 20成绩为一个不大于 100 的非负整数。【输出格式】把成绩单按分数从高到低的顺序进行排序并输出每行包含名字和分数两项之间有一个空格。【输入样例】4Kitty 80Hanmeimei 90Joey 92Tim 28【输出样例】Joey 92Hanmeimei 90Kitty 80Tim 28【数据范围】0n20【算法分析】● 按结构体某一字段对结构体数组进行排序https://blog.csdn.net/hnjzsyjyj/article/details/120184972【算法代码】#include bits/stdc.h using namespace std; const int maxn25; struct Student { string name; int score; } stu[maxn]; bool down(Student u,Student v) { if(u.scorev.score) return u.namev.name; return u.scorev.score; } int main() { int n; cinn; for(int i1; in; i) { cinstu[i].namestu[i].score; } sort(stu1,stu1n,down); for(int i1; in; i) { coutstu[i].name stu[i].scoreendl; } return 0; } /* in: 4 Kitty 80 Hanmeimei 90 Joey 92 Tim 28 out: Joey 92 Hanmeimei 90 Kitty 80 Tim 28 */【参考文献】https://blog.csdn.net/hnjzsyjyj/article/details/120184972https://blog.csdn.net/hnjzsyjyj/article/details/156479934