求助 ,操作数组, 两次输出结果不同
[要实现的功能]: 在编写一个程序,用二维数组操作5名学生的3个科目的分数,计算每科的最高分,并计算每名学生3个科目的平均分。[出现的问题]: 在首次输出每科的最高分时是正确的,接下来执行了获得平均分的操作后,再输出每科最高分,结果改变了!!不正确了。
代码如下:
#include <stdio.h>
void getMaxScore(const float ma[5][3], float maxScores[])
{
int i, j;
for (j = 0; j < 3; j++){
maxScores[j] = ma[0][j];
for (i = 1; i < 5; i++)
if (ma[i][j] > maxScores[j])
maxScores[j] = ma[i][j];
}
for (i = 0; i < 3; i++){
printf("暂时maxScores[%d] = %f\n", i, maxScores[i]);
}
}
void getAverageScore(const float ma[5][3], float averageScores[])
{
int i, j;
float temp;
for (i = 0; i < 5; i++){
temp = 0.0;
for (j = 0; j < 3; j++)
temp += ma[i][j];
averageScores[i] = temp / 3.0;
}
for (i = 0; i < 5; i++) {
printf("暂时averageScores[%d] = %f\n", i, averageScores[i]);
}
}
int main(void)
{
float scores[5][3];
float tempScores[3];
float averageScores[3];
int i, j;
for (i = 0; i < 5; i++)
for (j = 0; j < 3; j++) {
printf("第%d名学生的第%d门成绩为", i+1, j+1);
scanf("%f", &scores[i][j]);
}
//得到每门课程的最高分
getMaxScore(scores, tempScores);
for (i = 0; i < 3; i++)
printf("首次: 第%d门课程的最高分为%f\n", i+1, tempScores[i]);
//首次结果正确
//得到每个学生三门课的平均分
getAverageScore(scores, averageScores);
for (i = 0; i < 3; i++)
printf("第二次:第%d门课程的最高分为%f\n", i+1, tempScores[i]);
//第二次结果不正确
for (i = 0; i < 5; i++)
printf("第%d个同学的平均成绩为%f\n", i+1, averageScores[i]);
}
[附上结果图]:
想问下大家,是咋回事啊??