“圣诞树图案的打印~C语言”

news2024/11/23 13:28:26

圣诞树图案的打印~C语言

  • 题目原文:[圣诞树](https://www.nowcoder.com/practice/9a03096ed8ab449e9b10b0466de29eb2?tpId=107&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking&difficulty=&judgeStatus=&tags=&title=&sourceUrl=&gioEnter=menu)
  • 题目分析
    • 树枝第一步,打印空格。
    • 树枝打印第二步:打印图案
    • 打印树干第一步,打印空格
    • 打印树干第二步,打印图案
  • 完整代码

题目原文:圣诞树

在这里插入图片描述

题目分析

首先我们把树分为上下两部,树干和树枝。仔细观察树枝我们发现,不管层级n是多少的圣诞树,它们的树枝都是由类似于小金字塔构成的。
例如:层数n == 1,树枝部分有1层,第一场是1个金字塔图案。
n == 2,树枝部分有2层,第一层有1个金字塔,第2层有2个金字塔。
n == 3,树枝部分有3层,第一层有1个,第二层有2个,第三层有3个…
树枝的部分,可以用循环来实现。

树枝第一步,打印空格。

在这里插入图片描述

n == 1,打印空白个数d == 2 , 1 , 0
n == 2,d == 2+3, 4 , 3 , 2 , 1 , 0
n == 3,d==2+3+3, 7 , 6 , … 3 , 2 , 1 ,0
规律:d == 3 * n - 1;
即每一层金字塔空白字符的打印都比上一次多3个 。

树枝打印第二步:打印图案

以n == 2为例:

打印第1层金字塔

		int d = 3 * n;
		for (int a = d -1;a>0;a--)//
		{
			printf(" ");
		}
		for (int k = 1; k <= i; k++)//k代表一行打印多少个“*     ”,i其实表示层数
		{
			printf("*     ");//把第一层当作“*     ”来打印,原因是n>1时(举例n==2),第二层
			//有2个金字塔,它们之间有5个空格。
		}
		printf("\n");
		for (int a = d - 2; a > 0; a--)//同上
		{
			printf(" ");
		}
		for (int k = 1; k <= i; k++)
		{
			printf("* *   ");
		}
		printf("\n");
		for (int a = d-3; a > 0; a--)//同上
		{
			printf(" ");
		}
		for (int k = 1; k <= i; k++)
		{
			printf("* * * ");
		}
		printf("\n");

接下来打印第2层,它开头的空格比上一次少3个:即d -= 3;
第2层打印2个金字塔图案,金字塔图案 k和层数 i 成正比例关系。所以用循环来表示。

int main()
{
	int n = 0;//层数
    scanf("%d", &n);
	int d = 3 * n;//a和d用于控制最开始的空白数;
	for (int i = 1; i <= n; i++)//树枝层数
	{
		for (int a = d -1;a>0;a--)//
		{
			printf(" ");
		}
		for (int k = 1; k <= i; k++){
			printf("*     ");
		}
		printf("\n");
		for (int a = d - 2; a > 0; a--)//同上
		{
			printf(" ");
		}
		for (int k = 1; k <= i; k++)
		{
			printf("* *   ");
		}
		printf("\n");
		for (int a = d-3; a > 0; a--)//同上
		{
			printf(" ");
		}
		for (int k = 1; k <= i; k++)
		{
			printf("* * * ");
		}
		printf("\n");
		d = d - 3;
	}
}

打印树干第一步,打印空格

层数n == 1,打印空格 d == 2;
n == 2,d == 2 + 3;
n == 3,d == 2 + 3 + 3;
规律 : d == 3 * n - 1;

for (int i = 1; i <= 3 * n - 1; i++)
		{
			printf(" ");
		}

打印树干第二步,打印图案

层数 n == 1;打印1行,每行1个
n == 2,打印2行,每行1个
n == 3,打印3行,每行1个

int c = 1;
while (c<=n)
	{
		for (int i = 1; i <= 3 * n - 1; i++)
		{
			printf(" ");
		}
		printf("*\n");
		c++;
	}

完整代码

int main()
{
	int c = 1;
	int n = 0;
    scanf("%d", &n);
	int d = 3 * n;
	for (int i = 1; i <= n; i++)
	{
		for (int a = d -1;a>0;a--)
		{
			printf(" ");
		}
		for (int k = 1; k <= i; k++)
		{
			printf("*     ");
		}
		printf("\n");
		for (int a = d - 2; a > 0; a--)
		{
			printf(" ");
		}
		for (int k = 1; k <= i; k++)
		{
			printf("* *   ");
		}
		printf("\n");
		for (int a = d-3; a > 0; a--)
		{
			printf(" ");
		}
		for (int k = 1; k <= i; k++)
		{
			printf("* * * ");
		}
		printf("\n");
		d = d - 3;
	}
	while (c<=n)
	{
		for (int i = 1; i <= 3 * n - 1; i++)
		{
			printf(" ");
		}
		printf("*\n");
		c++;
	}
	return 0;
}

如有不足,请大佬们指正。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1672488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数仓架构之 基础数据层的数据加载算法

今天想跟大家聊聊&#xff0c;在HIVE数仓分层中&#xff0c;一般分为4层&#xff0c;在前两层中&#xff0c;数据贴源层&#xff08;HDM&#xff09;的数据是怎么加载到基础数据层&#xff08;BDM&#xff09;的。 A&#xff0c;数据加载背景 啥意思呢&#xff0c;我先给大家讲…

将mongo查出的数据导出来,变成json,然后转Excel

在MongoDB shell或使用命令行工具&#xff08;如mongo或mongosh&#xff09;中&#xff0c;你可以将查询结果输出到JSON文件。以下是一个示例命令&#xff0c;它执行上述聚合查询并将结果写入名为output.json的文件&#xff1a; mongo your_database_name --quiet --eval db.u…

李飞飞团队关于2024年人工智能发展报告总结 (Artificial Intelligence Index Report)

目录 1 10大核心信息2 AI研究和发展2.1 核心要点2.2 核心对比信息2.3 模型是否会用尽数据2.4 基础模型发展2.5 训练模型成本 3 技术性能3.1 核心要点3.2 重要模型发布情况3.3 AI表现情况3.4 多学科、高难度评估集 (MMMU & GPQA & ARC)3.5 Agents3.6 RLHF & RLAIF3.…

WHAT - CSS Animationtion 动画系列(四)- 移动端全屏动画

目录 一、背景1.1 GIF & Video1.2 存在的问题 二、技术方案2.1 使用CSS动画和JavaScript2.2 使用JavaScript库2.3 使用序列帧1. css animation 帧动画2. JavaScript requestAnimationFrame 帧动画 2.4 使用Canvas1. html 和 canvas 中的 video2. 基于Canvas的动画库 今天我…

网络编程:服务器模型-并发服务器-多进程

并发服务器概念&#xff1a; 并发服务器同一时刻可以处理多个客户机的请求 设计思路&#xff1a; 并发服务器是在循环服务器基础上优化过来的 &#xff08;1&#xff09;每连接一个客户机&#xff0c;服务器立马创建子进程或者子线程来跟新的客户机通信 &#xff08;accept之后…

达梦数据库 报错 数据类型不匹配

达梦数据库 报错 数据类型不匹配 背景描述问题分析问题处理方案1&#xff1a;方案2&#xff1a;TO_CHAR(str)CAST(value AS type)CONVERT(type,value)DBMS_LOB 包TEXT_EQUAL(n1,n2) 写在最后 背景描述 本文写于初接触到达梦(DM)数据库&#xff0c;之前没有用过&#xff0c;因此…

网络协议的分类

1.概要 网络协议可以分为三类&#xff1a; 封装协议路由协议功能类协议 2.分类说明 OSPF报文直接调用_ IP协议__协议进行封装&#xff0c;以目的地址_244.0.0.5 __发送到所有的OSPF路由器? 244.0.0.1 所有主机&#xff1b;244.0.0.2 所有路由器&#xff1b;244.0.0.6 指定…

SpringSecurity6集成数据库

本文章对应视频可在B站查看SpringSecurity6对应视频教程&#xff0c;记得三连哦&#xff0c;这对我很重要呢&#xff01; 温馨提示&#xff1a;视频与文章相辅相成&#xff0c;结合学习效果更强哦&#xff01; 系列文章链接 1、初识SpringSecurity&#xff0c;认识主流Java权限…

win10系统解除微软账户和本地账户绑定

折腾了好久&#xff0c;终于找到一种方法可以退出微软账号了&#xff0c;不过这种方法我测试是成功的&#xff0c;有人留言自己不成功&#xff0c;具体解决方法只能看这些留言了 win10当中没有注销按钮&#xff0c;win x 弹出的菜单里面有关闭或注销&#xff0c;可以选择注销…

Unity射击游戏开发教程:(15)添加推进器推进和推进器推进动画

这是一个可以添加到我的游戏中的简单而有趣的功能。当玩家按住 Shift 按钮时,速度会加快,松开 Shift 按钮时,速度会恢复到原来的速度。 这需要不同的输入检测。通常使用的是Input.GetKeyDown并传入你想要获取的key。这只会检测在当前帧期间是否按下了按钮,但如果按住,将不…

Hive的join操作

假设有三张表&#xff0c;结构和数据如下&#xff1a;-- 创建表 test_a,test_b,test_c CREATE TABLE test_a( id int, name string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY \t;--分别导入数据到三个表中 --test_a 1 a1 2 a2 4 a4 --test_b 1 b1 3 b3 4 b4 --…

Ubuntu 20.04在Anaconda虚拟环境中配置PyQt4

一、创建一个虚拟环境 1 创建一个python2.7的虚拟环境&#xff1a; conda create -n pyqt4 numpy matplotlib python2.72 在环境中安装几个需要的包&#xff1a; pip install Theano pip install python-opencv3.4.0.14 pip install qdarkstyle pip install dominate二、在主…

打造清洁宜居家园保护自然生态环境,基于YOLOv7【tiny/l/x】参数系列模型开发构建自然生态场景下违规违法垃圾倾倒检测识别系统

自然生态环境&#xff0c;作为我们人类赖以生存的家园&#xff0c;其健康与否直接关系到我们的生活质量。然而&#xff0c;近年来&#xff0c;一些不法分子为了个人私利&#xff0c;在河边、路边等公共区域肆意倾倒垃圾&#xff0c;严重破坏了环境的健康与平衡。这种行为不仅损…

【Python探索之旅】选择结构(条件语句)

文章目录 条件结构&#xff1a; 1.1 if单分支结构 1.2 if-else 多分支结构 1.3 if-elif 多重结构&#xff1a; 完结撒花​ 前言 Python条件语句是通过一条或多条语句的执行结果&#xff08;True或者False&#xff09;来决定执行的代码块。 Python提供了顺序、选择、循环三…

2024.5.19 机器学习周报

引言 Abstract 文献阅读 1、题目 X-HRNET: TOWARDS LIGHTWEIGHT HUMAN POSE ESTIMATION WITH SPATIALLY UNIDIMENSIONAL SELF-ATTENTION 2、引言 高分辨率表示是人体姿态估计实现高性能所必需的&#xff0c;随之而来的问题是高计算复杂度。特别地&#xff0c;主要的姿态估…

AI算法-高数5.1-线性代数-向量间的关系

线性代数基础概念见&#xff1a;AI算法-高数5-线性代数1-基本概念、向量-CSDN博客 宋浩老师课程学习&#xff1a; 3.2 向量间的线性关系&#xff08;一&#xff09;_哔哩哔哩_bilibili 向量间的关系&#xff1a; ​ ​ ​ ​ 判断向量贝塔(β)是否是阿尔法(α)的线性组…

4.2 试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NO MATCH”

方法一&#xff1a;在程序内部设置两个字符串内容&#xff0c;终端返回是否匹配 运行效果&#xff1a; 思路&#xff1a; 1、先比较两个字符串的长度&#xff0c;如果长度不一样&#xff0c;则两组字符串肯定不匹配&#xff1b;如果长度一样&#xff0c;再进行内容的匹配 2、如…

红外遥控和LCD1602

26.1.1 红外线简介 人的眼睛能看到的可见光按波长从长到短排列&#xff0c;依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为 0.62&#xff5e;0.76μm&#xff1b;紫光的波长范围为 0.38&#xff5e;0.46μm。比紫光波长还短的光叫紫外线&#xff0c;比红光波长还长的…

利用光学和SAR数据进行亚马逊热带雨林监测

亚马逊热带雨林&#xff0c;670万平方公里&#xff0c;物种丰富&#xff0c;森林历史悠久。巴西环保局用光学和SAR数据进行森林监测&#xff0c;主要监测森林砍伐范围、人为破坏、非法采矿和隐蔽的飞机跑道。 图 2011年12月森林砍伐范围 在SAR强度数据上&#xff0c;被砍伐的森…

C#语言进阶

一、简单数据结构类 1. ArrayList ArrayList是一个 C# 为我们封装好的类&#xff0c;它的本质是一个 object 类型的数组。ArrayList类帮助我们实现了很多方法&#xff0c;比如数组的增删查改 1.1 声明 using System.Collections;ArrayList array new ArrayList(); 1.2 增…