【问题标题】:How to make a solid and hollow square in c based on user input of rows and colums如何根据用户输入的行和列在c中制作实心和空心正方形
【发布时间】:2015-04-08 19:06:54
【问题描述】:

我正在做一个假设根据用户的输入同时显示实心和空心框的任务,我遇到了一个错误,我需要将它保持在 1 到 20 之间。所以如果用户要输入一个小于或大于程序应终止范围的数字。我遇到的错误是当用户输入大于 9 的数字时,我制作的框不会显示。 请帮忙,我需要在今晚之前把它上交。我非常感谢。

代码可以在链接here中找到

#include <stdio.h>

 int main ( void )
 { /* Start of function main */

 int entry; /* initialize number entered by user */

 entry <=20;     /* largest number user can enter */
 entry >=1;       /* smallest number user can enter */

printf( "Enter a number between 1 and 20. " ); 
                      /*obtain a number from   the user */
scanf( "%d", &entry);

if ( entry <= 0 ) { /*if user enters a number smaller than 1 */
   printf( " \n");
   return 0;
}
else if ( entry >= 20 ) { /* if user enters a number larger than 20 */
   printf( " \n");
   return 0;
}
else if ( entry == 1 ) {
   printf( "*\n" );
}
else if (entry == 2 ) {
   printf( "**\n" );
   printf( "**\n" );
}
else if (entry == 3 ) {
   printf ( "***  ***\n" );
   printf ( "***  * *\n" );
   printf ( "***  ***\n" );
}
else if (entry == 4 ) {
   printf ( "****  ****\n" );
   printf ( "****  *  *\n" );
   printf ( "****  *  *\n" );
   printf ( "****  ****\n" );
}

【问题讨论】:

  • 链接有我创建的完整代码

标签: c vim ssh vi


【解决方案1】:

1- 我认为您的代码中的以下几行是多余的:

 entry <=20;     /* largest number user can enter */
 entry >=1;       /* smallest number user can enter */

你想评论他们吗?如果是这样,请在行首使用//

2- 由于我无法打开您在问题中提出的链接,因此我无法说出问题所在。但我强烈建议您使用for 循环而不是这些嵌套的if 表达式。

#include <stdio.h>

int main ( void )
{ 
int entry=100;
int i,j;

    while (entry>20 || entry<0)
    {
        printf("Please enter a valid number between 0 and 20 :");
        scanf("%d",&entry);
    }

    if(entry==1)
        printf("*");
    else if (entry==2)
        printf("**\n**");
    else
    {
        for(i=1;i<=entry;i++)
            printf("*");

        printf(" ");

        for(i=1;i<=entry;i++)
            printf("*");

        printf("\n");

        for(i=1;i<=entry-2;i++)
        {
            for(j=1;j<=entry;j++)
                printf ("*");

            printf(" ");
            printf("*");

            for(j=1;j<=entry-2;j++)
                printf(" ");

            printf("*");
            printf("\n");
        }


        for(i=1;i<=entry;i++)
            printf("*");

        printf(" ");

        for(i=1;i<=entry;i++)
            printf("*");
    }
    printf("\n");
}

【讨论】:

  • 不幸的是,我的计算机上没有安装 C/C++ 编译器。我希望它有效! :)
  • 感谢您的响应,我在代码中输入并编译了它,但是当我运行代码时,它显示了一个空白区域,而不是在一个空心方块旁边显示一个实心方块。您对显示空白而不是正方形可能会发生什么有什么建议?
  • @thatguy 请再试一次。正如我在第一行写的int entry=1; 一样,while 循环没有运行。我将其替换为int entry=100;,现在可以了。
  • 你指的是哪一行?
  • @thatguy 在以前的版本中,我写的是int entry=100;,而不是int entry=1;。并且 1 不小于 0 或大于 20,while 条件等于False 并且它永远不会运行。所以 entry 总是等于 1,而你只看到了一颗星。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多