【问题标题】:columns average C列平均 C
【发布时间】: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; }

标签: c 2d average


【解决方案1】:

现在好了 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 < N; j++) {
    for (i = 0; i < M; i++) {
        sum += a[i][j];
    } 

    averages_days[k] = sum / M;
    sum = 0;
    k++;
}

for (i = 0; i < N; i++) {
    printf("%d\n", averages_days[i]);
    if (averages_days[i] >= max) {
        max = averages_days[i];
        day = i + 1;
    }
}

printf(" %d  (%d.2) \n", day, max);

return 0;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2021-05-17
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多