如何创建将9个整数读入3x3数组的程序

时间:2019-09-25 18:15:20

标签: c arrays matrix

#include <stdio.h>

int main()
{
  int test[2][3][2];
  printf("Enter nine values: \n");
  for (int i = 0; i < 3; ++i)
  {
    for (int j = 0; j < 3; ++j)
    {
      for (int k = 0; k < 1; ++k)
      {
        scanf("%d", &test[i][j][k]);
      }
    }
  }
  // Printing values with proper index.
  printf("\nDisplaying values:\n");
  for (int i = 0; i < 2; ++i)
  {
    for (int j = 0; j < 3; ++j)
    {
      for (int k = 0; k < 2; ++k)
      {
     printf("test[%d][%d][%d] = %d\n", i, j, k, test[i][j][k]);
      }
    }
  }
  return 0;
}

也许我只是做错了,但在理解如何使程序仅读取9个整数以及从用户输出3x3数组时遇到了麻烦。我在做什么错了?

2 个答案:

答案 0 :(得分:0)

您要使用尺寸为3x3的2D数组(换句话说就是矩阵),因此最终需要的是这样的东西:

int arr[3][3];

创建具有3行3列的2D数组。在尝试中,您使用了3维数组,这不是您想要的。

我想您将从我的示例中了解其余的内容(通过您的良好尝试,您已经知道了这些内容)

#include <stdio.h>

#define N 3
#define M 3

int main(void)
{
  int arr[N][M] = {0};

  for(int i = 0; i < N; i++)
    for(int j = 0; j < M; j++)
      scanf("%d", &arr[i][j]);

  for(int i = 0; i < N; i++)
  {
    for(int j = 0; j < M; j++)
      printf("%d ", arr[i][j]);
    printf("\n");
  }

  return 0;
}

另请参见 live

答案 1 :(得分:0)

您根本没有遵循数组的尺寸。您这里有一个3维数组,尺寸为2 x 3 x2。假定它充满了0,以帮助可视化:

[
  [
    [0, 0],
    [0, 0],
    [0, 0]
  ],
  [
    [0, 0],
    [0, 0],
    [0, 0]
  ]
]

请记住,将数组0索引为n-1,其中n是数组的大小。

您的第一个for循环迭代到2,它等于最外层数组的大小。这将导致分段错误。

您应使用二维数组,并#define使用尺寸。