头一次用stdlib.h中的库函数qsort,还蛮简单的。另外还用了结构体
代码:
/*
by qr jobdu 1061 2014-9-13
tsinghua 2000 sort
*/
#include <stdio.h>
#include <stdlib.h> //qsort 是标准库函数
#include <string.h>
//C结构体
typedef struct Student{
char name[100];
int age;
int grade;
}Student;
int cmp(const void *a,const void *b){ //返回0,认为a和b相等 返回大于0,认为a>b 返回小于0,认为a<b
Student *aa=(Student *)a;
Student *bb=(Student *)b;
if(aa->grade>bb->grade || (aa->grade==bb->grade && strcmp(aa->name,bb->name)>0) || (aa->grade==bb->grade && strcmp(aa->name,bb->name)==0 && aa->age>bb->age))
return 1;
else if(aa->grade==bb->grade && strcmp(aa->name,bb->name)==0 && aa->age==bb->age)
return 0;
return -1; //直接返回即可
}
int main(){
int n;
Student stu[1000];
while(scanf("%d",&n)!=EOF){
int i;
for(i=0;i<n;i++){
scanf("%s",&stu[i].name);
scanf("%d",&stu[i].age);
scanf("%d",&stu[i].grade);
}
qsort(stu,n,sizeof(stu[0]),cmp);
for(i=0;i<n;i++){
printf("%s %d %d\n",stu[i].name,stu[i].age,stu[i].grade);
}
}
return 0;
}
//void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );