@[Zhu_Yi](/user/63362) 第四种情况出错了,一直死循环
by wmy_goes_to_thu @ 2020-12-22 20:42:58
同上
by Miquella @ 2020-12-22 20:52:44
@[expwmh](/user/107484) ok改成if解决了死循环,但是输出的数值有点匪夷所思
```c
#include<stdio.h>
int main(){
int N,x,y,a;
int xi,yi,xo,yo;
int K = 1;
x=1; y=1;
scanf("%d",&N);
int num [99][99];
for (xi=1;xi<99;xi++){
for(yi=1;yi<99;yi++){
num[xi][yi]=0;
}
}
num [(N+1)/2][1] = 1;
while (K <= N*N ){
if (y==1 && x!=N){
y=N; x++;
num [x][y]=K;
K++;
}
if (y==N && x!=1){
y--;x=1;
num [x][y]=K;
K++;
}
if(y==1 && x==N){
x--;
num [x][y]=K;
K++;
}
if(y!=1 && x!=N){
if(num[x+1][y-1]=0){
x++;y--;
num [x][y]=K;
K++;
}else{
y++;
num [x][y]=K;
K++;
}
}
}
for (xo=1;xo<=N;xo++){
for(yo=1;yo<=N;yo++){
a = num[xo][yo];
printf("%d",a);
printf(" ");
}
printf("\n");
}
return 0;
}
```
by Zhu_Yi @ 2020-12-22 23:45:17
@[expwmh](/user/107484) 我似乎知道问题在哪里了,感谢大佬!
by Zhu_Yi @ 2020-12-23 00:22:18
第四种情况里的if里应为两个=
by out8ygy @ 2021-02-02 18:20:16