检查二维数组中第 i 行和第 i 列的总和是否相同

Check if sums of i-th row and i-th column are same in 2d array

我需要检查二维数组中第 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);
    }
  }

Also how can I make count it normally like [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]