在c中求和2D数组

时间:2016-04-01 21:39:01

标签: c multidimensional-array sum diagonal

   void ArrayDiagonal(double Array[4][4])
{
    //declare local variables//
    int i,j=0;
    double dSum = 0;
    for(i=0;i<4;i++)
        {
            for(j=0;j<4;j++)
            {
                if(i==j)
                {
                    dSum=dSum+Array[i][j];
                }
            }
        }
    printf("The sum of the main diagonal elements is = %.2f\n", dSum);
    OffArrayDiagonal(Array);
}

void OffArrayDiagonal(double Array[4][4])
{
    //declare local variables//
    int i,j=0;
    double dOff= 0;
    for(i=0;i<4;i++)
        {
            for(j=4;j=0;j++)
            {
                if(i==j)
                {
                    dOff=dOff+Array[i][j];
                }
            }
        }
    printf("The sum of the off diagonal elemets is   = %.2f\n", dOff);
}

因此,对于我正在进行的项目,我必须将数组的对角线元素添加到一起。第一个功能正常工作,但我无法让另一个方向正常工作。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

一个问题是j从4开始然后递增(增加)到5,6,......你也想从3而不是4开始。你不想分配任何东西到有条件的j。因此,请使用for(j=3;j>=0;j--)

你不需要二维迭代,因为对角线是一维的。因此,更简单,更有效的解决方案是

for (i = 0 ; i < 4 ; i++)
    dOff += Array[i][3-i];

和第一对角线类似。