【发布时间】:2017-11-24 07:24:54
【问题描述】:
我有下一个函数,我想在其中找到 N 列的平均值,但是在完成 M 行之后,我在 averages_days 数组中输入错误,知道吗?
int day_max_average(int a[M][N]) {
int max = 0, day, i, j, averages_days[N], sum = 0,k=0;
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
sum += a[j][i];
if(j==N-1){
averages_days[k] = sum / N;
k++;
}
}
sum = 0;
}
for (i = 0; i < N; i++) {
printf("%d\n\n\n\n\n\n\n", averages_days[i]);
if (averages_days[i] >= max) {
max = averages_days[i];
day = i + 1;
}
}
printf("H %d (%d.2) \n", day, max);
return 0;
}
【问题讨论】:
-
也许你应该在分配给
averages_days[k]之后重置sum? -
您可以在第一个
for循环中将k替换为i。这样逻辑就更清楚了。此外,在第二个for循环中,将N替换为M。另外,在进入第二个for循环之前,将max初始化为averages_days[0],因为最大值可能小于0。 -
你能提供一些预期的结果和你得到的结果吗?
-
这个问题是关于运行时错误。请发帖minimal reproducible example。
-
现在可以了 int day_max_average(int a[M][N]) { int max = 0, day, i, j, averages_days[N], sum = 0,k=0; for (j = 0; j = max) { max = averages_days[i];天 = 我 + 1; } } printf(" %d (%d.2) \n", day, max);返回0; }