首先,请原谅,我是初学者。我只是想获得一个正方形的尺寸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 dimension\n", 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
始终为true,并且j
的值无限制地递增。因此,当您尝试访问square[i][j]
时,j
的值可能比dimension
大得多,这是无效的内存访问,这会导致分段错误