#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数组时遇到了麻烦。我在做什么错了?
答案 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
使用尺寸。