IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言打印金字塔,菱形,V形图案 -> 正文阅读

[C++知识库]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(再想一想这要怎么得到)。

?

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

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

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:08:17  更:2022-09-21 00:09:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:53:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码