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

这篇具有很好参考价值的文章主要介绍了C语言打印金字塔,菱形,V形图案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

目录

文章目录

前言

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

1.图案

2.代码

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

1.图案

2.代码

三.打印V形 

1.图案 

 2.代码

四.打印(倒着的)V 

1.图案 

 2.代码

总结


前言

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

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


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

1.图案

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

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

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

c语言打印金字塔,C语言,c语言,开发语言,经验分享

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。 

c语言打印金字塔,C语言,c语言,开发语言,经验分享

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部分:每行之前的空格,中间的空格,两边的星号!(比较难的便是中间部分的空格) 

c语言打印金字塔,C语言,c语言,开发语言,经验分享

 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,就可以得到数了。主要还是用行数-当前的行数,再根据所得的结果进行加或减,来求得我们所需要的数字!

中间空格完成之后,再跟上星号。但是有一点要注意:就是最后一行星号重复的问题,如果不解决就无法打印出来,c语言打印金字塔,C语言,c语言,开发语言,经验分享 这里会多一个。

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

四.打印(倒着的)V 

1.图案 

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

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

c语言打印金字塔,C语言,c语言,开发语言,经验分享

 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语言打印了几个图形,根据行和列来找到规律,进行打印。最好是多看一看,找到它的规律,就很好的打印出来了!

当然这里只是其中的一种方法,如果有更好的方法可以留言互相交流!文章来源地址https://www.toymoban.com/news/detail-738243.html

到了这里,关于C语言打印金字塔,菱形,V形图案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码

    图像金字塔是对图像进行多分辨率表示的一种有效且简单的结构。 一个图像金字塔是一系列以金字塔形状排列的分辨率逐步降低的图像。图像金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率表示。 图像金字塔有什么作用? 图像金字塔常用于图像缩放、图像重

    2024年02月04日
    浏览(62)
  • opencv基础46-图像金字塔02-拉普拉斯金字塔

    前面我们介绍了高斯金字塔,高斯金字塔是通过对一幅图像一系列的向下采样所产生的。有时,我们希望通过对金字塔中的小图像进行向上采样以获取完整的大尺寸高分辨率图像,这时就需要用到拉普拉斯金字塔 前面我们已经介绍过,一幅图像在经过向下采样后,再对其进行

    2024年02月13日
    浏览(45)
  • opencv基础45-图像金字塔01-高斯金字塔cv2.pyrDown()

    图像金字塔(Image Pyramid)是一种用于多尺度图像处理和分析的技术,它通过构建一系列不同分辨率的图像,从而使得图像可以在不同尺度下进行处理和分析。图像金字塔在计算机视觉、图像处理和计算机图形学等领域中广泛应用,可以用于目标检测、特征提取、图像匹配、尺

    2024年02月13日
    浏览(51)
  • 图像金字塔

    图像金字塔 简单来说就是 自下而上图像一步一步缩小 1 高斯金字塔(涉及高斯分布) 向下采样(缩小,对金字塔来说是自下向上) 第一步: 高斯滤波去噪 第二部:将偶数行和列去掉 向上采样(放大,对金字塔来说是自上向下) 第一步:在每个方向上扩大两倍,新增的行和

    2023年04月22日
    浏览(46)
  • 什么是特征金字塔

    什么是特征金字塔 特征金字塔(Feature Pyramid)是一种用于计算机视觉中物体检测、图像分割、目标跟踪等任务的常用技术。它的主要思想是通过在不同的图像尺度上提取特征,来捕捉不同大小和分辨率的物体信息。 具体来说,特征金字塔通常由以下几个步骤构成: 图像金字

    2024年02月12日
    浏览(34)
  • 金字塔原理(思考的逻辑)

    前言:前面学习了表达的逻辑,那在表达之前,如何组织内容?如何进行思考?接下来看第二篇—— 思考的逻辑 。 目录 应用逻辑顺序 时间顺序 结构顺序 程度顺序 概括各组思想  什么是概括? 思想表达方式 如何概括? 所有的思想必须具有某种逻辑顺序。 组织在一起的思

    2024年02月11日
    浏览(44)
  • OpenCv之图像金字塔

    目录 一、图像金字塔介绍  二、高斯金字塔 三、拉普拉斯金字塔 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。简单来说,图像金字塔是同一图像不同分辨率的子图集合。 图像金字塔的作用: 图像金

    2024年02月12日
    浏览(37)
  • 【学习】FPN特征金字塔

    论文:Feature Pyramid Networks for Object Detection (CVPR 2016) 参考blog:https://blog.csdn.net/weixin_55073640/article/details/122627966 参考视频讲解:添加链接描述 卷积网络中,深层网络容易响应语义特征,浅层网络容易响应图像特征。然而,在目标检测中往往因为卷积网络的这个特征带来了不少

    2024年01月24日
    浏览(97)
  • OpenCV 11(图像金字塔)

    **图像金字塔**是图像中 多尺度表达 的一种 ,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。简单来说, 图像金字塔是同一图像不同分辨率的子图集合. 图像金字塔最初用于机器视觉和图像压缩。其通过梯次向下采样获得,直到达到某个终止

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包