老师最近在查小心一点
2023-08-10 15:49:12
发布于:浙江
7阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
struct node{
int yu,shu,yin,sum,id;
}a[305];
bool cmp(node a,node b){//定义cmp用sort排序
if(a.sum==b.sum){//如果总分一样
if(a.yu==b.yu){//比较语文,如果语文一样
return a.id<b.id;//id从小到大排
}
else{
return a.yu>b.yu;//如果语文分数不相等,语文分数从大到小排序;
}
}
else {
return a.sum>b.sum;//如果分数不一样,总分从大到小排序;
}
}
int main (){
int n;
cin>>n;
for(int i=1;i<=n;i++){//输入n个数据
cin>>a[i].yu>>a[i].shu>>a[i].yin;//输入语数英三科成绩
a[i].sum=a[i].yu+a[i].shu+a[i].yin;//算出总分
a[i].id=i;//纪录每个a[i]的编号(也就是下标)
}
sort(a+1,a+n+1,cmp);//sort排序
for(int i=1;i<=5;i++){//排序完后只输出5次,输出前5名
cout<<a[i].id<<" "<<a[i].sum<<endl;//最后输出每个a[i]的下标和总分;
}
return 0;
}
这里空空如也
有帮助,赞一个