C 使用源代码为snake绘制正方形字段

C 使用源代码为snake绘制正方形字段,c,C,我正试图用这个代码生成一个正方形字段。但不知怎么的,结果是错的。有人能帮我指出我的错误吗?我不确定我做错了什么,因为这是我第一次学习C。下面是代码 int i,j; const int width = 30; const int height = 30; int main() { for(int i = 0; i < width + 2; i++){ printf("#"); } for(int i = 0;i < height; i++){

我正试图用这个代码生成一个正方形字段。但不知怎么的,结果是错的。有人能帮我指出我的错误吗?我不确定我做错了什么,因为这是我第一次学习C。下面是代码

int i,j;

const int width = 30;

const int height = 30;

int main()
{  
  for(int i = 0; i < width + 2; i++){
      printf("#");
  }

  for(int i = 0;i < height; i++){    
    for(int j = 0; j < width; j++){
      if(j == 0){  printf("#")  }
      if(j == 0){  printf(" ");  }
      if(j == width - 1){  printf("#");  }
    }
  }

  for(int i = 0; i < width + 2; i++){
    printf("#"); 
  }


  return 0;
}
inti,j;
const int width=30;
const int height=30;
int main()
{  
对于(int i=0;i
您在第二个if语句中犯了错误。当j不是0或width-1时,要打印“”

if(j == 0 || j == width - 1){  
    printf("#") ;
} else {
    printf(" ");
}

第二个if(j==0)出现故障。去掉它,你就会得到你想要的正方形。

在for循环中,你想要更像

for (int i = 0; i < height; i++){
  for (int j = 0; j < width + 2; j++){ //Note width + 2, to match your top line
    if (j == 0){ printf("#"); } // print near border
    else if (j == (width + 1)){ printf("#"); } // print far border
    else { printf(" "); } // when it's  not a far border or near border, print an empty space
  }
  printf("\n");
}
for(int i=0;i

您不必为近边框打印“#”和“”,只需打印“#”,然后为正方形内的所有空间打印“”。最后,在远端,你再次打印“#”。

你没有说什么不对,但不知怎的,它最终错了。您期望的输出是什么?出了什么问题?但是,您的代码不会编译(例如,在第一个
if
中缺少
)。另外,如果(j==0)
这个双精度
,看起来是有线的。对不起,忘了提到这个。它打印出的是c形字段而不是正方形字段。我不知道如何使用相同的条件多次打印。这就是我使用双if(j==0)的原因。只需使用if(){}else if(){}else if(){}构造即可。否则,你会得到更多的符号打印比广场上你的领域。