0
已解决
题目描述 Description
酷町堂举办了一次阶段测试,测试总共有4题,该次阶段测试共有n位同学参加,每位同学的姓名、年龄以及每一道题目对应的得分已知,请聪明的你帮酷町堂做一个教务****,分别输出每位同学姓名、年龄、以及每位同学的总分,并在最后一行输出总数最高的同学姓名,如果总分一样,则输出最高分中最先输入的学生姓名。
输入描述 Input Description
输入为n+1行:
第一行为参加测试的学生数n(n≤100);
之后的n行,每一行分别为每位同学的姓名、年龄以及每一题对应的得分,中间用单个空格隔开;
输出描述 Output Description
输出为n+1行:
前n行为每位同学的姓名、年龄以及该同学得到的总分,中间用单个空格隔开;
最后一行为总分最高同学的姓名,如果总分一样,则输出最高分中最先输入的学生姓名。
样例输入 Sample Input
3
Zhangsan 12 100 90 80 50
Lisi 12 50 80 50 60
Wangwu 13 90 100 50 80
样例输出 Sample Output
Zhangsan 12 320
Lisi 12 240
Wangwu 13 320
Zhangsan
条件一样(思路或代码)
谭迪元在2021-09-17 19:11:53追加了内容
#include<bits/stdc++.h>
using namespace std;
struct P{
string name;
int age;
int w,x,y,z;
int sum(){
return w+x+y+z;
}
}a[105];
bool cmp(P x,P y){
return x.sum()>y.sum();
}
int main(){
int n,maxn=-0x3f3f3f3f;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].age>>a[i].w>>a[i].x>>a[i].y>>a[i].z;
}
for(int i=1;i<=n;i++){
if(i==n){
cout<<a[i].name<<" "<<a[i].age<<" "<<a[i].sum();
break;
}
cout<<a[i].name<<" "<<a[i].age<<" "<<a[i].sum()<<endl;
}
cout<<endl;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(a[i].sum()==a[i+1].sum()){
cout<<a[i].name;
return 0;
}
}
return 0;
}
WA0,样例过了
0
已采纳
核心:
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].s>>a[i].y>>a[i].a>>a[i].b>>a[i].c>>a[i].d;
a[i].pos=i;
}
for(int i=1;i<=n;i++) cout<<a[i].s<<" "<<a[i].y<<" "<<a[i].sum()<<endl;
sort(a+1,a+n+1,cmp);
cout<<a[1].s;
结构体:
struct stu{
string s;
int y,a,b,c,d,pos;
int sum(){
return a+b+c+d;
}
}a[110];
函数:
bool cmp(stu x,stu y){
if(x.sum()!=y.sum()) return x.sum()>y.sum();
return x.pos<y.pos;
}
0
0
cmp函数不对,改成:
bool cmp(P x,P y){
if(x.sum()!=y.sum())return x.sum()>y.sum();
return x.id<y.id;
}
定义一个id,输入时写:
a[i].id=i;
0
核心:
struct hh{
string name;
int age;
int a,b,c,d,id;
int sum(){
return a+b+c+d;
}
}a[105];
bool cmp(hh x,hh y){
if(x.sum()!=y.sum())
return x.sum()>y.sum();
return x.id<y.id;
}
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].age>>a[i].a>>a[i].b>>a[i].c>>a[i].d;
a[i].id=i;
}
for(int i=1;i<=n;i++){
cout<<a[i].name<<" "<<a[i].age<<" "<<a[i].sum()<<"\n";
}
sort(a+1,a+n+1,cmp);
cout<<a[1].name;
