求大佬
查看原帖
求大佬
1563403
xdhking楼主2024/11/19 00:03

大佬为什么明明有右边数字如果不为零的情况下就向下转弯的判断,但是他为啥还是往一个方向走,而且所有转弯的if判断只执行了一次,第二次明明也是一样的条件但是不执行了

#include<iostream>
#include<cstdio>
using namespace std;
int a[20][20]={0};
int main()
{
    int i=1,j=1,k,n,c=1;
    cin >> n;
    for(k=1;k<=n*n;k++)
    {
     a[i][j]=k;
     if(c==1)//向右
     {
      if(j>=n||a[i][j+1])//当运行到最右边,或者右边数字不为零时变向
      {
       c++;
       i++;
       continue;
      }
      else 
      {
       j++;
       
      }
     }
     if(c==2)//向下
     {
      if(i==n||a[i+1][j]!=0)//当运行到最下边,或者下边数字不为零时变向
      {
       c++;
       j--;
       continue;
      }
      else
      {
        i++;
        
      }
     }
     if(c==3)//向左
     {
      if(j==1||a[i][j-1]!=0)//当运行到最左边,或者左边数字不为零时变向
      {
       c++;
       i--;
       continue;
      }
      else 
      {
       j--;
      }
     }
     if(c==4)//向上
     {
      if(a[i-1][j]!=0)//当运行到上边数字不为零时变向
      {
       c==1;
       j++;
       continue;
      }
      else
      i--;
     }
    }
    for(i=1;i<=n;i++)
    {
     for(j=1;j<=n;j++)
     {
      printf("%3d",a[i][j]);
     }
     cout <<endl;
    }
    return 0;
}
2024/11/19 00:03
加载中...