【问题标题】:Why won't the average column amount not calculate?为什么不会计算平均列数?
【发布时间】:2022-11-26 23:39:27
【问题描述】:

我想通过用随机数填充矩阵来打印出二维数组列的平均数量

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    
    int m = 0;
    int n = 0;
    int array[m][n];
    double ran_num = (double)rand() / RAND_MAX;
    double avg_col[] = {0};
    
    printf("Enter (m, n > 0): ");
    scanf("%d, %d", &m, &n);
    
    for(size_t i = 0; i <= m; ++i){
        for(size_t j = 0; j <= n; ++j){
            array[i][j] = ran_num;
            avg_col[j] += array[i][j] / m;
        }
    }
    
    for(int i = 0; i < n; i++){
        printf("Average of column %d : %.3f\n", i ,avg_col[i]);
    }
    
    return 0;
}

但输出是:

Average of column 0 : 0.000
Average of column 1 : 0.000
Average of column 2 : 0.000

我不知道问题出在哪里。 也许你可以帮助我,我将不胜感激。

【问题讨论】:

  • 请记住,C 中的数组是不是动态的。您将 avg_col 定义为一个数组一单元素。更糟糕的是,你定义array元素,这是根本不允许的。一旦你修复了所有这些问题,你的循环就会出现一次性错误并超出范围。而且您可能应该在循环内获得新的随机数,否则所有值都将相同。
  • 总结一下:有太多基本错误,以至于您似乎跳过了书籍、教程或课程的大部分内容。

标签: arrays c matrix 2d


【解决方案1】:

在这一行中:

avg_col[j] += array[i][j] / m;

变量array[i][j]是一个整数,变量m是一个整数。
所以你在做整数除法。如果分母m大于分子array[i][j],则结果为零。

例子:

5 / 10; // Humans think the result is 0.5.  Programmers know the result is 0.

【讨论】:

    猜你喜欢
    • 2020-07-15
    • 1970-01-01
    • 2019-04-13
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多