请问这个题目的_第三问_应该怎么解决,我写的代码运行总是有一个bug,但是我怎都检查不出来问题出在哪里呢,望各位帮帮我,太感谢了:)题目如下
**软件工程2020级某班一共有L人,2020-2021学年第一学期有M门课考试。为了对软件工程2020级某班班级学生学习效果进行分析,需要对学生的考试成绩进行处理,分别用函数实现下列功能。(L和M分别用scanf函数输入,a[0][0]可以代表第1位学生的第1门课成绩,所有要求均在一个程序内实现。)
1.输入每个学生每门课的分数,计算每个学生的平均分。
2.计算每门课的平均分。
3.找出每门课程的最高分和最低分所对应的学生。
4.计算平均分方差:
**
这是运行结果遇到的BUG,这个BUG很调皮,一会在我的max函数里出现,一会在我的min函数出现
大家请看一下我的代码以及我的运行出现的bug
```c++
#include <stdio.h>
#define L 3
#define M 4
int main(){
float STUaver(float a[L][M]);//表示每个学生的平均值
float SIGaver(float a[L][M]);//表示单科成绩的平均值
void max(float a[L][M]);//表示每门课程的最高分所对应的学生
void min(float a[L][M]);//表示每门课程的最低分所对应的学生
float a[L][M];
float aver,Sigaver;
int i, j;
printf("请输入学生和成绩\n");
for (i = 0; i < L; i++) {
for (j = 0; j < M; j++) {
scanf("%f", &a[i][j]);
}
}
aver = STUaver(a);
Sigaver = SIGaver(a);
max(a);
min(a);
return 0;
}
float STUaver(float a[L][M]) {
float aver, sum = 0;
int i,j;
for (i = 0; i < L; i++) {
printf("第%d个学生的平均成绩是\n",i+1);
for (j = 0; j < M; j++) {
sum = sum + a[i][j];
}
aver = sum / M;
sum = 0;
printf("%.2f\n", aver);
}
return aver;
}
float SIGaver(float a[L][M]) {
float aver, sum = 0;
int i, j;
printf("\n");
for (j = 0; j < M; j++) {
printf("第%d门学科的平均成绩是\n", j + 1);
for (i = 0; i < L; i++) {
sum = sum + a[i][j];
}
aver = sum / L;
sum = 0;
printf("%.2f\n", aver);
}
return aver;
}
void max(float a[L][M]) {
float max=a[0][0];
int i, j,t,n=1;
printf("\n");
for (j = 0; j < M; j++) {
printf("第%d门学科的最大值所对应的学生是\n", j+1);
for (i = 1; i < L; i++) {
if (a[i][j] > max) {
t = a[i][j];
a[i][j] = max;
max = t;
n++;
}
}
printf("%d号学生\n", n);
n = 1;
max = a[0][j+1];
}
}
void min(float a[L][M]) {
float min = a[0][0];
int i, j, t, n = 1;
printf("\n");
for (j = 0; j < M; j++) {
printf("第%d门学科的最小值所对应的学生是\n", j + 1);
for (i = 1; i < L; i++) {
if (a[i][j] < min) {
min = a[i][j];
n++;
}
}
printf("%d号学生\n", n);
n = 1;
if(j<3)
min = a[0][j+1];
}
}
```