C语言输入4个同学的姓名学号,语文数学英语信息计算平均成绩,按平均成绩高低排序输出

如题所述

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

执行结果

温馨提示:答案为网友推荐,仅供参考