c-检查2d阵列中第i行和第i列的总和是否相同



我需要检查2d数组中第I行和第j列的和是否相同,并输出该行的I和该列的j以及和。此外,我如何像[1][1],[1][2]等一样正常计数

提前谢谢。

这就是我所拥有的,遗憾的是它不起作用

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
int sum1 = 0, sum2 = 0;
int a[2][3];
int i, j;
for (i = 0; i<2; i++)
{
for (j = 0; j<3; j++)
{
printf("a[%d][%d] = ", i, j);
scanf("%d", &a[i][j]);
}
}
for (i = 0; i<2; i++)
{
sum1 = 0, sum2 = 0;
for (j = 0; j<3; j++)
{
sum1 += a[i][j];
sum2 += a[j][i];
}
if (sum1 == sum2)
printf("row is %d and column is %d = %d", i, j, sum1);
}

return 0;
}

行和的计算似乎是正确的,但列和的计算是错误的。

试试看:

for (i = 0; i<2; i++)  // For every row
{
// Calculate row sum
sumRow = 0;
for (j = 0; j<3; j++)
{
sumRow += a[i][j];
}
for (j = 0; j<3; j++) // For every column
{
// Calculate column sum
sumColumn = 0;
for (i = 0; i<2; i++)
{
sumColumn += a[i][j];
}
// Compare results
if (sumRow == sumColumn)
printf("row is %d and column is %d = %d", i, j, sumRow);
}
}

然而,上述代码并不有效。更好的方法是预先计算列和,这样你就不需要一次又一次地计算了。

类似于:

int columnSum[3] = {0};
for (j = 0; j<3; j++) // For every column
{
// Calculate column sum
for (i = 0; i<2; i++)
{
columnSum[j] += a[i][j];
}
}
for (i = 0; i<2; i++)  // For every row
{
// Calculate row sum
sumRow = 0;
for (j = 0; j<3; j++)
{
sumRow += a[i][j];
}
for (j = 0; j<3; j++) // For every column
{
// Compare results
if (sumRow == columnSum[j])
printf("row is %d and column is %d = %d", i, j, sumRow);
}
}

还有我如何像[1][1],[1][2]一样正常计数

如果你想用C语言编程,你必须像语言让它变得自然一样计数——例如从零开始。排得更远。所以使用

Column 0  Column 1  Column 2
Row 0:    [0][0]    [0][1]    [0][2]
Row 1:    [1][0]    [1][1]    [1][2]

相关内容

  • 没有找到相关文章

最新更新