C语言打印金字塔,菱形,V形图案

2023-11-19


前言

使用C语言打印图形,金字塔(等腰三角形),菱形(用两个等腰三角形上下拼在一起),V形(有正V和倒V)。

所编写的代码是可以改变行数的,在运行时,输入行数,就可以打印出来!当然也可以直接用printf打印出来,但是行数就不可以更改了。这里是前者啊。


一、打印金字塔(等腰三角形)

1.图案

我们要打印出来如图所示的图案。

这里我们可以找到规律:第一行是1个,第二行是3个,以此类推1,3,5,7,9......... (自己想一想怎么得到这些数)。

 然后我们可以发现图案前面空格的规律:第一行6个,第二行5个,以此类推6,5,4,3,2,1,0(再想一想这要怎么得到)。

2.代码

#include<stdio.h>

int main()
{
	int i = 0;
	int j = 0;
	int n = 0;
	int s = 0;
	printf("请输入行数:");
	scanf("%d", &n);
	for (i = 0; i < n; i++)//行数
	{
		for (j = 1; j < n - i; j++)//每一行之前的空格
		{
			printf(" ");
		}
		for (s = 0; s < i * 2 + 1; s++)//打印星号
		{
			printf("*");
		}
		printf("\n");
	}
}

 前面第一步先建立变量,然后要确定行数(n)这里使用scanf()来确定。有了行数之后就要打印每一行之前的空格,是依次递减的,这里用(n-i)就可以得到6.5.4.3.2.1.0。

空格好了之后就是打印星号部分,根据1,3,5,7,9我们可以找到规律,每一个数都是(i*2+1)得到的,例如:i=0,那么i*2+1=1。

最后每打印一行,最后都进行换行。

二、打印菱形(两个三角形拼在一起)

1.图案

我们要打印出来下图的菱形。

首先还是要找一下规律,这个菱形是由一个三角形和一个倒三角拼成的图案。在上面我们已经知道了三角形如何打印,那么倒着的三角形怎么解决呢?(自己认真想一想) 

在这里我们可以发现,要想打印它,空格和星号的顺序是反着的。规律也就相反了! 

空格是:0,1,2,3,4,5,6。星号是11,9,7,5,3,1。 

2.代码

#include<stdio.h>

int main()
{
	int i = 0;
	int j = 0;
	int n = 0;
	int s = 0;
	printf("请输入行数:");
	scanf("%d", &n);
	for (i = 0; i < n; i++)//行数
	{
		for (j = 1; j < n - i; j++)//每一行之前的空格
		{
			printf(" ");
		}
		for (s = 0; s < i * 2 + 1; s++)//打印星号
		{
			printf("*");
		}
		printf("\n");
	}

	for (i = 1; i < n; i++)//i=1,避免行重复
	{
		for (j = 0; j < i ; j++)
		{
			printf(" ");
		}
		for (s = 0; s < 2 * (n - i) - 1; s++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

上面的三角形和第一个图案相同,重点是第二个倒三角! 

首先还是先确定行数(n), 为了避免行数的重复,这里i从1开始。然后是每行星号之前的空格,这里我们直接使用(j<i)可以很好的打印出空格,0,1,2,3,4,5,6。

最后就是打印星号,根据从大到小的规律:11,9,7,5,3,1。每个数都可以用2*(n-i)-1,得到,并且依次递减。 


三.打印V形 

1.图案 

根据前面的两个图形,我们也总结了一定的经验。(这里可以认真仔细的想一想) 

大概可以分为3部分:每行之前的空格,中间的空格,两边的星号!(比较难的便是中间部分的空格) 

 2.代码

int main()
{
	int i = 0;
	int j = 0;
	int n = 0;
	int s = 0;
	printf("请输入行数:");
	scanf("%d", &n);
	for (i = 0; i < n; i++)//行数
	{
		for (j = 0; j < i; j++)//每行之前的空格
		{
			printf(" ");
		}
		printf("*");
		for (s = 0; s < 2 * (n - i-1) - 1; s++)//打印中间的空格
		{
			printf(" ");
		}
		if (2 * (n - i - 1) - 1 > 0)//避免最后一行星号重复
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

 看完这个,是不是感觉和倒三角差不多,中间变成空格了!

第一步还是先确定变量,和行数。第二步就是每行之前的空格0,1,2,3,4,5,6........,直接用(j<i)就可以打印出来。打印空格之后,再打印一个星号,就完成一小半了。 

第三步就是中间的空格,看过之后可以发现中间空格是:13,11,9,7,5,3,1,0。根据之前的经验我们找规律,行数(n)-i-1再乘2可以得到每行的数是 14,12,10......并不是我们想要的数,但是只要在后面-1,就可以得到数了。主要还是用行数-当前的行数,再根据所得的结果进行加或减,来求得我们所需要的数字!

中间空格完成之后,再跟上星号。但是有一点要注意:就是最后一行星号重复的问题,如果不解决就无法打印出来, 这里会多一个。

 所以我们加上条件来完成:if (2 * (n - i - 1) - 1 > 0),大于0,就进行打印,当最后一行等于0时,条件不成立,就不执行打印。

四.打印(倒着的)V 

1.图案 

这个要将V反过来打印,每行之前的空格,星号,中间的空格,都要做一定的修改来完成。 

图形的规律还是可以找到的。 

 2.代码

这里是重新写的一段,和上一个分开了。 

int main()
{
	int i = 0;
	int j = 0;
	int n = 0;
	int s = 0;
	printf("请输入行数:");
	scanf("%d", &n);
	for (i = 0; i < n; i++)//行数
	{
		for (j = 1; j < n - i; j++)//打印每行之前的空格
		{
			printf(" ");
		}
		if (n - i < n)//避免第一行星号重复
		{
			printf("*");
		}
		for (s = 0; s < i*2-1; s++)//打印中间的空格
		{
			printf(" ");
		}
		printf("*");//打印星号
		printf("\n");
	}
	return 0;
}

 这里每行之前的空格用(j<n-i)来完成,规律是从大到小。然后这里开头在第一行,为了避免重复,使用条件来控制if(n-i<n),让第一行少打印一个星号。

中间空格从小到大:0,1,3,5,7,9,11,13。用(i*2-1) 可以得到,最后跟着打印每行的星号然后换行就完成了!!!!!!


总结

这里用C语言打印了几个图形,根据行和列来找到规律,进行打印。最好是多看一看,找到它的规律,就很好的打印出来了!

当然这里只是其中的一种方法,如果有更好的方法可以留言互相交流!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言打印金字塔,菱形,V形图案 的相关文章

  • 【硕士论文复现】可再生能源发电与电动汽车的协同调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 上层问题 1 2 下层问题 2 运行结果
  • 2024诸多大厂春招提前启动!Android的程序员还在等什么

    春招 提前批 已开 xdm别打瞌睡了 格力 顺丰 酷狗 沃尔玛中国 理想 科大讯飞等开启春招 开始收简历了 还有hc的企业提前抢人 春招时间短 节奏快 招满即止 就算挂了也绝不能不投 对企业来说 秋招和春招都是储备人才的黄金时期 春招中 除
  • 华为OD机试2024年最新题库(Java)

    我是一名软件开发培训机构老师 我的学生已经有上百人通过了华为OD机试 学生们每次考完试 会把题目拿出来一起交流分享 重要 2024年1月 5月 考的都是OD统一考试 C卷 题库已经整理好了 命中率95 以上 这个专栏使用 Java 解法 问
  • 挖掘知识的宝藏:如何利用在线资源提升个人技能

    在这个信息爆炸的时代 互联网已经成为我们获取知识 提升技能的重要途径 无论是学习编程 提高语言能力 还是了解新的行业趋势 网络资源都为我们提供了无限可能 本文将探讨如何有效利用在线资源进行自我提升 一 选择合适的在线学习平台 首先 我们需要
  • 图片编辑软件有哪些好用的?这几款快收藏吧

    你有没有过这样的经历 精心拍摄了一组照片 却发现有些角度不对 光线不够好 或者想要给图片加上一些特别的滤镜效果来达到心目中的样子 这时 你就需要一款合适的图片编辑软件了 但是 市面上的图片编辑软件琳琅满目 哪一款才是适合自己的呢 别担心 今
  • 像素高低:影响照片质量、分辨率与细节表现的奥秘

    在数字摄影时代 像素成为了衡量照片质量的重要标准之一 那么 什么是像素 像素的高低又如何影响照片的质量 分辨率和细节表现呢 本文将为您揭开这个奥秘 首先 我们来了解一下像素的基本概念 像素 Pixel 是组成数字图像的基本单元 通常由字母
  • 有效降低信号串扰的PCB设计原则

    降低信号串扰的一些PCB设计建议 1 对于传输线 保持相邻信号线之间的间距至少为两倍信号线宽 2 尽量避免信号跨越返回路径中的不连续点或者空隙 3 如果必须在返回路径中跨越空隙 则尽量使用差分线 4 电容器不是一种低阻抗互连结构 其高频阻抗
  • 短视频时代:影响播放量的秘密与破解之道

    在当下这个信息爆炸的时代 短视频已经成为我们日常生活的一部分 无论是刷朋友圈 看新闻还是消磨时光 短视频都是我们的首选 正因为如此 许多自媒体人和内容创作者纷纷投身到这片热土 希望通过短视频实现自己的价值 然而 许多人在创作过程中都会遇到一
  • 计算机Java项目|在线图书管理

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|学生成绩管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 【go语言】结构体数据填充生成md错误码文件

    这里使用pongo2这个模版引擎库进行md文件渲染 GitHub flosch pongo2 Django syntax like template engine for Go package main import fmt github
  • 2024最新MathType7.4.10中文版下载安装激活教程

    MathType 是一款专业的数学公式编辑工具 提供交互式编辑器 让你在编辑数学试卷 书籍 报刊 论文 幻灯演示等文档轻松输入各种复杂的数学公式和符号 1 本次讲解mathtype 7版本的安装步骤 MathType2024 Win 安装包
  • 如何打赢稳定性之战?

    文章目录 前言 为什么总会出现问题呢 如何证明你的稳定性做的有效果 既是持久战 也是防御战 1 提前建筑好防御工事 2 以攻为守 3 找外部支援和配合 前言 随着23年年末期间 各大厂争先恐后的出现的各种线上
  • 15天学会Python深度学习,我是如何办到的?

    陆陆续续有同学向我们咨询 Python编程如何上手 深度学习怎么学习 如果有人能手把手 一对一帮帮我就好了 我们非常理解初学者的茫然和困惑 大量视频 书籍 广告干扰了大家的判断 学习Python和人工智能 成为内行人不难 为此 我们推出了
  • 【一种新的Burton-Miller型奇异边界方法(BM-SBM)】用于声学设计灵敏度分析,2D和3D声学设计灵敏度分析的奇异边界方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 2D 2 2 3D
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 基于节点电价的电网对电动汽车接纳能力评估模型研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 如何正确使用RC滤波网络

    众所周知 最有效的滤波电路应靠近噪声源放置 滤波的作用是对噪声电流进行及时有效地阻止和转移 实际设计中 工程师经常使用高的串联阻抗 电阻 电感和铁氧体 阻止电流 并使用低的并联阻抗 电容 转移电流 通常情况下 我们期望滤波器可以对噪声信号衰
  • 在 Python 中实现 List 抽象

    在 Python 中 创建一个包含多个对象的 list 很常见 例如 对于一组具有相同功能的对象 比如播放声音 希望能够使用类似 my list play 的语法来触发 list 中所有对象的 play 方法 另一个例子是 当希望关闭 li
  • 计算机Java项目|人体健康信息管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板

随机推荐

  • 析构函数的注意问题以及用new开出来的空间用free释放会怎样

    大学学了越来越多的算法技术 但却不能忽略本源 编程语言是一切的基础 回过头来看依旧存在许多知识漏洞 返濮方能归真 前几天翻看别人的面经 发现了一个很有意思的问题 用new开出来的空间用free释放会怎样 借此机会 复习一下析构函数 并写了一
  • 接口测试理论

    了解接口测试https www cnblogs com houzhizhe p 6825457 html 什么是接口测试 测试人员通常所说的 接口测试 是针对系统各组件之间接口的一种测试 它属于功能测试 接口能测出普通界面操作难以发现的问题
  • 两个页面之间通过url地址栏进行传值

    第一个页面中有两个图片 当点击的时候能在第二个页面中获得它的属性值 通过location assign在第一个页面进行传值 location href在第二个页面进行接受值 一开始不会传值问题 但对于不知道怎么传值的人来说刚开始摸索 觉得好
  • useEffect详情用法

    1 为什么要使用useEffect 想必大家都是用过vue吧 在vue框架所写的项目中 我们通过在与后端进行数据交互的过程中 通常都是会在生命周期中进行数据的请求 然后将数据返回给页面进行渲染 在React中我们也是这样 但是在函数式组件中
  • Ubuntu18.04下SLEUTH 城市扩张模型编译与使用

    SLEUTH是CA模型的一种实现 由美国加州大学克拉克教授开发 可以模拟城市空间增长与土地利用变化 SLEUTH在Cygwin环境下可以运行 但是我尝试了很久都没有成功 于是我就尝试在Ubuntu系统下运行 编译与使用都非常简单 第一步 下
  • python爬虫系列7--动态网页爬取 selenium phantomjs chromedriver

    selenium phantomjs Selenium Selenium可以根据我们的指令 让浏览器自动加载页面 获取需要的数据 甚至页面截屏 或者判断网站上某些动作是否发生 Selenium自己不带浏览器 不支持浏览器的功能 它需要与第三
  • Android WiFi开发教程(二)——WiFi的搜索和连接

    在上一篇中我们介绍了WiFi热点的创建和关闭 如果你还没阅读过 建议先阅读上一篇文章Android WiFi开发教程 一 WiFi热点的创建与关闭 本章节主要继续介绍WiFi的搜索和连接 WiFi的搜索 搜索wifi热点 private v
  • python知识点

    0 1 python 语法基本知识点 注释 单行注释 这是使用三个单引号的多行注释 标识符 第一个字符必须是字母表中字母或下划线 标识符的其他的部分由字母 数字和下划线组成 标识符对大小写敏感 python保留字 False None Tr
  • python 小知识之 - simple http服务

    python3 9 windows 10 dos python一行命令搭建文件系统 cd d E Software python m http server 8090 浏览器访问 http localhost 8090 即可访问 E Sof
  • php知识点滴

    进度条的简单实现 echo ob flush flush 写日志文件 function mylog logthis file put contents myDebugLog log logthis r n FILE APPEND LOCK
  • EI会议——移动互联网、云计算和信息安全国际学术会议

    移动互联网 云计算和信息安全国际学术会议 International Conference on Mobile Internet Cloud Computing and Information Security 火热征稿中 大会官网 htt
  • PostgreSQL实用示例

    PostgreSQL实用示例 参考PostgreSQL 参考pass 创建表 CREATE TABLE bd peak index song feature lib id int8 NOT NULL features l decimal N
  • qpython3ll使用教程_Python3+Flask安装使用教程详解

    一 Flask安装环境配置 当前我的开发环境是Miniconda3 PyCharm 开发环境其实无所谓 自己使用Python3 Nodepad都可以 安装Flask库 pip install Flask 二 第一个Flask应用程序 将以下
  • 写时拷贝技术(copy-on-write)

    传统的fork 系统调用直接把所有的资源复制给新创建的进程 这种实现过于简单并且效率低下 因为它拷贝的数据也许并不共享 更糟的情况是 如果新进程打算立即执行一个新的映像 那么所有的拷贝都将前功尽弃 Linux的fork 使用写时拷贝 cop
  • Gartner:新型交付模式所引发的中国数字业务蝴蝶效应

    我们说无数字化无未来 数字化经济能够让企业的业务流程更灵活 更敏捷 达到中长期设定的目标 Gartner把数字化的业务定义为人 物 事全部的互联 这是未来所有数字化业务的一个基础 在数字化的基础上我们要好好谈一谈 交付 交付是生活中无时无刻
  • Meteasploit技术

    在使用Kali操作系统是应注意即使更新源 就像平时及时更新手机APP更新命令如下 apt get update 只更新软件包的索引源 作用 同步源的软件包的索引信息 从而进行软件更新 Apt get upgrade 升级系统上安装的所有软件
  • 力扣OJ(0401-600)

    目录 404 左叶子之和 412 Fizz Buzz 416 分割等和子集 419 甲板上的战舰 421 数组中两个数的最大异或值 426 将二叉搜索树转化为排序的双向链表 429 N叉树的层序遍历 431 将 N 叉树编码为二叉树 438
  • 基于springboot的课程作业管理系统

    随着科学技术的飞速发展 社会的方方面面 各行各业都在努力与现代的先进技术接轨 通过科技手段来提高自身的优势 课程作业管理系统当然也不能排除在外 课程作业管理系统是以实际运用为开发背景 运用软件工程原理和开发方法 采用springboot框架
  • ubuntu小技巧7--ubuntu如何安装flashplayer

    ubuntu小技巧7 ubuntu如何安装flashplayer 安装Ubuntu的时候经常会用大视频播放 可是默认情况下Ubuntu并未安装flashplayer插件 导致浏览器无法播放视频 因此安装flashplayer将是一个必备技能
  • C语言打印金字塔,菱形,V形图案

    文章目录 目录 文章目录 前言 一 打印金字塔 等腰三角形 1 图案 2 代码 二 打印菱形 两个三角形拼在一起 1 图案 2 代码 三 打印V形 1 图案 2 代码 四 打印 倒着的 V 1 图案 2 代码 总结 前言 使用C语言打印图形