此題涉及到:
結構體排序 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