【问题标题】:Calculating mean of each column in a 2D array in C?计算C中二维数组中每一列的平均值?
【发布时间】:2016-06-28 04:54:21
【问题描述】:

假设我有一个二维数字数组:

int a[WEEK][DAY] = {367, 654, 545, 556, 565, 526, 437,
                    389, 689, 554, 526, 625, 537, 468,
                    429, 644, 586, 626, 652, 546, 493,
                    449, 689, 597, 679, 696, 568, 522,
                    489, 729, 627, 729, 737, 598, 552};

如何计算每列的平均值?例如, (367+389+429+449+489)/5=424.6 等等。我已经想出了如何计算每一行的平均值,但我在为每一列做这件事时遇到了困难。 这是我到目前为止所拥有的:

#include <stdio.h>
#define WEEK 5
#define DAY 7
int main() {
/* or int a[][DAY] = {367, 654, 545, 556, 565, 526, 437, */
    int a[WEEK][DAY] = {367, 654, 545, 556, 565, 526, 437,
                        389, 689, 554, 526, 625, 537, 468,
                        429, 644, 586, 626, 652, 546, 493,
                        449, 689, 597, 679, 696, 568, 522,
                        489, 729, 627, 729, 737, 598, 552};
    int i, j, weektotal, total = 0;
    double meanval;
    printf("Week Mean hit\n");
    printf("-------------\n");
    for(i = 0; i < WEEK; i++) {
        weektotal = 0;
        for(j = 0; j < DAY; j++) {
            weektotal += a[i][j];
            total += a[i][j];
            }
    meanval = (double)weektotal/DAY;
    printf(" %d%10.2f\n", i+1, meanval);
    }

return 0;
}

当前代码计算 5 行中每一行的平均值。

【问题讨论】:

    标签: c arrays for-loop mean


    【解决方案1】:

    您可以按照与对行所做的几乎相同的方式执行此操作。只需更改循环的顺序和其他一些东西。

    #include <stdio.h>
    #define WEEK 5
    #define DAY 7
    int main(void) {
        /* or int a[][DAY] = {{367, 654, 545, 556, 565, 526, 437}, */
        int a[WEEK][DAY] = {{367, 654, 545, 556, 565, 526, 437},
                            {389, 689, 554, 526, 625, 537, 468},
                            {429, 644, 586, 626, 652, 546, 493},
                            {449, 689, 597, 679, 696, 568, 522},
                            {489, 729, 627, 729, 737, 598, 552}};
        int i, j, daytotal, total = 0;
        double meanval;
        printf("Day  Mean hit\n");
        printf("-------------\n");
        for(j = 0; j < DAY; j++) {
            daytotal = 0;
            for(i = 0; i < WEEK; i++) {
                daytotal += a[i][j];
                total += a[i][j];
            }
            meanval = (double)daytotal/WEEK;
            printf(" %d%10.2f\n", j+1, meanval);
        }
    
        return 0;
    }
    

    【讨论】:

    • 非常感谢 Mike,非常感谢您再次帮助我
    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    相关资源
    最近更新 更多