在c中对二维数组求和
Summing a 2D array in c
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];
第一个对角线也是如此。
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];
第一个对角线也是如此。