需要用“ *”做圣诞树的一半

时间:2019-04-08 15:12:24

标签: c

圣诞树一半所需要的输出为:

    *
   **
  ***
 ****
*****

我可以得到这样的输出:

*
**
***
****
*****

仅使用循环和条件(无法使用数组),如何获得像第一个那样的解决方案?

main()
{
    int n;
    printf("Introduza o número de ramos:        ");
    scanf_s("%d", &n);

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1 ; j <= i; j++)
        {   

            putchar('*');

        }
        putchar('\n');
    }
}

2 个答案:

答案 0 :(得分:0)

您显然知道如何将多个相同的字符彼此相邻。

剩下要做的就是注意第一棵半树和第二棵半树之间的唯一区别是星星前的一些空间。

还请注意,考虑到恒星的数量,空间的数量是完全可以预测的:空间和恒星的总宽度是恒定的。

答案 1 :(得分:0)

您只需要在内部循环中提供一个条件即可。您应该从1到n运行内循环,如果j小于i,则打印" "(空格),否则我打印'*'

for (int i = 1; i <= n; i++)
{
    for (int j = 1 ; j <= n; j++)
    {
        if(j < i)
            putchar(' ');
        else
            putchar('*');

    }
    putchar('\n');
}