EXCEL排序---题解

当你犹豫要不要去做一件事的时候,其实你内心已经有了选择,只是你还没有充足的理由去说服自己。

这个题可谓是将结构体,sort函数用到极致了;写下来以后复习用;

在这里插入图片描述

题目链接:
EXCEL排序

AC代码:

#include<bits/stdc++.h>
using namespace std;
struct stu{
    int stunum,score;
    char name[10];
};
struct stu students[100005];
bool cmp1(struct stu a,struct stu b)
{
    return a.stunum<b.stunum;
}
bool cmp2(struct stu a,struct stu b)
{
    if(strcmp(a.name,b.name)!=0)
        return strcmp(a.name,b.name)<0;
    else
        return a.stunum<b.stunum;
}
bool cmp3(struct stu a,struct stu b)
{
    if(a.score!=b.score)
        return a.score<b.score;
    else
        return a.stunum<b.stunum;
}
int main()
{
    int n=-1,flag,index=0;
    while (~scanf("%d%d",&n,&flag)&&n!=0)
    {
        for(int i=0;i<n;i++)
        {
            scanf("%d%s%d",&students[i].stunum,students[i].name,&students[i].score);
        }
        index++;
        if(flag==1)
            sort(students,students+n,cmp1);
        else if(flag==2)
            sort(students,students+n,cmp2);
        else
            sort(students,students+n,cmp3);
        cout<<"Case"<<" "<<index<<":"<<endl;
        for(int i=0;i<n;i++)
            printf("%06d %s %d\n",students[i].stunum,students[i].name,students[i].score);
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章