题解 | #圣诞树#

圣诞树

https://www.nowcoder.com/practice/9a03096ed8ab449e9b10b0466de29eb2

//刚开始看到这个题目,真不知道怎么下手,但我还是尝试去一步一步写,写着写着,思路也一步一步来了,虽来了,只能写出复杂的代码,请大佬指点
#include <stdio.h>
int main() {
    int a = 0;
    while (~scanf("%d", &a))
    {
        int i = 0;
        for (i = 0; i < 3 * a; i++)//控制打印上半部分
        {
            int j = 0;
            for (j = 0; j < 3 * a -1- i; j++)//控制每行打印的空格
            {
                printf(" ");
            }
            if (i % 3 == 0 )//控制打印一个*的数量
            {
                int k = 0;
                printf("*");
                for (k = 0; k < i / 3; k++)//需要打印多少次数5个空格
                {
                    for (j = 0; j < 5; j++)//每次打印5个空格
                    {
                        printf(" ");
                    }
                    printf("*");
                }
                printf("\n");
            }
            else if (i % 3 == 1 )//控制打印两个*的数量
            {
                int k = 0;
                printf("* *");
                for (k = 0; k < (i - 1) / 3; k++)//需要打印多少次数3个空格
                {
                    for (j = 0; j < 3; j++)//每次打印3个空格
                    {
                        printf(" ");
                    }
                    printf("* *");
                }
                printf("\n");
            }
            else if (i % 3 == 2)//控制每一层(不是每一行)末行打印*的数量
            {
                for (j = 0; j <= i; j++)
                {
                    printf("* ");
                }
                printf("\n");
            }
        }
        for (i = 0; i < a; i++)//控制打印下半部分
        {
            int j = 0;
            for (j = 0; j < 3 * a - 1; j++)
            {
                printf(" ");
            }
            printf("*\n");
        }
    }
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务