int k = 0,x = 1,y = 0;
while (k <= n*n){
while (y < n && !a[x][y+1] ){
a[x][y]=k;
k++;
y+=1;
}
while (x < n && !a[x+1][y]){
a[x][y]=k;
k++;
x+=1;
}
while (y - 1 > 0 && !a[x][y-1]){
a[x][y]=k;
k++;
y-=1;
}
while (x - 1 > 0 && !a[x-1][y]){
a[x][y]=k;
k++;
x-=1;
}
if (k == n*n) break;
}
for (i = 1; i<= n;i++){
for (j = 1;j<=n;j++){
if (a[i][j] == 0) a[i][j]=n*n;
printf("%3d",a[i][j]);
}
printf("\n");
}
如果我没有
if (a[i][j] == 0) a[i][j]=n*n;
这句话,我就没有n*n这个数出现
还有 y=0 是为什么,改成y=1就错了,k = 1的话,就没有1了