题目描述
定义一个结构体 Student,包含以下成员:
string name(姓名)int chinese(语文成绩)int math(数学成绩)
输入 n 个学生的信息,按照以下规则从高到低排序:
- 总分(语文+数学)高的排在前面。
- 如果总分相同,语文成绩高的排在前面。
- 如果语文成绩也相同,姓名字典序小的排在前面。
排序后,输出每个学生的姓名、语文、数学、总分,每行一个学生。
输入
第一行一个整数 n(1 ≤ n ≤ 1000)。
接下来 n 行,每行一个学生的姓名(不含空格,长度≤20)、语文成绩、数学成绩,用空格隔开。
成绩均为 0 到 100 之间的整数。
输出
共 n 行,每行格式为:姓名 语文 数学 总分,中间用空格隔开。
输出顺序必须符合排序规则。
样例输入
4
Alice 90 80
Bob 85 85
Charlie 90 85
David 85 90
样例输出
Charlie 90 85 175
David 85 90 175
Alice 90 80 170
Bob 85 85 170
样例解释:
- Charlie 和 David 总分都是 175,Charlie 语文 90 > David 语文 85,所以 Charlie 在前。
- Alice 和 Bob 总分都是 170,Alice 语文 90 > Bob 语文 85,所以 Alice 在前。
要求
- 定义
struct Student。 - 必须使用
sort函数。 - 必须编写自定义比较函数
bool cmp(const Student &a, const Student &b)实现排序规则。
提示
- 比较函数返回值:若
a应该排在b前面,则返回true,否则false。 - 本题规则可以翻译为:
if (a总分 != b总分) return a总分 > b总分; else if (a.语文 != b.语文) return a.语文 > b.语文; else return a.name < b.name;