#include<stdio.h>
struct student {
int no; /*学号*/
char name[20]; /*姓名*/
float ch_score; /*语文*/
float math_score; /*数学*/
float en_score; /*英语*/
float info_score; /*信息*/
float aver; /*平均分*/
};
void bubble_sort(struct student stu[], int len) { /*反向冒泡排序*/
int i,j;
struct student temp;
for (i=0;i<len-1;i++)
for (j=0;j<len-1-i;j++)
if (stu[j].aver < stu[j+1].aver) {
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
int main(void) {
int stu_num,i;
struct student stu[1000];
printf ("请输入学生人数:");
scanf ("%d",&stu_num);
printf ("\n");
for (i=0;i<stu_num;i++) {
printf ("正在输入第%d个学生的信息:\n",i+1);
printf ("请输入学号:");
scanf ("%d",&stu[i].no);
printf ("请输入姓名:");
scanf ("%s",&stu[i].name);
printf ("请输入语文成绩:");
scanf ("%f",&stu[i].ch_score);
printf ("请输入数学成绩:");
scanf ("%f",&stu[i].math_score);
printf ("请输入英语成绩:");
scanf ("%f",&stu[i].en_score);
printf ("请输入信息成绩:");
scanf ("%f",&stu[i].info_score);
stu[i].aver = (stu[i].ch_score + stu[i].math_score + stu[i].en_score + stu[i].info_score)/4;
printf ("\n");
}
printf ("总共%d个学生信息均已输入完毕!\n\n",stu_num);
bubble_sort(stu,stu_num);
printf ("以下是%d个学生按平均分由高到低排序。\n");
printf ("======================================================\n");
printf ("学号\t姓名\t语文\t数学\t英语\t信息\t平均分\n");
for (i=0;i<stu_num;i++) {
printf ("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].ch_score,stu[i].math_score,stu[i].en_score,stu[i].info_score,stu[i].aver);
}
return 0;
}
执行结果