#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct data{
int sn;
char name[10];
int c1;
int c2;
int c3;
int all;
};
void show(data student[10]){
printf("\t学号\t姓名\t成绩1\t成绩2\t成绩3\n");
for(int i=0;i<10;i++){
printf("\t%d\t%s\t%d\t%d\t%d\n",student[i].sn,student[i].name,student[i].c1,student[i].c2,student[i].c3);
}
}
int cmpsn(const void *a,const void *b){
data c=*(data*)a;
data d=*(data*)b;
return d.sn-c.sn;
}
int cmpname(const void *a,const void *b){
data c=*(data*)a;
data d=*(data*)b;
return d.name-c.name;
}
int cmpall(const void *a,const void *b){
data c=*(data*)a;
data d=*(data*)b;
return c.all-d.all;
}
int main(){
printf("依次输入学生信息:\n");
data student[10];
for(int i=0;i<10;i++){
int sn;
char name[10];
int c1;
int c2;
int c3;
int all;
scanf("%d %s %d %d %d",&student[i].sn,student[i].name,&student[i].c1,&student[i].c2,&student[i].c3);
student[i].all=student[i].c1+student[i].c2+student[i].c3;
}
printf("按照学号排序\n");
qsort(student,10,sizeof(student[0]),cmpsn);
show(student);
printf("按照姓名排序\n");
qsort(student,10,sizeof(student[0]),cmpname);
show(student);
printf("按照总成绩排序\n");
qsort(student,10,sizeof(student[0]),cmpall);
show(student);
}