golang for经典练习 金字塔打印 示例 支持控制台输入要打印的层数

go语言中最经典的for练习程序 金字塔打印 ,这也是其他语言中学习循环和条件算法最为经典的联系题。 其核心算法是如何控制内层循环变量j 每行打印的*号数量  j<=i*2-1 和空格数量 j==1 || j == i*2-1

golang中实现实心金字塔 Solid Pyramid和空心金字塔 Hollow Pyramid 效果

go语言金字塔打印经典源码和算法

package mainimport "fmt"// 金字塔打印实例
func main() {// 定义金字塔的总层数 变量var totalLevel intfmt.Println("请输入要打印的金字塔的层数,最少3层")fmt.Scan(&totalLevel) // 从控制台获取用户输入的层数if totalLevel < 3 {fmt.Println("层数不正确,必须大于等于3, 请重新输入")fmt.Scan(&totalLevel)}// 实心金字塔 solid PyramidSolidPyramid(totalLevel)// 空心金字塔 Hollow PyramidHollowPyramid(totalLevel)
}/*
// 实心金字塔 Solid Pyramid************************************
*/
// 金字塔的关键是计算每层的*号和空格的个数
func SolidPyramid(totalLevel int) {fmt.Println("\n-------------实心金字塔 Solid Pyramid-------------------\n")// 金字塔打印// 外层循环打印层数for i := 1; i <= totalLevel; i++ {// 在打印*号前打印空格, 要打印空格的个数计算公式为:  总层数 - 当前层数ifor k := 1; k <= totalLevel-i; k++ {fmt.Printf(" ")}// 内层循环打印*的个数// *的个数为 斐波那契数列(即 后一个是前一个+当前的和)// 1, 3, 5, 7, 9, 11 ... 即: 奇数// 分析后*的个数可由: 2 * 层数 -1 获得// 即这里的循环条件是 2 * i -1for j := 1; j <= 2*i-1; j++ {fmt.Printf("*")}//每层循环打印一个空额fmt.Println("")}}/*
// 空心金字塔 第一个*号和最后一个星号 2*i-1 ,还有最后一层 打印*号, 其他打印空格** **   **     **       ************
*/
func HollowPyramid(totalLevel int) {fmt.Println("\n-------------空心金字塔 Hollow Pyramid -------------------\n")// 打印空心金字塔for i := 1; i <= totalLevel; i++ {//打印空格for k := 1; k <= totalLevel-i; k++ {fmt.Printf(" ")}// 打印空心金字塔内容, 这里的关键是空心的个数// 第一个 j==1 和最后一个 2*i-1 ,打印*, 另外最后一层 i == totalLevel 打印*// 空格的个数计算公式:for j := 1; j <= 2*i-1; j++ {// 第一个*和最后一个*即2*当前层数-1, 还有最后一行打 * 其他空格if j == 1 || j == 2*i-1 || i == totalLevel {fmt.Printf("*")} else {fmt.Printf(" ")}}fmt.Println("")}
}

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

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

相关文章

MySQL——数据库基础

目录 一.数据库的操作 1.显示当前的数据库 2.创建数据库 3.使用数据库 4.删除数据库 一.数据库的操作 1.显示当前的数据库 SHOW DATABASES;2.创建数据库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ..…

CSS浮动(如果想知道CSS有关浮动的知识点,那么只看这一篇就足够了!)

前言&#xff1a;在学习CSS排版的时候&#xff0c;浮动是我们必须要知道的知识点&#xff0c;浮动在设计之初是为了实现文字环绕效果的&#xff0c;但是后来被人们发现浮动在CSS排版中有着很好的实用价值&#xff0c;所以浮动便成为了CSS排版的利器之一。 ✨✨✨这里是秋刀鱼不…

pandas学习笔记12

缺失数据处理 其实在很多时候&#xff0c;人们往往不愿意过多透露自己的信息。假如您正在对用户的产品体验做调查&#xff0c;在这个过程中您会发现&#xff0c;一些用户很乐意分享自己使用产品的体验&#xff0c;但他是不愿意透露自己的姓名和联系方式&#xff1b; 还有一些用…

《尿不湿级》STM32 F103C8T6最小系统板搭建(五)BOOT

一、BOOT是什么&#xff1f; 大多数初学者第一次接触BOOT总是对这个词感到不解&#xff0c;从哪冒出一个奇奇怪怪的东西还要接跳线帽&#xff0c;为什么要配置它才能进行串口程序的下载&#xff1f;为什么不正确配置会导致单片机无法正常启动…… boot&#xff0c;及物动词&…

AI-数学-高中56-成对数据统计-线性回归方程

原作者视频&#xff1a;【成对数据统计】【一数辞典】1线性回归方程_哔哩哔哩_bilibili 注意&#xff1a;高中只学线性回归。 最小二乘法&#xff08;残差和平方最小的直线、方差最小>拟合程度最好&#xff09;&#xff1a;

2.spring security 简单入门

创建springboot 项目&#xff0c;引入spring security坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--spring security坐标--><dependency&g…

[C++基础学习-03]----程序流程结构之跳转语句详解

前言 在C程序中&#xff0c;跳转语句break和continue是两种用于控制程序流程的关键字&#xff0c;常用于循环语句&#xff08;如for循环、while循环&#xff09;中。 正文 01-简介 1、break关键字&#xff1a; 当程序执行到break语句时&#xff0c;会立即跳出当前所在的循环&…

扫雷(升级版)附全代码

上次我写了简单版本的扫雷&#xff08;建议看一下扫雷【C语言】-CSDN博客&#xff09;&#xff0c;但是有些功能并没有实现。比如&#xff1a; 没有如果排查位置不是雷&#xff0c;可以展开周围的功能。没有标记的功能。 在这篇中这些功能都会被实现。 文章目录 展开 标记 …

如何在 GitHub 上创建一个 Pull Request

介绍 Git 是一个开源的分布式版本控制系统&#xff0c;使得协作软件项目更加可管理。许多项目将它们的文件保存在 Git 存储库中&#xff0c;而像 GitHub 这样的平台使得分享和贡献代码变得更加容易、有价值和有效。 托管在公共存储库中的开源项目通过拉取请求受益于更广泛的开…

17_Scala面向对象高阶功能

文章目录 1.继承1.1 构造对象时,父类对象优于子类对象1.2父类主构造有参数,子类必须要显示地调用父类主构造器并传值 2.封装3.抽象3.1抽象定义3.2子类继承抽象类3.3抽象属性 4.伴生对象4.1创建类和伴生对象4.2调用 1.继承 –和Java一样,权限protected , public.父类定义子类用…

分布式锁之-redis

什么是分布式锁&#xff1f; 即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题&#xff0c;而分布式锁&#xff0c;就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&#xff0c;分布式系统中竞争共享资源的最小粒度从线程升级成了…

详细介绍ARM-ORACLE Database 19c数据库下载

目录 1. 前言 2. 获取方式 2.1 ORACLE专栏 2.2 ORACLE下载站点 1. 前言 现有网络上已有非常多关于ORACLE数据库机下载的介绍&#xff0c;但对于ARM平台的介绍不多&#xff0c;借此机会我将该版的下载步骤做如下说明&#xff0c;希望能够一些不明之人提供帮助和参考 2. 获…

Linux理解文件操作 文件描述符fd 理解重定向 dup2 缓冲区 C语言实现自己的shell

文章目录 前言一、文件相关概念与操作1.1 open()1.2 close()1.3 write()1.4 read()1.4 写入的时候先清空文件内容再写入1.5 追加&#xff08;a && a&#xff09; 二、文件描述符2.1 文件描述符 fd 0 1 2 的理解2.2 FILE结构体&#xff1a;的源代码 三、深入理解文件描述…

DETR类型检测网络---思考和Tricks测试

目录 batch_size的影响辅助损失的作用学习率的影响Decoder层数增多的影响3D检测中, feats位置编码和query位置编码是否共享mpl层背景-关于query的生成方式 利用widthformer类似的方式简化注意力机制 batch_size的影响 batch8: batch20: 由实验结果可知:这里实验有问题,横坐标…

JAVA语言开发的智慧城管系统源码:技术架构Vue+后端框架Spring boot+数据库MySQL

通过综合应用计算机技术、网络技术、现代通信技术等多种信息技术&#xff0c;充分融合RS遥感技术、GPS全球定位技术、GIS地理信息系统&#xff0c;开始建设一个动态可视的、实时更新的、精细量化的城市管理系统。智慧城管将采用云平台架构方式进行建设&#xff0c;基于现有数字…

人工智能大模型应用指南

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

旬日均和半年累计

1、旬日均 当前的数据日期 1.1、1-10号上旬 当前数据日期的1号到当前数据日期&#xff08;数据&#xff09;&#xff0c;求和 在除以 当前数据日期-当前数据日期的1号之差 求得的就是上旬 1.2、11-20号中旬 当前数据日期的11号到当前数据日期&#xff08;数据&#xff…

直流屏整流模块HG07A220R电源模块HG10A220R

直流屏整流模块HG07A220R电源模块HG10A220R 其他同类型监控模块PM09T电源模块HG22005/S&#xff0c;HG22010/S&#xff0c;HG11010/S&#xff0c;HG11020/S&#xff0c;HG10A220Z&#xff0c;HG10A220F&#xff0c;HG05A220Z&#xff0c;HG07A220Z&#xff0c;HG10A110Z&#x…

免费可商用字体素材大全,办公设计字体合集打包166款

一、素材描述 这是一套免费可商用字体素材&#xff0c;这些字体一般会在办公与设计的时候用到&#xff0c;比如&#xff0c;Photoshop、illustrator、Coreldraw、AfterEffects、Indesign、WPS、Office&#xff0c;等等&#xff0c;想要更好更快地办公与设计&#xff0c;字体还…

【Java】面向对象核心知识点(二),文章层次分明,内容精益求精,代码简单易懂

目录 一、构造方法 1.1 概念 1.2 作用 1.3 代码 二、抽象 2.1 概念 2.2 作用 2.3 注意 2.4 代码 三、接口 3.1 概念 3.2 作用 3.3 注意 3.4 语法 3.5 代码 四、内部类 4.1 成员内部类 4.2 局部内部类 4.3 静态内部类 4.4 匿名内部类 &#xff08;原创文章&…