假设我有一个二维数字数组:
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/