2016-03-13 90 views
0

所以我们可以说我有数字的二维数组:计算C中2D数组中每列的平均值?

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行。

回答

0

你可以用几乎相同的方式做到这一点,你做的行。只要改变循环顺序和更多的东西。

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

非常感谢迈克,我真的很感谢你再次帮助我 – user5983028