请大家帮我看一下 这个程序哪里错了 最后排序的结果不对
请大家帮我看一下 这个程序哪里错了 最后排序的结果不对输入5个学生的姓名、学号和5门课成绩,分别用函数计算:
(1)每个学生的总分和平均分。
(2)对学生成绩按平均分从高到低排序。
(3)输出学生成绩表。
用结构体数组和调用函数实现。
#include <stdio.h>
#include <string.h>
struct student
{
char name[20];
int num;
float score1;
float score2;
float score3;
float score4;
float score5;
float ave;
float sum;
}stu[5];
void input()
{
int i=0;
for(i=0;i<5;i++) {
printf("请输入第%d学生资料:\n",i+1);
printf("姓名:"); scanf("%s",stu[i].name);
printf("学号:"); scanf("%d",&stu[i].num );
printf("请输入学生的五门成绩:\n");
printf("第一科:"); scanf("%f",&stu[i].score1);
printf("第二科:"); scanf("%f",&stu[i].score2);
printf("第三科:"); scanf("%f",&stu[i].score3);
printf("第四科:"); scanf("%f",&stu[i].score4);
printf("第五科:"); scanf("%f",&stu[i].score5);
}
}
void output()
{
int i,j,k;
float temp,sum;
printf("姓名 \t学号 \t第一科 \t第二科 \t第三科 \t第四科 \t第五科 \t总成绩\t平均成绩 \n");
for(k=0;k<5;k++){
stu[k].sum =stu[k].score1 +stu[k].score2 +stu[k].score3 +stu[k].score4 +stu[k].score5;
stu[k].ave=stu[k].sum/5;
for(i=4;i>0;i--){
for(j=0;j<i;j++){
if(stu[j].ave <stu[j+1].ave ){
temp=stu[j].ave;stu[j+1].ave ;stu[j+1].ave=temp;
}
}
}
printf("%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[k].name,stu[k].num,stu[k].score1,stu[k].score2,stu[k].score3,stu[k].score4,stu[k].score5,stu[k].sum,stu[k].ave);
}
}
void main()
{
input();
output();
}