Tpp2024 @ 2024-08-21 09:24:33
代码如下:
#include <bits/stdc++.h>
using namespace std;
int n;
struct node{
int num;
int ch,ma,en;
int all=0;
}a[310];
bool cmp(node x,node y)
{
if(x.all!=y.all) return x.all>y.all;
else if(x.ch>y.ch)return x.ch>y.ch;
else return x.num<y.num;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
a[i].num=i;
cin>>a[i].ch>>a[i].ma>>a[i].en;
a[i].all=a[i].ch+a[i].ma+a[i].en;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)
cout<<a[i].num<<" "<<a[i].all<<endl;
return 0;
}
0分,悬关求条
by WEICY123 @ 2024-08-21 09:46:47
@Tpp2024 最后一个循环次数改为5
by feng_chenShy @ 2024-08-21 10:30:03
@Tpp2024 本来想看看的。结果看到是用的结构体,我就被劝退了
by luozijie55358 @ 2024-08-24 20:41:25
cmp函数写错了``` bool cmp(node x,node y){ if(x.zf>y.zf) return 1;//比较总分 if(x.zf==y.zf&&x.yw>y.yw) return 1;//如果总分一样,比语文分数 if(x.zf==y.zf&&x.yw==y.yw&&x.xh<y.xh) return 1;//如果语文和总分都一样,比学号 return 0;//如果都不一样 }
最后一个循环输出的是前五名人的分数
by xixishowtime @ 2024-08-28 16:39:03
cmp第二行应该改成
else if(x.ch!=y.ch)return x.ch>y.ch
还有主函数倒数第三行应该改成
for(int i=1;i<=5;i++)