c - 在c中对二维数组求和

标签 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);
}

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

最佳答案

一个问题是j从 4 开始,然后递增(增加)到 5、6... 您还想从 3 而不是 4 开始。并且您不想将任何内容分配给 j在有条件的情况下。所以使用 for(j=3;j>=0;j--) .

不过,您实际上并不需要二维迭代,因为对角线是一维的。因此,一个更简单、更有效的解决方案是

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

第一条对角线也是如此。

关于c - 在c中对二维数组求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36366254/

相关文章:

php - 如何构建多维数组?

java - 查找二维数组中的每个数字是否唯一?

python - python 范围内的条件和

mysql - 如何使用sql sum函数添加重复行

c - 在 C 中通过按位 & 和 ^ 进行跟踪

c - 数字食谱中的月亮函数

c - 多个 realloc 是否比一个巨大的 malloc 更昂贵?

c - 如何避免在 while 循环中打印 '\n' 的 ASCII 值?

php - 何时可以在多维数组中访问定义的变量?

r - 向量化 R 中的双重求和