jiangzhencong @ 2022-11-12 17:53:26
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct stu {
string name;
int chinese=0,math=0,english=0;
int sum = 0;
};
bool comp(stu a,stu b){//排序函数
return a.sum>b.sum;
}
int main(){
int n;
cin>>n;
stu a[n+1];
for(int i=1;i<=n;i++){//输入
cin>>a[i].name;
cin>>a[i].chinese;
cin>>a[i].math;
cin>>a[i].english;
a[i].sum = a[i].chinese + a[i].math +a[i].english ;
}
sort(a+1,a+n+1,comp);//排序
//输出
cout<<a[1].name<<" "<<a[1].chinese<<" "<<a[1].math<<" "<<a[1].english ;
cout<<endl;
return 0;
}
by Wf_yjqd @ 2022-11-12 18:04:50
主要题目中
如果有多个总分相同的学生,输出靠前的那位。
应该选用稳定的排序,例如
by Wf_yjqd @ 2022-11-12 18:05:08
@jiangzhencong
by ISTP @ 2022-11-12 18:07:31
@jiangzhencong 楼上正解,也可以在结构体里多开个存先后顺序的变量,然后在 comp 函数里多判断以下,差不多就是
bool comp(stu a,stu b){//排序函数
return a.sum==b.sum?a.id<b.id:a.sum>b.sum;
}
by jiangzhencong @ 2022-11-12 18:16:29
谢谢各位,懂了,马上改
by jiangzhencong @ 2022-11-12 18:28:38
已过,感谢给位,意见都很有价值,连完老师都没想到呵呵