首页 > 解决方案 > 如何在 C 中生成这种模式?

问题描述

%@@@%
%...%
%...%
%...%
%@@@%

我的错误在哪里?请告诉我。我是初学者:我刚开始编程。我会很感激你的帮助。

    #include<stdio.h>
    int main(){
    int i,j,num;
    scanf("%d", &num);

    for(i=0;i<num;i++){
        for(j=0;j<num;j++){
            if((i==0)||(i==num-1)){
            printf("@");
            }
            else if((j==i-1)||(j==num-1)){
            printf("%");
            }
            else
                printf(".");
        }
        printf("\n");
    }
}

标签: c

解决方案


您的代码中存在三个问题。

  1. %符号是 C 中的一个运算符,用于在printf函数中进行格式化。因此printf("%");不会打印此字符。有个窍门,你可以改写printf("%%");
  2. 先关心字符%,再关心@你评价中的字符,否则取不到%第一行和最后一行的字符
  3. 变量的条件j也必须等于0num-1

有一个更优雅的解决方案,但要遵循您的代码,这是正确的实现:

#include<stdio.h>
int main(void)
{
   int i,j,num;
   scanf("%d", &num);

   for(i=0;i<num;i++)
   {
      for(j=0;j<num;j++)
      {
         if((j==0)||(j==num-1))
         {
            printf("%%");
         }
         else if((i==0)||(i==num-1))
         {
            printf("@");
         }
         else
         {
            printf(".");
         }
      }
      printf("\n");
   }
   return 0;
}

我建议重新考虑您的代码。玩得开心。:-)


推荐阅读