打印圣诞树

2024-02-05 13:20
文章标签 打印 圣诞树

本文主要是介绍打印圣诞树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目1

分析

1. 要打印这个圣诞树,无非就是打印树干与树冠这两个部分。
2. 要打印树干会发现非常容易,经过观察很容易发现规律。可以通过循环实现,每次循环的时候先打印若干个空格,再紧接着打印一个星号即可。
3. 令人头疼的是这个树冠该怎么打印?这其实事实上相当于是在找规律。首先可以肯定的一点就是:肯定是得一行一行这么打印,那也就是说,肯定得是以循环的方式,树冠有多少行,那就意味着要循环多少次。
4. 然后打印树冠的每一行的时候(就是单次循环),首先先打印空格,打印空格的个数也是有规律可循,这个不难。
5. 最为核心的问题在于这个星号的排列该怎么样子打印出来,这时候我想到了一个办法:不把单个星号看成一个整体,而是把六个字符合起来,看成一个整体。具体意义如下图

6. 这样子你会发现,第1.4.7...行的整体都是一样的,第2.6.8...行的整体都是一样的,第3.7. 9...行的整体都是一样的,因此可以得知,这个整体无非就是这三种样子,并且每一行用哪个整体的形式你去那一行是第几行决定。
7. 接下来要考虑的就是,在每一行的打印当中,那个整体到底要打印几次,这个也是很容易找到规律的。至此,树冠的规律已经被摸清楚了。

具体代码实现

#include <stdio.h>
int main()
{int h = 0;scanf("%d",&h);//打印树冠int i = 0;int j = 0;for (i = 0; i < 3 * h; i++){//打印空格for (j = 0; j < (3 * h - (i + 1)); j++){printf(" ");}//打印星号整体int k = i / 3 + 1;//计算循环"整体"的次数if (i % 3 == 0){for (j = 0; j < k; j++){printf("*     ");}}else if (i % 3 == 1){for (j = 0; j < k; j++){printf("* *   ");}}else{for (j = 0; j < k; j++){printf("* * * ");}}printf("\n");}//打印树干for (i = 0; i < h; i++){for (j = 0; j < (3 * h - 1); j++){printf(" ");}printf("*\n");}return 0;
}

经验总结

这种打印图形的题目,事实上其实就是根据平面图形找规律,一旦规律被发现,那么用计算机语言实现起来会很容易 

这篇关于打印圣诞树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681043

相关文章

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

多数据源的事务处理总是打印很多无用的log日志

之前做了一个项目,需要用到多数据源以及事务处理,在使用事务处理,服务器总是打印很多关于事务处理的log日志(com.atomikos.logging.Slf4jLogger),但是我们根本不会用到这些log日志,反而使得查询一些有用的log日志变得困难。那要如何屏蔽这些log日志呢? 之前的项目是提高项目打印log日志的级别,后来觉得这样治标不治本。 现在有一个更好的方法: 我使用的是log

fastreport打印trichedit分页问题的解决

用fastreport来打印richedit里面的内容。刚开始放一个frxrichview组件到报表上,然后在 var str: TMemoryStream; begin    begin      str:= TMemoryStream.Create;      CurrRichRecord.richedit.Lines.SaveToStream(str);      str.Posit

模具要不要建设3D打印中心

随着3D打印技术的日益成熟与广泛应用,模具企业迎来了自建3D打印中心的热潮。这一举措不仅为企业带来了前所未有的发展机遇,同时也伴随着一系列需要克服的挑战,如何看待企业引进增材制造,小编为您全面分析。 机遇篇: 加速产品创新:3D打印技术如同一把钥匙,为模具企业解锁了快速迭代产品设计的可能。企业能够迅速将创意转化为实体模型,缩短产品从设计到市场的周期,抢占市场先机。 强化定制化服务:面

Java项目中,配置打印 JDBC 日志的几种方法

在 IDEA 项目中,如果你想打印 JDBC 日志,可以通过配置日志框架(如 Logback 或 Log4j)来实现。Spring Boot 使用的默认日志框架是 Logback,你可以通过在 application.yml 文件中配置日志级别来打印 JDBC 日志。 方法 1: 使用 application.yml 配置 JDBC 日志 logging:level:# 显示 SQL 语句co

一个C++程序运行,从点击运行到控制台打印文本,电脑硬件的资源是如何调动的

当点击运行一个 C++ 程序并看到控制台输出文本时,计算机硬件和操作系统之间协同工作,完成了多个步骤。这些步骤涉及 CPU、内存、存储设备、操作系统和输入输出设备的共同作用。下面是一个详细的过程描述: 1. 程序加载 启动:当你点击运行一个可执行文件时,操作系统(通常是 Windows、Linux 或 macOS)的文件系统管理器识别请求,并启动加载程序。读取可执行文件:加载程序将可执行文件从

跨平台打印模板转化pdf源码--SAAS本地化及未来之窗行业应用跨平台架构

一、跨平台打印转pdf渲染 pdf渲染模式可以支持国产化系统,和手机系统,安卓,苹果系统,qq浏览器,火狐,谷歌刘安祺 二、代码 /*///cyberwin_offline_database_printtemp.js未来之窗打印模板解析技术 2024-09LeftMargin="0" TopMargin="0" RightMargin="0" BottomMargin="0"ReportP

日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查

一、异常堆栈无traceId 排查定位问题异常痛苦        在日常项目开发中,我们会自定义一个traceId方便,链路追踪。在log4j2.xml 我们可能是这样去配置日志打印格式。 <Console name="CONSOLE" target="SYSTEM_OUT"><PatternLayoutpattern="${APP_NAME} %-d{yyyy-MM-dd HH:mm:ss}

hiprint打印/jsPDF使用/html2canvas

最初我知道hiprint.print是可以打印双模板的,于是查看hiprint.print的源码发现底层实现是this.getHtml(t).hiwprint,于是断点查看getHtm的实现,得知它是遍历我们对print传参的list,利用list中模板对象的getHtml()方法得到模板的dom对象,同时利用append将两个模板dom拼接到一个模板对象里然后返回。至此我们可以拿到一个合成的模板

题目:求100以内的素数,全部打印出来。

题目:求100以内的素数,全部打印出来。 public class ZhaoSuShu {public static void isPrime1(){int i,j,count = 0;//System.out.println("2");for(i = 1; i <= 100; i++){for(j = 2; j <= i; j++){if(i % j == 0){break;}}if(j ==