麻烦各位帮我改进下程序?
程序代码:// 用结构体数组输入学生的学号、姓名、5门课程成绩
// 然后计算每个学生的平均成绩,将平均成绩最高的记录输出
#include "stdio.h"
#include "math.h"
#define N 3
#define M 5
struct STUDENT /* 学生信息结构体 */
{ char no[10] ;
char name[12] ;
float score[6] ; /* 第6个元素保存平均成绩 */
};
void input_record( struct STUDENT array[], int n)
/* 输入函数,完成数据的输入 */
{ int i, j ;
for (i=0; i<n; i++)
{ printf("\n请输入学生的学号: ") ;
scanf("%s",array[i].no) ;
printf("\n请输入学生的姓名: ") ;
scanf("%s",array[i].name) ;
printf("\n请输入该学生的成绩: \n") ;
for (j=0 ;j<M; j++)
{ printf("\n课程: %d ",j+1);
scanf("%f", &array[i].score[j]) ;
}
}
}
void output_record( struct STUDENT array[], int n)
/* 输出函数,输出数据 */
{ int i, j ;
printf(" 学 号 姓 名 课程-1 课程-2 课程-3 课程-4 课程-5 \n\n") ;
for (i=0; i<n; i++)
{ printf("%-12s", array[i].no) ;
printf("%-12s", array[i].name) ;
for (j=0 ;j<M; j++)
printf("%-9.2f", array[i].score[j]) ;
printf("\n\n");
}
}
void main()
{ struct STUDENT stu[N];
int n ,p ,t ,num ;
input_record( stu, N) ; /* 调用函数输入数据 */
printf("\n\n") ;
output_record( stu, N) ; /* 调用函数输出数据 */
printf("\n\n") ;
for(p=0 ;p<N ;p++)
{ float aver=0.0 ;
for( t=0; t<M ;t++)
aver=aver+stu[p].score[t] ;
stu[p].score[M]=aver/M ;
} /* 计算每个学生的平均成绩 */
num=0 ;
for(p=1 ;p<N ;p++)
if (stu[num].score[M]<stu[p].score[M]) num=p ;
/* 找平均成绩最高的元素 */
printf("\n平均成绩最高的元素下标%d\n ",num) ;
printf("%-12s", stu[num].no) ;
printf("%-12s", stu[num].name) ;
for (t=0 ;t<=M; t++)
printf("%-8.2f", stu[num].score[t]) ;
printf("\n");
}
//问题,当有最高平均成绩相同时,这程序明显错误,求改进,给点建议
要注意什么?什么思想?









