教一下我
  • 板块灌水区
  • 楼主oooyi
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/10/16 12:50
  • 上次更新2024/10/16 16:41:41
查看原帖
教一下我
1489876
oooyi楼主2024/10/16 12:50

题目描述 输入N个学生的姓名和语文、数学的得分,按总分从高到低输出。分数相同的按输入先后输出。

输入格式 第1行:有1个整数N,N的范围是[1…100]。

下面有N行:每行1个姓名,2个整数。姓名是由不超过10个的小写字母组成,整数范围是[0…100]。

输出格式 总分排序后的名单。

共N行,每行格式: 姓名 语文分 数学分 总分。

输入/输出例子1 输入:

4

gaoxiang 78 96

wangxi 70 99

liujia 90 87

zhangjin 78 91

输出:

liujia 90 87 177

gaoxiang 78 96 174

wangxi 70 99 169

zhangjin 78 91 169

#include<bits/stdc++.h>
using namespace std;
struct people{
    string name;
    int y;
    int s;
    int z,l;
};
bool cmp(struct people a,struct people b){
    if(a.y!=b.y){
        return  a.y>b.y; 
    }      
    else{
    return  a.l<b.l; 
    } 
 
}
struct people a[105];
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].name>>a[i].y>>a[i].s;
        a[i].z=a[i].y+a[i].s;a[i].l=i; 
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        cout<<a[i].name<<" "<<a[i].y<<" "<<a[i].s<<" "<<a[i].z<<endl;
    }
     
     
     
    return 0;
}

这个代码哪里错了

2024/10/16 12:50
加载中...