【问题标题】:How to find the Average of column values in a 2D array?如何找到二维数组中列值的平均值?
【发布时间】:2016-04-26 13:47:41
【问题描述】:

我想打印出二维数组每一列的平均值。我已经想出了如何在一行中找到平均值,但我仍然在努力解决这一问题。

这是我目前所拥有的:

 for ( i=0; i<nRow; ++i)
    {
        for( j=0; j<nCol+1; ++j)
        {
            if (j == nCol)
            {
                nAve = (float)nSum/nCol;
                printf("=%.1f", nAve);
            }
            else
            {
                printf("%d\t", aArray[i][j]);
                nSum += aArray[i][j];
            }
        }

        nSum = 0;
        printf("\n");
    }

【问题讨论】:

  • 在不改变内部代码的情况下交换 for 循环
  • 你期待什么?我认为你的代码是正确的。
  • 也许是第一个 nSum 初始化?尽管如此,我会避免在第二个 for 循环中执行 +1。这是一个坏习惯 imo
  • 为什么i 的范围是[0..nRow-1] 而j 的范围是[0..nCol]?看起来您的循环之一没有正确的范围。
  • 为简洁起见,请考虑重写,“我需要一个打印出 2DArray 的平均值和列的代码。”您要求两 (2) 件事:1. 平均值和 2. 列。您所说的“专栏”到底是什么意思?列的平均值?列值?列索引?

标签: c arrays multidimensional-array


【解决方案1】:

我认为更容易的是计算列平均值。 喜欢:

for ( j=0; j<nCol+1; ++j)
    {
        for( i=0; i<nRow+1; ++i)
        {
        }
    }

如果你想用一个来做,你应该创建一个数组来保持和增加所有列的总数。

float sumColumn[nCol];

for ( i=0; i<nRow; ++i)
    {
        for( j=0; j<nCol+1; ++j)
        {
            if (j == nCol)
            {
                nAve = (float)nSum/nCol;
                printf("=%.1f", nAve);
            }
            else
            {
                printf("%d\t", aArray[i][j]);
                nSum += aArray[i][j];
                sumColumn[j] += aArray[i][j];
            }
        }

        nSum = 0;
        printf("\n");
    }

在 sumColumn 数组中,最后将得到所有列的总和。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多