打印菱形(两种思路)

news2024/11/18 13:41:39

一、输入的行数等于上半部分的金字塔行数

 

 

思路:
仔细观察图形,可以发现,此图形中是由空格和*按照不同个数的输出组成的。
上三角:先输出空格,后输出*,每行中
  空格:从上往下,一行减少一个
  *:2*i+1的方式递增
  
下三角:先输出空格,后输出*,每行中
  空格:从上往下,每行多一个空格
  *: 从上往下,按照2*(line-1-i)-1的方式减少,其中:line表示总共有多少行
按照上述方式,将上三角和下三角中的空格和*分别输出即可。

以下是代码,其解析在注释中:


#include <stdio.h>
int main()
{
	int line = 0;
	scanf("%d", &line);
	int i = 0;
	
	//上半部分
	for (i = 0; i < line; i++)//外层循环是上半部分的,总行数的控制。比如你输入的line是7,那么就循环0~6。打印7行
	{
		//打印空格(上半部分的空格从上往下数,逐行减1)
		int j = 0;
		for (j = 0; j < line - 1 - i; j++)//这里的循环控制条件,比如说你输入的是7行,第1行需要打印6个空格。
			//如果就定义为j小于line-1它永远都是(7-1)不变,所以说需要减去i
		{
			printf(" ");
		}
		//打印*号
		for (j = 0; j < 2 * i + 1; j++)//因为第1行打印1个,第2行打印3个,第3行打印5个
		{								//就当相当于符合递增数列:2*i+1
			printf("*");
		}
		printf("\n");//以上两个for循环就是打印出完完整整的每一行,每一行打印完之后需要换行,打印下一行。
	}
	//下半部分
	for (i = 0; i < line - 1; i++)//这里的控制条件为什么是line-1呢?
	{							//比如说你输入的行数是7行,上面打印完7行,下面需要打印6六行,所以说控制条件是line-1
		//打印空格(下半部分的空格从上往下数,逐行加1)
		int n = 0;
		for (n = 0; n <= i; n++)//这里n的循环控制条件是小于等于i
		{						//下半部分的第1行打印1个空格,正好跟i逐层往下递增是有关联。
			printf(" ");
		}
		for (n = 0; n < 2 * (line - 1-i)-1; n++)//这里的循环控制条件需要自己举例推导
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

 

 

 

二、纯正的菱形(输入几行菱形就是几行)

思路还是跟第1种的思路是一样的,只不过多加了一个中间行m,解析在注释中:

#include<stdio.h> 
int main()
{
	int n, i, m, j, k;//n为输入的总行数,i为循环时表示正在第几行,m表示中间行,j表示“ ”的数量,k表示“*”的数量
	scanf("%d", &n);
	m = (n + 1) / 2;
	for (i = 0; i <= n; i++)
	{
		if (i <= m)//分上下两部分讨论
		{
			for (j = 0; j < m - i; j++)//上半部分每一行需要打印的空格数为m-i(另外半边的空格是不需要打印的!)
			{
				printf(" ");
			}//打印完空格后跳出循环进入到打印“*”的循环中
			for (k = 0; k < 2 * i - 1; k++)//上半部分每一行需打印的“*”,可把看做是数列求解通项
			{
				printf("*");
			}

		}
		else//现在讨论下半部分
		{
			for (j = 0; j < i - m; j++)
				printf(" ");
			for (k = 0; k <(n - (i - m) * 2); k++)//此处核心思想是用中间行的总打印数减去两边的空格数
				printf("*");
		}
		printf("\n");//别忘了换行
	}
	return 0;
}

        

 

        以上就是关于菱形的实例解析。如果对你有帮助,记得点赞👍+关注哦!
我的主页还有其他文章,欢迎学习指点。关注我,让我们一起学习,一起成长吧!

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

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

相关文章

国外各大学和学院对于ChatGPT使用立场总结

ChatGPT和生成式AI的快速普及对教育这个专业领域带来了威胁——全国各地的大学和学院都召开了紧急会议&#xff0c;讨论如何应对学生利用AI作弊的风险。 一部分学校和教授担心这项技术会成为学生在论文或其他写作作业和考试中寻求捷径的工具。而这种生成内容的方式往往能够绕开…

Deepstream使用Rabbitmq 和kafka发送消息(天坑)unable to connect to broker library

连接服务器失败&#xff0c;要么是是本地参数没设对, 要么服务器没开&#xff01; 使用Kafka发送消息好搞&#xff0c;按照 /opt/nvidia/deepstream/deepstream-6.2/sources/libs/kafka_protocol_adaptor/README 一步一步来就行了&#xff0c;前提是要搞kafka 环境搭建开启&am…

特殊区域在OSPF协议中的分析

我们都知道OSPF路由器协议是基于SPF算法计算最优路径&#xff0c;当用于SPF算法的LSDB的越大&#xff0c;那么路由器的计算压力就越大&#xff0c;对于一些性能不佳的OSPF路由器来说&#xff0c;如何尽可能的减小LSDB规模也就成了OSPF设计时要考虑到的问题&#xff0c;为了进一…

DMA-STM32

DMA-STM32 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源 12个独立可配置的通道:DMA1 (7个通道),DMA2 (5个通道) 每个通道都支持软件触发和特定的硬件触发 STM32…

第七章.链接

概述 链接&#xff1a;将多个目标文件或库文件组合在一起&#xff0c;生成可执行文件或共享库 可以执行于编译时、加载时、运行时&#xff0c;使得分离编译成为可能&#xff0c;由链接器自动实现链接器&#xff1a;将各个模块之间的符号引用解析为实际的内存地址&#xff0c;生…

大厂面试官带你Get求职面试核心技巧

本文首发自[慕课网] &#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"及“慕课网公众号”&#xff01; 作者&#xff1a;Brain|慕课网名师 Hello&#xff0c;大家好&#xff0c;我是Brian 老师&#xff0c;在开发领域摸爬滚…

Day01 关系型数据MySQL简介与多平台安装配置

在大数据的课程中&#xff0c;我们需要处理的数据来自不同的渠道&#xff0c;其中有一个很重要的渠道就是关系型数据库中存储的数据。在企业中&#xff0c;会把业务数据存储在关系型数据库中&#xff0c;一般以MySQL居多。另外&#xff0c;我们在后续的课程中需要学习Hive、Spa…

SpringBoot启动过程源码解析

一&#xff0c;构造SpringApplication对象 1、推测web应用类型 如果项目依赖中存在org.springframework.web.reactive.DispatcherHandler&#xff0c;并且不存在org.springframework.web.servlet.DispatcherServlet&#xff0c;那么应用类型为WebApplicationType.REACTIVE如果…

【PaLM2】PaLM2 大语言模型与 Bard 使用体验

欢迎关注【youcans的学习笔记】原创作品&#xff0c;火热更新中 【Google I/O 2023】PaLM2 大语言模型与 Bard 使用体验 1. PaLM2 大型语言模型1.1 谷歌发布 PaLM21.2 PaLM2 的功能与性能 2. 基于 PaLM2 的谷歌 AI 产品2.1 智能助手 Duet AI2.2 Gmail&#xff1a;帮我写邮件2.3…

【Spring框架四】——Spring AOP 注解实现和xml方式实现

系列文章目录 【Spring框架一】——Spring框架简介 【Spring框架二】——什么是Spring IOC、 什么是Spring 依赖注入 【Spring框架三】——Spirng IOC和DI的实现 Spring AOP 注解实现和xml方式实现 系列文章目录前言一、什么是Spring AOP&#xff08;Aspect-Oriented Progra…

OpenAI 宣布推出适用于 iPhone 和 iPad 的 ChatGPT 官方应用程序。

&#x1f680; OpenAI 宣布推出适用于 iPhone 和 iPad 的 ChatGPT 官方应用程序。 OpenAI 宣布推出适用于 iPhone 和 iPad 的 ChatGPT 官方应用程序。 该应用程序具备即时回答各种问题、量身定制的建议、创意灵感、专业意见和个性化学习等功能和特性&#xff0c;可以帮助提高…

【密码产品篇】服务器密码机密钥体系结构

【密码产品篇】服务器密码机密钥体系结构 标准GM/T 0030-2014中规定服务器密码机必须至少支持三层密码体系结构&#xff0c;包括&#xff1a;“管理密钥、用户密钥/设备密钥/密钥加密密钥、会话密钥”。除"管理密钥"外&#xff0c;其他密钥可被用户使用&#xff0c;…

在图片上添加水印的四个方法

如何在图片上添加水印&#xff1f;在当今开放的互联网环境中&#xff0c;平时对于图片的使用已经变成非常广泛&#xff0c;越来越多的人开始关注图片的版权问题。如今&#xff0c;人们越来越注重防盗意识&#xff0c;这是因为我们在网上发布的图片很容易被别有用心之人盗用&…

Maven仓库

1、仓库 仓库&#xff1a;用于存储资源&#xff0c;主要是各种jar包 关于仓库&#xff0c;我们前面讲到了有三种&#xff1a;本地仓库&#xff0c;私服&#xff0c;中央仓库&#xff0c;其中私服和中央仓库都属于远程仓库 中央仓库&#xff1a;maven团队自身维护的仓库&#…

Java面试知识点(全)- Java并发-多线程JUC一

Java面试知识点(全) 导航&#xff1a; https://nanxiang.blog.csdn.net/article/details/130640392 注&#xff1a;随时更新 JUC框架 五个部分&#xff1a; 主要包含: (注意: 网上找的图&#xff0c;主体上可以看出其分类关系也够了) Lock框架和Tools类(把图中这两个放到一起…

一起Linux操作系统部署的Mysql数据库服务器/目录空间占用异常的分析事例

一台Linux操作系统部署的Mysql数据库服务器平时“/"目录占用很低&#xff0c;但每个小时都会出现一次根目录空间占用高的情况&#xff0c;本文系从OS侧对异常事件进行分析排查的过程。 1、初步分析 主机已进行监控&#xff0c;分析监控图表 可见该数据库服务器日常根目录…

王炸功能ChatGPT 联网插件功能放开,视频文章一键变思维导图

就在上周5月13日&#xff0c;Open AI 发文称&#xff1a;“我们将在下周向所有ChatGPT Plus 用户开放联网功能和众多插件”。 这意味着什么&#xff1f; 首先联网功能将使得ChatGPT不再局限于回答2021年9月之前的信息&#xff0c;能直接联网查询最新消息。 而插件功能就可以在…

基于LT6911UXC的LVDS视频接口调试经验

项目方案采用龙讯半导体LT6911系列。 该方案采用HDMI输出转LVDS接口。在本方案中有两种显示屏&#xff1b;一个是10.4寸&#xff0c;一个是15.6寸。分别应 单LVDS与双LVDS接口。 10.4寸屏幕的分辨率为1024*768&#xff1b;单八LVDS信号&#xff1b; 15.6寸的屏幕的分辨率为19…

SSD202D-MIPI屏点亮

调试mipi 点屏参考 - SigmaStarDocs Panel开发参考 - SigmaStarDocs 1.首先要看点屏参考,看懂硬件接线这些原理,然后依据实际的接线配置屏参 和RGB是复用的,所以不一样, 然后配置内核,我是直接编译mipi的内核 2.配置屏参,

如何进行测试分析与设计-HTSM启发式测试策略模型 | 京东云技术团队

测试&#xff0c;没有分析与设计就失去了灵魂&#xff1b; 测试人员在编写用例之前&#xff0c;该如何进行测试分析与设计呢&#xff1f;上次在《测试的底层逻辑》中讲到了【输入输出测试模型】&#xff0c;还讲到了【2W1H测试分析法】&#xff0c;但2W1H分析法是初步的分析方…