麻烦各位帮我改进下程序?
程序代码:
// 用结构体数组输入学生的学号、姓名、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"); } //问题,当有最高平均成绩相同时,这程序明显错误,求改进,给点建议 要注意什么?什么思想?