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

圣诞树图案的打印~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.hqwc.cn/news/697623.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux部署安装DataX和DataX-Web

1.基础环境 JDK&#xff08;1.8 及其以上都可以&#xff0c;推荐 1.8&#xff09;&#xff0c;安装过程略 Python&#xff08;2 或者 3 都可以&#xff09;&#xff0c;安装过程略 Apache Maven 3.6.1&#xff08;只有DataX源码编译安装时需要&#xff09; 1.1下载maven安装…

【MQTT】paho.mqtt.c 库的“介绍、下载、交叉编译” 详解,以及编写MQTT客户端例子源码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-05-13 1…

kubeflow文档-介绍与架构

1. kubeflow介绍 Kubeflow项目致力于使机器学习&#xff08;ML&#xff09;工作流在Kubernetes上的部署变得简单、可移植和可扩展。目标不是重新创建其他服务&#xff0c;而是提供一种直接的方法&#xff0c;将ML的开源系统部署到不同的基础设施中。无论在哪里运行Kubernetes&a…

【408真题】2009-10

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

【数据结构】-- 相交链表-环形链表

交叉链表 . - 力扣&#xff08;LeetCode&#xff09; 如果链表的两条链的长度一样&#xff0c;链表两端对齐&#xff0c;解决这个问题将会变得非常简单&#xff0c;直接分别遍历两个链表&#xff0c;想等时的节点即为所求。我们想办法让链表对齐--分别从a和b遍历链表&#xff…

群晖NAS本地搭建Bitwarden密码管理服务并实现远程同步密码托管

文章目录 1. 拉取Bitwarden镜像2. 运行Bitwarden镜像3. 本地访问4. 群晖安装Cpolar5. 配置公网地址6. 公网访问Bitwarden7. 固定公网地址8. 浏览器密码托管设置 Bitwarden是一个密码管理器应用程序&#xff0c;适用于在多个设备和浏览器之间同步密码。自建密码管理软件bitwarde…

数字人解决方案——AniTalker声音驱动肖像生成生动多样的头部说话视频算法解析

1.概述 AniTalker是一款先进的AI驱动的动画生成工具&#xff0c;它超越了简单的嘴唇同步技术&#xff0c;能够精准捕捉并再现人物的面部表情、头部动作以及其他非言语的微妙动态。这不仅意味着AniTalker能够生成嘴型精准同步的视频&#xff0c;更重要的是&#xff0c;它还能够…

增强型植被指数EVI、ndvi数据、NPP数据、GPP数据、土地利用数据、植被类型数据、降雨量数据

引言 多种卫星遥感数据反演增强型植被指数&#xff08;EVI&#xff09;产品是地理遥感生态网推出的生态环境类数据产品之一&#xff0c;产品包括1986-2021年度月度数据&#xff0c;数据类型tif栅格数据。该产品经过专家组验证&#xff0c;质量良好。 正文 栅格数据源 数据名…

CentOS使用Docker搭建Nacos结合内网穿透实现无公网IP远程登录本地管理平台

文章目录 1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Nacos Nacos是阿里开放的一款中间件,也是一款服务注册中心&#xff0c;它主要提供三种功能&#xff1a;持久化…

Windows 11 下 kafka 的安装踩坑

安装 windows系统kafka小白入门篇——下载安装&#xff0c;环境配置&#xff0c;入门代码书写&#xff08;推荐&#xff09; kafka在windows下安装和使用入门教程 问题1 参考链接 运行kafka集成的zookeeper时&#xff0c;命令&#xff1a;bin\windows\zookeeper-server-star…

计算机毕业设计Python+Spark知识图谱课程推荐系统 课程预测系统 课程大数据 课程数据分析 课程大屏 mooc慕课推荐系统 大数据毕业设计

1 绪 论 1.1 课题研究背景 在线教育学习平台是学生用来进行校内或校外拓展课程学习的平台&#xff0c;平台需要具备在线视频观看&#xff0c;作业提交&#xff0c;形成性考核等功能。在学生学习的过程中&#xff0c;学校的管理者或负责教师需要了解学生的学习情况和学习状态&…

Python | Leetcode Python题解之第87题扰乱字符串

题目&#xff1a; 题解&#xff1a; class Solution:def isScramble(self, s1: str, s2: str) -> bool:cachedef dfs(i1: int, i2: int, length: int) -> bool:"""第一个字符串从 i1 开始&#xff0c;第二个字符串从 i2 开始&#xff0c;子串的长度为 le…