c语言打印圣诞树图案

  • //        *     从键盘输入3时
    //       * * 
    //      * * *
    //     *     *  
    //    * *   * * 
    //   * * * * * *
    //  *     *     *  
    // * *   * *   * * 
    //* * * * * * * * *
    //        *
    //        *
    //        *
    //
    //            
    //        *     从键盘输入2时
    //       * *    
    //      * * *   
    //     *     *  
    //    * *   * * 
    //   * * * * * *
    //        *
    //        *
    //
    //
    //
    //        *      从键盘输入1时
    //       * * 
    //      * * *
    //        *
    //      
    //解题思路:我们可以看成打印多个
    //  *     从而完成图案
    // * *    首先我们一行一行来打印 第一行得出规律打印完*后继续打印五个空格
    //* * *   第二行我们可以把* *   看成一个整体不断打印即可
    //        第三行我们可以把* * * 看成一个整体不断打印
    //      具体实现看下面代码

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int main() {
        int h,n;
        scanf("%d",&h);
        n = h - 1;
        int lie, hang, hang1;//打印的列数和行数
        lie = 2 * (2 + (3 * n)) + 1;//列数
        hang = h * 4; //行数
        hang1 = hang - h;//打印三角形的行数
        int i, j;
        for (i = 1; i <= h; i++) //确定要打印几个三角形 1会打印一个 2会打印3个 3会打印6个
        {
            for (j = 1; j <= hang1 - i; j++)
            {
                printf(" ");  //打印需要的空格
            }
            for (j = 1; j <= i; j++)
            {
                printf("*     "); //开始打印第一行 若输入等于2,i=2时会打印两个
            }
            printf("\n");
            for (j = 1; j <= hang1 - i-1; j++)
            {
                printf(" ");
            }
            for (j = 1; j <= i; j++)
            {
                printf("* *   "); //开始打印第二行
            }
            printf("\n");
            for (j = 1; j <= hang1 - i-2; j++)
            {
                printf(" ");
            }
            for (j = 1; j <= i; j++)
            {
                printf("* * * "); //开始打印第三行
            }
            printf("\n");
            hang1 = hang1 - 2; //很关键的一步,打印空格时依次减少1,一轮下来要减去2,才能保证空格数依次递减
        }
        //打印最后的树干部分 
        for (i = 1; i <= h; i++)
        { 
            for (j = 1; j <= lie / 2; j++) //打印空格 
            {
                printf(" ");
            }
            printf("*\n");
        }
        return 0;
    }
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值