首先,请原谅,我是初学者。我只是想得到一个正方形的维数n,并用值1到n^2填充一个2D数组。这是我编码的:
#include <stdio.h>
int main() {
int dimension = 0;
printf("Enter the size: ");
scanf("%d", &dimension);
int square[dimension][dimension];
int count = 1;
int i, j;
printf("n%d dimension", dimension);
for(i = 0; i < dimension; i++){
for(j = 0; i < dimension; j++){
square[i][j] = count;
count++;
}
}
printf("n%d dimensionn", dimension);
for(int i = 0; i < dimension; i++) {
for(int j = 0; j < dimension; j++)
printf("%d ",square[i][j]);
printf("n");
}
return 0;
}
对于3的输入,我得到以下输出:
Enter the size:
3 dimension
31 dimension
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 34 34 33
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 34 34 33 2 29 2
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 34 34 33 3 26 2 0 2 0
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 34 34 33 4 23 2 0 2 0 -372176384 32765 1443246592
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 34 34 33 5 20 2 0 2 0 -372176384 32765 1443246592 1101415723 1552312736 32550
19 20 21 22 23 24 25 26 27 28 29 30 31 34 34 33 6 17 2 0 2 0 -372176384 32765 1443246592 1101415723 1552312736 32550 0 0 4195664
22 23 24 25 26 27 28 29 30 31 34 34 33 7 14 2 0 2 0 -372176384 32765 1443246592 1101415723 1552312736 32550 0 0 4195664 0 -372175936 32765
25 26 27 28 29 30 31 34 34 33 8 11 2 0 2 0 -372176384 32765 1443246592 1101415723 1552312736 32550 0 0 4195664 0 -372175936 32765 0 0 0
28 29 30 31 34 34 33 9 8 2 0 2 0 -372176384 32765 1443246592 1101415723 1552312736 32550 0 0 4195664 0 -372175936 32765 0 0 0 0 4196560 0
31 34 34 33 10 5 2 0 2 0 -372176384 32765 1443246592 1101415723 1552312736 32550 0 0 4195664 0 -372175936 32765 0 0 0 0 4196560 0 1548250007 32550 1
33 11 2 2 0 2 0 -372176384 32765 1443246592 1101415723 1552312736 32550 0 0 4195664 0 -372175936 32765 0 0 0 0 4196560 0 1548250007 32550 1 0 -372175928 32765
2 0 2 0 -372176384 32765 1443246592 1101415723 1552312736 32550 0 0 4195664 0 -372175936 32765 0 0 0 0 4196560 0 1548250007 32550 1 0 -372175928 32765 32768 1 4195910
0 -372176384 32765 1443246592 1101415723 1552312736 32550 0 0 4195664 0 -372175936 32765 0 0 0 0 4196560 0 1548250007 32550 1 0 -372175928 32765 32768 1 4195910 0 0 0
1443246592 1101415723 1552312736 32550 0 0 4195664 0 -372175936 32765 0 0 0 0 4196560 0 1548250007 32550 1 0 -372175928 32765 32768 1 4195910 0 0 0 1229117345 230489935 4195664
32550 0 0 4195664 0 -372175936 32765 0 0 0 0 4196560 0 1548250007 32550 1 0 -372175928 32765 32768 1 4195910 0 0 0 1229117345 230489935 4195664 0 -372175936 32765
4195664 0 -372175936 32765 0 0 0 0 4196560 0 1548250007 32550 1 0 -372175928 32765 32768 1 4195910 0 0 0 1229117345 230489935 4195664 0 -372175936 32765 0 0 0
32765 0 0 0 0 4196560 0 1548250007 32550 1 0 -372175928 32765 32768 1 4195910 0 0 0 1229117345 230489935 4195664 0 -372175936 32765 0 0 0 0 1292031905 -230216595
0 0 4196560 0 1548250007 32550 1 0 -372175928 32765 32768 1 4195910 0 0 0 1229117345 230489935 4195664 0 -372175936 32765 0 0 0 0 1292031905 -230216595 -1904420959 -202356897 0
0 1548250007 32550 1 0 -372175928 32765 32768 1 4195910 0 0 0 1229117345 230489935 4195664 0 -372175936 32765 0 0 0 0 1292031905 -230216595 -1904420959 -202356897 0 32765 0 0
1 0 -372175928 32765 32768 1 4195910 0 0 0 1229117345 230489935 4195664 0 -372175936 32765 0 0 0 0 1292031905 -230216595 -1904420959 -202356897 0 32765 0 0 0 0 1552312115
32765 32768 1 4195910 0 0 0 1229117345 230489935 4195664 0 -372175936 32765 0 0 0 0 1292031905 -230216595 -1904420959 -202356897 0 32765 0 0 0 0 1552312115 32550 1552205368 32550
4195910 0 0 0 1229117345 230489935 4195664 0 -372175936 32765 0 0 0 0 1292031905 -230216595 -1904420959 -202356897 0 32765 0 0 0 0 1552312115 32550 1552205368 32550 441844 0 0
0 1229117345 230489935 4195664 0 -372175936 32765 0 0 0 0 1292031905 -230216595 -1904420959 -202356897 0 32765 0 0 0 0 1552312115 32550 1552205368 32550 441844 0 0 0 0 0
4195664 0 -372175936 32765 0 0 0 0 1292031905 -230216595 -1904420959 -202356897 0 32765 0 0 0 0 1552312115 32550 1552205368 32550 441844 0 0 0 0 0 0 0 4195664
32765 0 0 0 0 1292031905 -230216595 -1904420959 -202356897 0 32765 0 0 0 0 1552312115 32550 1552205368 32550 441844 0 0 0 0 0 0 0 4195664 0 -372175936 32765
0 0 1292031905 -230216595 -1904420959 -202356897 0 32765 0 0 0 0 1552312115 32550 1552205368 32550 441844 0 0 0 0 0 0 0 4195664 0 -372175936 32765 4195705 0 -372175944
-230216595 -1904420959 -202356897 0 32765 0 0 0 0 1552312115 32550 1552205368 32550 441844 0 0 0 0 0 0 0 4195664 0 -372175936 32765 4195705 0 -372175944 32765 28 0
0 32765 0 0 0 0 1552312115 32550 1552205368 32550 441844 0 0 0 0 0 0 0 4195664 0 -372175936 32765 4195705 0 -372175944 32765 28 0 1 0 -372170838
0 0 0 1552312115 32550 1552205368 32550 441844 0 0 0 0 0 0 0 4195664 0 -372175936 32765 4195705 0 -372175944 32765 28 0 1 0 -372170838 32765 0 0
1552312115 32550 1552205368 32550 441844 0 0 0 0 0 0 0 4195664 0 -372175936 32765 4195705 0 -372175944 32765 28 0 1 0 -372170838 32765 0 0 0 0 33
无论我给出什么输入,维度的值都会在两者之间发生变化。这是我在一个在线IDE上得到的。在我在ubuntu中运行的终端上,它显示"分段错误(核心转储("。作为一个熟悉Python的人,我发现很难处理C的规则。我该如何解决此问题?
非常感谢。
问题是在第二个循环中检查条件是错误的。
你有
for(j = 0; i < dimension; j++)
而不是
for(j = 0; j < dimension; j++)
例如,对于i
值0,i < dimension
始终为真,并且j
值在没有任何限制的情况下递增。因此,当您尝试访问square[i][j]
时,j
的值可能比dimension
大得多,这是无效的内存访问,会导致分段故障