我需要检查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]