2016-04-26 131 views
-2

我想打印一个二维数组的每列的值的平均值。我已经想出了如何找到连续的平均值,但我仍然努力做到这一点。如何查找2D数组中列值的平均值?

这是我到目前为止有:

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"); 
    } 
+1

交换for循环而不更改内部代码 – Nadir

+1

您期望什么?我认为你的代码是正确的。 –

+1

也许第一次nSum初始化?尽管如此,我会避免在第二个for循环中执行+1。这是一个坏习惯imo – baptiste

回答

0

我认为是比较容易做另一个用于数列的平均水平。 像:

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数组中,您将得到所有列的总和。