打印圣诞树

这篇具有很好参考价值的文章主要介绍了打印圣诞树。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

打印圣诞树

今天遇到一个不算特别变态的题目,可是却往错误的方向思考了有一会儿。

这是这个题目的链接:[打印圣诞树](圣诞树_牛客题霸_牛客网 (nowcoder.com))

题目大致意思是,给定一个高度,打印出圣诞树。

效果图类似以下这种:

打印圣诞树

错误示范

首先我把每片叶子看作是5X3的矩形,空白看作是3X3的矩形

最上面为第1层,最下面为第n层。

第i层前面有n-i个空矩形。

打印圣诞树

于是,我就想到了下面的代码:

#include"stdio.h"
void print_empty();//打印空矩形,只含一个printf函数
void print_53();//打印三角矩形,只含一个printf函数
int main()
{
    int n=0;
    scanf("%d",&n);//n是输入的圣诞树高度
    for(int i=1;i<n+1;i++)//到第i层
    {
        for(int j=0;j<n-i;j++)//第i层有n-i个空矩形
            print_empty();
        for(int j=0;j<i;j++)//第i层有i个53矩形
            print_53();
        printf("\n");
    }
    return 0;
}
void print_empty()
{
    printf("   \n"
           "   \n"
           "   \n");
}
void print_53()
{
    printf("  *  \n"
           " * * \n"
           "* * *\n");
}

突然我想到,在打印空矩形和53矩形时换了行,我要怎么保证两个矩形在同一行呢?

果不其然,结果成了这样。

打印圣诞树

而且,这种方式还有一个缺点,就是两个53矩形之间还有一行没考虑,自然更不可能得到正确答案。

正确姿势

代码

直接上代码,再解释:

#include <stdio.h>
void print_empty_3();//输出3个空格
void print_level(int l);//打印矩形第l行
int main()
{
    //不妨把圣诞树的每片三角形看作是 6X3 的矩形
    //把矩形看作一个元素,那么从上到下,共n层,从第一层开始看
    //第i层先有空白矩形n-i个,有三角形矩形i个

    //这样在每层的内部,还有三行,从上到下3行,从第一行开始看
    //第j行先有空白矩形行(n-i)个,之后有i个第j行矩形
    int n=0;
    scanf("%d",&n);
    for (int i = 1; i < n+1; ++i)//控制第几层
    {
        for (int j = 1; j <=3; ++j)//到了第i层的第j行,控制行
        {
            for (int k = 0; k < n-i; ++k) //第j行先有空白
            {
                print_empty_3();
            }
            for (int k = 0; k < i; ++k) //打印i个矩形第j行
            {
                print_level(j);
            }
            printf("\n");//每行输出完后换行
        }
    }
    //最后,还有一个高n行的树根
    //这个树根的位置在第nX3列
    for (int i = 0; i < n; ++i)//控制树根高度为n
    {
        for (int j = 0; j < n*3-1; ++j)
        {
            printf(" ");
        }
        printf("*\n");
    }
}
void print_empty_3()
{
    printf("   ");
}
void print_level(int l)
{
    if (1==l)
        printf("  *   ");
    else if(2==l)
        printf(" * *  ");
    else if(3==l)
        printf("* * * ");
}

解释

打印圣诞树

这个版本中,我将圣诞树的每片三角形看作是6X3的矩形,用以解决5X3矩形时两个矩形中间有缺口的问题

,并且把每层矩形再分为3行。

思路

树叶思路

从第一层开始从上往下共n层,第i层先有(n-i)个空矩形,i个六三矩形

每一层从第一行开始从上往下共3行,每行先打印(n-i)个单行空矩形,也就是(n-i)*3个空格

在打印第j行的单行矩形,这里用 void print_level(int l),函数接收第几行,就打印六三矩形的第几行,

一行打印完不忘换行 printf("\n");

树根思路

至于最后的树根,这个很简单,找规律即可:

当n=1时,树根长1,在占用行的第3个字符处;

当n=2时,树根长2,在占用行的第6个字符处;

当n=3时,树根长3,在占用行的第9个字符处;

所以,树根长n,在占用行的第n*3个字符处;

所以,来一个嵌套循环即可:

外层循环控制行,内层循环控制空格字符数,到n*3的位置时停止打印空格,打印“*”。

    for (int i = 0; i < n; ++i)//控制树根高度为n
    {
        for (int j = 0; j < n*3-1; ++j)
        {
            printf(" ");
        }
        printf("*\n");
    }

最终效果

打印圣诞树文章来源地址https://www.toymoban.com/news/detail-411735.html

到了这里,关于打印圣诞树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 圣诞节怎么能缺少圣诞树呢?Python+HTML打造专属于你的圣诞树

    前言: 美酒一杯让人醉,温馨陪伴浪漫随;雪花片片惹人爱,烦恼忧伤全不见;字里行间藏真情,文短情深送心愿:圣诞佳节快来到,祝大家永远开心幸福! Hello大家好,我是Dream。 圣诞节马上到了,一些朋友问我想送女朋友和男朋友们圣诞节礼物,但是也没想到啥好点子,作为

    2024年02月02日
    浏览(67)
  • python系列之(大家圣诞快乐)圣诞树

    2022年圣诞节到来啦,很高兴这次我们又能一起度过~, 圣诞节源自古罗马人迎接新年的农神节,与基督教本无关系。在基督教盛行罗马帝国后,教廷将这种民俗节日纳入基督教体系,同时以庆祝耶稣的降生。但在圣诞节这天不是耶稣的生辰,因为《圣经》未记载耶稣具体出生

    2024年02月04日
    浏览(55)
  • 【含源码】两种不同风格的圣诞树代码合集,其中还有可以改名字的圣诞树代码

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一年一度的圣诞节马上就要到了,看到好多程序员小伙伴已经开始炫耀自己制作的圣诞树了。今天就跟大家分享2种不同风格的圣诞树,附上完整代码,拿来即用可以按照自己的喜好来去运

    2024年02月02日
    浏览(47)
  • Python 圣诞树代码

    1.本章将会讲解Python编程 实现圣诞树效果! 2.圣诞节介绍 基督教纪念耶稣诞生的重要节日。亦称耶稣圣诞节、主降生节,天主教亦称耶稣圣诞瞻礼。耶稣诞生的日期,《圣经》并无记载。公元336年罗马教会开始在12月25日过此节。12月25日原是罗马帝国规定的太阳神诞辰。有人

    2024年02月03日
    浏览(67)
  • 圣诞树(动态效果)

      1.复制代码到Dreamweaver或HBuilder或vscode中 2.点击运行---运行到浏览器---选择你要打开的浏览器 3.打开后会出现这个界面,前四个是固定音乐,最后一个是自主选择的音乐,你可以选择你电脑上的歌曲,什么歌曲都行(第一次打开可能会有点慢,稍等片刻即可,选择音乐的时候

    2024年02月04日
    浏览(47)
  • 【AE圣诞树代码】

    首发网站 天风的人工智能小站 1、圣诞树代码第一种 2、圣诞树代码第二种 3、修改记事本后缀为html 4、点击文件查看效果

    2024年02月04日
    浏览(55)
  • Python圣诞树代码

    2024年02月04日
    浏览(56)
  • 用Python画圣诞树

    我们的目标是将代码和素材全部隐藏起来,只需要双击一下鼠标就能自动带着BGM开始画圣诞树。 (这是电脑桌面上的一个文件,只需要双击一下,代码就会在后台自动运行了) (一秒后,就会看到弹出界面开始画圣诞树了,并且自动播放背景音乐哦) (再然后,就能看到画

    2023年04月18日
    浏览(58)
  • python圣诞树代码编程

    以下是一个简单的Python圣诞树代码: def draw_tree(height):     for i in range(height):         print(\\\' \\\' * (height - i - 1) + \\\'*\\\' * (2 * i + 1))     print(\\\' \\\' * (height - 1) + \\\'|\\\') draw_tree(10) 这个函数会绘制一个等腰三角形,其中每一行的星号数量从1开始,每次递增2,空格数量则相反,从等腰三

    2024年02月05日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包