上面是圣诞树的大致形状

用代码实现出来是这样的

该想法的来源是牛客网的一道题目

当然只要爱足够多

你的圣诞树(爱)可以溢出屏幕,哈哈


那么我们以

为例子,也就对应题目里的h=2来详细讲解


首先我们注意到,h最大可以取到100,也就是这么庞大的圣诞树一定要用循环+找规律实现

我的第一反应 是数组,先从一小颗圣诞树实现

但是显然这个问题的特点在于空格的打印,而用数组初始化之后打印“你就慢了”

之所以特点在空格

是我们发现h=1的时候除去底部的树干,整个树枝是对称的

*注:

h=1(如图),我们称这个最基本的单元(不包含树干)为小圣诞树

我们完全可以从每一层(一共三层)把树枝分成    一堆空格+*的安排     两部分

那么我们首先实现空格这个问题

现在观察h=2,因为只有一个小圣诞树(h=1)是发现不了当层数变多时候的规律的

注意到  当图片中j=1时  也就是小圣诞树第一层,前面应该有5个空格

和j=4时的小圣诞树的第一层,中间隔了3个格子,也就是 如果设置一个变量,用他表示小圣诞树第一层的空格数,每次循环之后应该+=3

但是换个角度思考,可以让他每次++,但条件是0< <3*h-j  或者是从1开始到3*h-j+1

(这里比较抽象,需要带入h=2,好好想一下逻辑)

为什么不采用+=3的方法,因为这样知识分析了第一层的空格情况,但是用0~3*h-j就完美解决了小圣诞树1~3层的所有空格问题

剩下的就是*的安排

这个部分是根据每一层的不同特点具体安排的,绝对不能向空格一样一概而论

基于上述的+=3思想

由于我们从图片列数是1开始分析的,而不是从上至下,所以是-=3

所以代码如下

//打印圣诞树
int main()
{int h = 0;scanf("%d", &h);for (int j = 1; j <= 3 * h; j++){for (int m = 0; m < 3 * h-j; m++)printf(" ");               //全局空格的打印,和后面所有打印空格的代码二选一if (j % 3 == 1){// for (int m = j; m < 3 * h; m++)//   printf(" ");        //一个空格for (int p = j; p > 0; p -= 3)printf("*     ");   //5个空格printf("\n");}if (j % 3 == 2){// for (int c = j; c < 3 * h; c++)//    printf(" ");          //一个空格for (int p = j; p > 0; p -= 3)printf("* *   ");     //三个空格printf("\n");}if (j % 3 == 0){// for (int m = j; m < 3 * h; m++)//   printf(" ");for (int c = j; c > 0; c -= 3)printf("* * * ");      //末尾一个空格,相邻之间一个printf("\n");}}for (int l = 1; l <= h; l++){for (int c = 1; c <= 3* h +1; c++){if (c == 3 * h)printf("*");elseprintf(" ");        //一个空格}printf("\n");}
}

方法不唯一,但是个人以为这样比较容易思考和实现

创作不易,感谢观看

【圣诞节给爱的人打印一颗圣诞树吧】超详细代码实现——圣诞树打印相关推荐

  1. 火柴人逃脱小游戏(python 超详细)

    大家好,今天我们开始做一个新的游戏--火柴人逃脱. 以下是效果图: 温馨提示:代码里有图片资源,你可以自己用GIMP画,也可以去下载: 图片 我们来看第一部分代码: from tkinter impo ...

  2. 等压线上怎么画风向_圣诞贺卡怎么写?向你爱的人送上最有温度的祝福吧!

    在现在的社会,好像什么都很方便,要写字的话,各种字体在电脑上随便敲一敲就出来了,但是英国人民对于写贺卡这件事,还抱有一种执着. 挑选一张精美的贺卡,再一笔一划写上发自内心的祝福,哪怕字体没有那么好看, ...

  3. 不要怕伤害你最爱的人

    不要怕伤害你最爱的人 咱中国人习惯于把爱情理解为是一根红线,被一位慈祥的月下老人系在一男一女身上,也就是"千里姻缘一线牵":但是西方人喜欢把爱情说成是"丘比特之箭&quo ...

  4. 写给所有想爱的,在爱的和失去爱的人

    不要相信日韩肥皂剧中所谓的:因为不能让彼此幸福而离开.. 是否想过,你们正是对方的幸福所在. 爱不是逃避,是努力. 不是逃避着给彼此幸福的责任,而是努力的实现让彼此幸福的义务. 当你说离开是为了不让对 ...

  5. 阿信歌词很美,因为心中有至爱的人

    下面是阿信给他的爱人写的,果然如我想的,是个专情细腻的人.越来越喜欢阿信了,在当当上买了阿信的新书,过两天就到了. ---------------------------- 站在你爱的人面前,你心跳加 ...

  6. [转载] 杜拉拉升职记——37 整个我的人,整颗我的心

    来源:李可. 杜拉拉升职记(第三版). 西安: 陕西师范大学出版社, 2010, 5. 37 整个我的人,整颗我的心 这年,拉拉正好满30岁. 拉拉走出首都机场到站出口,有人拍了一下她肩膀,她回头一看 ...

  7. lombok -- 爱的人爱的疯狂 恨的人恨的切齿

    lombok简介 lombok是一个java库,致力于通过一组注解消除代码中的一些必要但是臃肿的样板代码,精简代码,提高效率,还有耍酷. 如何使用 使用lombok需要在IDE中引入对应的插件,并在项 ...

  8. 一生里和你爱的人做完这50件事

    我想幸福 也许就是这么一件.一件积累起来的-- 一生里和你爱的人做完这50件事 1.布置一间书房,要一整面墙的大书柜,和你一起慢慢把它装满 2.和你背靠背,一边听我们都喜欢的CD,一边看各自的书,坐在 ...

  9. 永远不要放弃你所爱的人

    在台湾发生了一件千真万确的事:有人为了装修家里,拆开了墙:日式住宅的墙壁通常是中间架了木板后,两边批上泥土,其实里面是空的. 他拆墙壁的时候,发现一只壁虎被困在那里一根从外面钉进来的钉子钉住了那只壁虎 ...

  10. 《舍得让你爱的人受苦》读后感

    张德芬的新书<舍得让你爱的人受苦>,比起她的处女作<遇见未知的自己>,更多了一份坦白和真情流露.在书中,她以自己的人生经历举了很多例子,剖析了自己曾经的心路历程和思想变迁,这对 ...

最新文章

  1. hdu 1312 Red and Black 解题报告
  2. 魔兽世界服务器位面 稳定,因抗议《魔兽世界》位面技术在RP服务器中被取消
  3. xmindcore.java_求解Xmind问题
  4. python中给出一个不超过10的正整数n_求计算机大佬解答python题
  5. Python基础 --- 使用 dict 和 set
  6. 关于 resgen.exe已退出 代码为 2 的错误问题的解决办法。
  7. Linux dd命令制作U盘启动盘
  8. ubuntu中忘记root密码的解决方法
  9. PHP excel文件导入至mysql中!
  10. mysql profiling详解_使用mysql profiling功能剖析单条查询
  11. 什么时候用removeUnusedSpriteFrames和removeUnusedTextures
  12. DNS域名解析基础知识
  13. springboot-redis读取配置文件
  14. linux镜像文件包括,关于镜像文件的详细介绍
  15. 谁的青春不迷惘,谁的年少不忧伤
  16. python如何读取字符串最后一个字符_python 获取字符串最后一个字符
  17. freyja2多数据源版本
  18. 洛谷 P1194 买礼物 题解
  19. 震惊:爱测未来技术嘉年华竟然这些免费送
  20. 数字 IC 技能拓展(19)带你了解一款 FPGA 开发板

热门文章

  1. 华为员工晒百万收入,网友:看来我对华为也有误解
  2. speedoffice(PPT)插入的表格怎么拆分单元格
  3. 基于Python的淘宝用户行为分析
  4. Declustered RAID
  5. mysql_连接故障 Too many open files in system
  6. 大数据?什么是大数据(大数据的概念)?大数据的价值?
  7. shell机器人企业微信通知
  8. Word中插入公式后行距变大的解决办法
  9. XPS文件可以直接打印吗?如何转成Word后修改呢
  10. 《编程机制探析》第二章 计算机语言