【问题标题】:Program that prints stars equal to the number received in C打印星星的程序等于 C 中收到的数字
【发布时间】:2021-07-30 22:29:23
【问题描述】:

我想写一个程序以后退的方式打印开始(*)。

Input:
3

Output:
*
**
***
Input:
4

Output:
*
**
***
****

我打算使用用户定义的函数和循环来创建程序,但这是一个相当大的挑战。

到目前为止我有这个:

#include<stdio.h> 

int main(void) 
{ 
    char print_star(int n); 
    int n; 
    printf("insert number\n"); 
    scanf("%d", &n); 
    printf("%s", print_star); 
} 

char print_star(int n) 
{ 
    while(n > 0) { 
        return ("*"); 
        n = n - 1; 
    } 
}

更新!在评论者的帮助下,我写了这个:

#include<stdio.h>
char print_star(int n);
int main(void)
{
    int n;
    printf("Insert number\n");
    scanf("%d", &n);
    for (n = n; n > 0; n--)
    {
        printf("\n %c", print_star(n));
    }
    
}
char print_star(n)
{
    
    for (n = n; n > 0; n--)
    {
        printf("*");
    }
}

它工作正常,但我认为有一个轻微的缺陷并说明原因。如果用户插入数字 3,结果如下所示:

***                                                                                                                                   
 ***                                                                                                                                  
 **                                                                                                                                   
 *   

与预期相反

***                                                                                                                                  
**                                                                                                                                   
*

你能告诉我我在哪里绊倒吗?

【问题讨论】:

  • 对我来说似乎很简单。到目前为止你有什么?您需要努力解决问题,如果遇到困难,请提出具体问题。现在看起来你希望有人会为你编写代码,但这不是这个网站的目的。
  • 制作一个打印N颗星的函数。从 1 到用户输入的数字循环。在循环的每次迭代中,使用循环计数器调用函数。如果您有一些代码,您可以将其编辑到您的问题中。
  • 如果您从1 转到N,则不再需要滑动窗口。只需从1 循环到N 并输出@RetiredNinja 指示的那么多星星。如果您不确定如何编写单独的函数来打印 X 颗星,那么只需使用从 1 循环到外循环的 current_index 和 putchar('*'); 的内循环,当您退出内循环时, putchar('\n'); 整理换行符。
  • 哦.....我的错。发布额外代码后,不要 return ("*"); 只是 putchar('*') ... :)
  • 不要忘记验证scanf() 的返回,因此如果用户滑到'4' 并按下'r',您就不会调用Undefined Behavior .例如,if (scanf ("%d", &amp;n) != 1) { fputs ("error: invalid integer input.\n", stderr); return 1; }

标签: c loops nested-loops


【解决方案1】:

这是引用您的代码时提到的问题的解决方案代码。 谢谢

#include<stdio.h>
int print_star(int i)
{
    int check = 1;
    while (check<=i)
    {
        for(int l=1; l<=check; l++)
        {
         printf("*"); 
        }
        printf("\n");
        check++;
        }
        return 0;       
}
int main ()
{
    int n;
    printf("insert number\n");
    scanf("%d", &n);
    print_star(n);
    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2021-05-17
    相关资源
    最近更新 更多