結構體排序問題

此題涉及到:

        結構體排序  000010的輸出(%06d) 字符串的排序

題目鏈接:

        https://cn.vjudge.net/problem/HDU-1862

AC代碼:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct aa
{
    int xx;//學號
    int text;//成績
    char name[10];//姓名
} a[100001];
bool cmp(aa x,aa y)
{
    return x.xx<y.xx;
}
bool cmp1(aa x,aa y)
{
    if(strcmp(x.name,y.name)==0)//名字相同時,按照學號遞增排序
        return x.xx<y.xx;
    return strcmp(x.name,y.name)<0;//按照非遞減字典序排序
}
bool cmp2(aa x,aa y)
{
    if(x.text==y.text)//成績相同時,按照學號遞增排序
        return x.xx<y.xx;
    return x.text<y.text;
}
int main()
{
    int n1,m1,sum;
    sum=1;
    while(~scanf("%d%d",&n1,&m1))
    {
        if(n1==0)
            break;
        else
        {
            for(int i=0; i<n1; i++)
                scanf("%d %s %d",&a[i].xx,a[i].name,&a[i].text);
            if(m1==1)
                sort(a,a+n1,cmp);//學號排序
            else if(m1==2)
                sort(a,a+n1,cmp1);//姓名排序
            else if(m1==3)
                sort(a,a+n1,cmp2);
            printf("Case %d:\n",sum++);//成績排序
            for(int i=0; i<n1; i++)
                printf("%06d %s %d\n",a[i].xx,a[i].name,a[i].text);
        }
    }
}

strcmp的用法:http://blog.csdn.net/gsd4_chenmeng/article/details/78368306

發佈了25 篇原創文章 · 獲贊 10 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章