计算C中二维数组中每一列的平均值?

标签 c arrays for-loop mean

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

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 行中每一行的平均值。

最佳答案

您可以采用与处理行几乎相同的方式来完成此操作。只需更改循环的顺序和其他一些内容即可。

#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;
}

关于计算C中二维数组中每一列的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35965736/

相关文章:

c - 关于用多线程实现 sleep 理发师时的同步

python - python循环起始月份和起始年份到结束月份和年份

c - 如何在for循环中存储从rand()函数获得的数字?

java - 如何使用Java在json数组中创建嵌套数组?

objective-c - 如何在 Objective-C 中创建一个空数组,并为它一个一个赋值?

c - 使用 c 读取 xdr 编写的文件时出现问题

c++ - 从指定输入和预期结果的场景表生成单元测试

C正则表达式性能

php - fatal error : Cannot use object of type stdClass as array in … on line 10

arrays - 变量作为 for 循环中的标记