【发布时间】: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", &n) != 1) { fputs ("error: invalid integer input.\n", stderr); return 1; }
标签: c loops nested-loops