牛客网刷题 | BC114 圣诞树 (不理解)

目前主要分为三个专栏,后续还会添加:

        专栏如下:                 C语言刷题解析       C语言系列文章       我的成长经历

感谢阅读!

初来乍到,如有错误请指出,感谢!


这道题没搞懂 也没找到视频

水了篇文章

大家有思路可以放到评论区

或者有视频也行

放个链接给我 我去学一学

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

//思路:我们可以观察到树叶部分是由一些相同的三角形构成的,
//树的底部就是处于中间的所输入n层的n个*,所以大体上我们就可以分为2部分来打印

int main()
{
    //一、先打印上面“树叶”部分
    int n = 0;    //层数
    scanf("%d", &n);
    int i = 0;    //循环控制层数
    int m = 3 * n;  
    //用于控制打印空格,不直接用3*n,
    //而是重新定义一个变量,是因为在打印过程中每一层要打印的空格不同,我们需要对m进行变化
    for (i = 1; i <= n; i++)
    {
        //打印第i层的第一行
        int space = m - 1;    //三角形前面的空格
        while (space--)
        {
            printf(" ");
        }

        int k = 0;    //因为打印过程中相邻三角形会出现"*     "
        for (k = 0; k < i; k++)
        {
            printf("*     ");   //打印每层三角形的第一行
        }
        printf("\n");

        //打印第i层的第二行
        int space2 = m - 2;        //空格少1
        while (space2--)
        {
            printf(" ");
        }
        for (k = 0; k < i; k++)
        {
            printf("* *   ");   //到了第二行相邻三角形间变为了"* *   "
        }
        printf("\n");

        //打印第i层的第三行
        int space3 = m - 3;         //空格少1
        while (space3--)
        {
            printf(" ");
        }
        for (k = 0; k < i; k++)
        {
            printf("* * * ");   //第三行变成了"* * * "
        }
        printf("\n");

        m = m - 3;  //每层少打3个空格

    }

    //二、底部
    int bottom = 0;
    for (bottom = 0; bottom < n; bottom++)
    {
        int j = 0;
        for (j = 0; j < 3 * n - 1; j++)
        {
            printf(" ");
        }
        printf("*\n");
    }

    return 0;
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值