期末考试结束要对班级里的同学分别按照总分从大到小排序,若总分数相同,按照数学成绩从大到小排序,如果总分与数学成绩都相同,则按照名字字典序从小到大排序,排版成绩单。使用sort函数进行排序,以下能够排版正确的cmp函数是?
struct stu{
int sum; //总分
int math; //数学成绩
string name; //名字
};
A.
bool cmp(stu a, stu b){
if (a.sum != b.sum) return a.sum > b.sum;
else if (a.math != b.math) return a.math > b.math;
else return a.name < b.name;
}
B.
bool cmp(stu a, stu b){
return a.sum > b.sum;
if (a.math < b.math) return 1;
else return a.name < b.name;
}
C.
bool cmp(stu a, stu b){
return a.sum > b.sum;
if (a.math > b.math) return a.math > b.math;
else return a.name < b.name;
}
D.
bool cmp(stu a, stu b){
if (a.sum > b.sum) return a.sum > b.sum;
else return a.math > b.math;
return a.name < b.name;
}