我的程序犯傻,明明if不满足它还执行
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[10][10],n,x=1,y=1,xa=0,ya=1;
memset(a,0,sizeof(a));
cin>>n;
a[x][y]=1;
for(int i=2;i<=n*n;i++){
if(x==n||a[x+1][y]!=0){
if(!(y==1||a[x][y-1]!=0)){
xa=0;ya=-1;
}
}else if(y==n||a[x][y+1]!=0){
xa=1;ya=0;
}else if(x==1||a[x-1][y]!=0){
xa=0;ya=1;
}else if(y==1||a[x][y-1]!=0){
xa=-1;ya=0;
}x+=xa;y+=ya;
a[x][y]=i;
}for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%3d",a[i][j]);
}cout<<endl;
}return 0;
}