如何统计学生的成绩呢?

 

#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);
}