九度1023 EXCEL排序

来源:互联网 发布:心情不好怎么办 知乎 编辑:程序博客网 时间:2024/06/14 04:33
/********************************* *    日期:2012-7-1 *    作者:SJF0115 *    题号: 九度1023 *    题目:EXCEL排序 *    来源:http://ac.jobdu.com/problem.php?pid=1023 *    结果:AC *    题意: *    总结:**********************************/#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct Student{char ID[10];char Name[10];    int  Grade;}Student;int cmpByID(const void *a,const void *b){struct Student *c = (Student *)a;struct Student *d = (Student *)b;return strcmp(c->ID,d->ID);}int cmpByName(const void *a,const void *b){struct Student *c = (Student *)a;struct Student *d = (Student *)b;if(!strcmp(c->Name,d->Name)){return strcmp(c->ID,d->ID);}else{return strcmp(c->Name,d->Name);}}int cmpByGrade(const void *a,const void *b){struct Student *c = (Student *)a;struct Student *d = (Student *)b;if(c->Grade == d->Grade){return strcmp(c->ID,d->ID);}else{return c->Grade - d->Grade;}}Student student[100001];int main(){int N,C;int CaseNum = 0;//输入重定向,输入数据将从in.txt文件中读取//freopen("C:\\Users\\SJF\\Desktop\\in.txt","r",stdin);     while(scanf("%d %d",&N,&C)!=EOF)    {   int i;if(N == 0){break;}CaseNum ++;for(i = 0;i<N;i++){scanf("%s %s %d",&student[i].ID,&student[i].Name,&student[i].Grade);}if(C == 1){qsort(student,N,sizeof(student[0]),cmpByID);}else if(C == 2){qsort(student,N,sizeof(student[0]),cmpByName);}else{qsort(student,N,sizeof(student[0]),cmpByGrade);}printf("Case %d:\n",CaseNum);for(i = 0;i<N;i++){printf("%s %s %d\n",student[i].ID,student[i].Name,student[i].Grade);}    }    return 0;}


原创粉丝点击