问题标题: 酷町堂:2734

1
0
已解决
毛润宇
毛润宇
新手天翼
新手天翼

呜呜呜……零分代码:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct ZR{
    string name;
    int id;
}zr[1001];
bool f(ZR a,ZR b){
    if(a.name!=b.name) return a.name<b.name;
    return a.id>b.id;
}
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        getline(cin,zr[i].name);
        cin>>zr[i].id; 
    }
    sort(zr+1,zr+1+n,f);
    for(int i=1;i<=n;i++)
    cout<<zr[i].name<<" "<<zr[i].id<<endl;
    return 0;
}

输出总是0

0

0

0

大佬快来帮帮我!!!


0
已采纳
李明翰
李明翰
新手光能
新手光能

看不到吗?我不是说了姓和名分开来比较,这就是你错的原因

0
李明翰
李明翰
新手光能
新手光能

我来帮你了,你的姓和名要分开来输入和比较,你cmp中就没有分别比较姓,名,输入最好也要输入两个,求采纳,谢谢了
struct kk{
    string x,m;//x代表姓,m代表名
    int hao;//hao代表学号
}a[105];
bool cmp(kk a,kk b){
    如果(a.x!=b.x )
        return a.x<b.x;
    如果(a.m!=b.m )
        return a.m<b.m;
    return a.hao>b.hao;
}
int main(){
    int n;
    输入>>n;
    for(int i=1;i<=n;i++){
        输入>>a[i].x>>a[i].m>>a[i].hao;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
       输出<<a[i].x<<" "<<a[i].m<<" "<<a[i].hao<<endl;
    }
    return 0;
}

0
0
0
我要回答