输入五个学生的四门课程成绩,要求输出每个学生的平均成绩,然后对平均成绩从高到低将学生成绩排序记录。

成绩最高的学生排在数组的最前面的一行,成绩最低学生排在数组的最后一行

#include<stdio.h>
struct student
{
int english;
int math;
int computer;
int linux;
int c;
double average;

};
int main()
{
int i,j;
struct student Stu[5];
struct student temp;
printf("请输入五个学生的成绩\n");
for(i=0;i<5;i++)
{
printf("第%d位学生的成绩:",i+1);
printf("english:\n");
scanf("%d",&Stu[i].english);

printf("math:\n");
scanf("%d",&Stu[i].math);
printf("computer:\n");
scanf("%d",&Stu[i].computer);
printf("linux:\n");
scanf("%d",&Stu[i].linux);
printf("c:\n");
scanf("%d",&Stu[i].c);
Stu[i].average=(Stu[i].c+Stu[i].computer+Stu[i].english+Stu[i].linux+Stu[i].math)/5;

}
//排序
for(j=0;j<4;j++)
for(i=j+1;i<5;i++)
{
if(Stu[j].average<Stu[i].average)
{
temp=Stu[j];
Stu[j]=Stu[i];
Stu[i]=temp;
}

}
//输出排序后的学生成绩
for(i=0;i<5;i++)
{
printf("第%d位同学的平均成绩为:%5.2f\n",i+1,Stu[i].average);

}
return 0;
}
写了一下,不知道是不是你想要得
温馨提示:答案为网友推荐,仅供参考
相似回答