在第10行,我无法找到我的问题在哪里。我放置了int a[100][100]={0}
,但是cpu速度卡住了。
然后,我尝试将其更改为a[n][n]
,但没有显示输出。最后,我试着再改一次,就好像它和原来的一样。然而,没有什么比一个新的问题更有效。
#include<stdio.h>
int main() {
int n;
while (scanf("%d", &n)) {
n *= 2;
int x = 0, y = 0, num = 1;
int a[n][n] = {0};
a[x][y] = num++;
while (n * n >= num) //定義陣列
{
while (y + 1 < n && !a[x][y + 1]) //向右
a[x][++y] = num++;
while (x + 1 < n && !a[x + 1][y]) //向下
a[++x][y] = num++;
while (y - 1 >= 0 && !a[x][y - 1]) //向左
a[x][--y] = num++;
while (x - 1 >= 0 && !a[x - 1][y]) //向上
a[--x][y] = num++;
}
for (x = 0; x < n; x++) //print 陣列
{
for (y = 0; y < n; y++) {
if (y != n - 1) {
printf("%d ", a[x][y]);
} else {
printf("%d", a[x][y]);
}
}
printf("n");
}
break;
}
return 0;
}
至少这个问题:
可变长度数组(VLA)不能通过C标准初始化。
交替,定义a
后通过memset()
赋值
// int a[n][n]={0};
int a[n][n];
memset(a, 0, sizeof a);