0
已解决
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
struct cj
{
string name;
int age,f1,f2,f3,f4;
int zong()
{
return f1+f2+f3+f4;
}
}a[100020];
bool cmp(cj a,cj b)
{
if(a.zong()==b.zong()) return a.name<b.name;
return a.zong()>b.zong();
}
int main()
{
int n,m;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i].name>>a[i].age>>a[i].f1>>a[i].f2>>a[i].f3>>a[i].f4;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)cout<<i<<" "<<a[i].name<<" "<<a[i].zong()<<endl;
return 0;
}
RT
以上我错的代码
0
已采纳
int zong()
{
return f1+f2+f3+f4;
}
不要在结构体里用函数,要求总分可以这么定义:
1、结构体里加一个变量,记录这个人的总分。
2、怎么算总分。
在输入的循环里加入这句话:(我把总分定义为score)。
a[i].score=a[i].a+a[i].b+a[i].c+a[i].d;
那么cmp函数也要改了。
改成a.score和b.score比较大小。
输出的a[i].zong()也要改成a[i].score.
最好加上头文件:#include <string>
栾峻岩在2018-08-08 14:41:33追加了内容

0
