C++实现二维图形的打印

 更新时间:2022年02月10日 14:51:46   作者:小李同学29  
大家好,本篇文章主要讲的是C++实现二维图形的打印,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下

今天,总结一下二维图形的打印问题,也是当时困扰我的一大难题哈哈哈哈,好在随着知识的沉淀,对这个知识点的理解也愈发清晰,今天就来举几个例子来探讨一下吧。

一、下三角图形的打印

#include<iostream>
using namespace std;
int main()
{
	int i , j ;
 
	for(i = 1 ; i <= 3 ; i ++)
 
	{
		for (j = 1; j <= (2 * i - 1); j++)
		{
			cout << "*";
		}
		cout << endl ;
	}
 
	return 0 ;
 
}

首先这个图形有三行,为了便于表示,i 直接从 1 开始,至 3 结束,表示纵向一行一行,然后用 j 来横向描述每一行的情形。通过找规律易知,每一行的 * 个数与 i 之间是 2*i-1 的关系,然后就在每一行结束的时候添加换行即可。

二、中三角二维图形的打印

#include<iostream>
using namespace std;
int main() {
	int i, j;
	for (i = 1; i <= 4; i++)
	{
		for (j = 1; j <= 4 - i; j++)
		{
			cout << " ";
		}
		for (j = 1; j <= 2 * i - 1; j++)
		{
			cout << "*";
		}
		cout << endl;
	}
	return 0;
}

首先,这个图形有四行,每一行需要打印两个元素,一个是前面的空格,另一个就是 * ,行数还是从i= 1 开始标记,横向的 j 每一次要先打印完空格才能打印 * ,而通过找规律可知,前面的空格与行数 i 有空格数 = 4-i 的规律,然后看每一次的 * 呈奇数的关系,即与行数呈 2*i-1 的关系,最后在每一个i结束的时候加上换行即可。

三、上三角图形的打印

#include<iostream>
using namespace std;
int main() {
	int i, j;
	for (i = 1; i <= 3; i++)
	{
		for (j = 0; j <= 2 * i - 2; j++)
		{
			cout << " ";
		}
		for (j = 1; j <= 5 - (2 * i - 2); j++)
		{
			cout << "*";
		}
		cout << endl;
	}
	return 0;
}

 这个题是当时困扰我最久的了,哎,当时陷入了固定思维,一直在思考这个 * 的个数与i之间的直接联系,0, 2, 4,当真是没找到有啥关系,许是我太笨了,确实没找到有啥关系式可以表示,后来在网上看了别人写的代码,懂得了还有一种表示方法,简直是豁然开朗,醍醐灌顶,当每一行需要表示两种元素的时候,如果一种表示方法很简单,可以用总的长度减去这种简单表示的式子来表示那个较难表示的数量,这种思想跟高数中积分那里有种解题思路相仿。

再来说这个题,首先一共三行,纵向的i从1 开始赋值,到等于3 ,接着是横向的每一行需要表示的元素,空格的数量根据行数一次是0, 2, 4 这种偶数跟i 之间的关系,很容易便知是 2*i-2 的关系,接着就是这个题新开拓出来的方法,用总的数量减去第一种的数量就是第二种的数量,即 5- (2*i-1),然后就是最后了,依旧跟往常一样,在每一行结束的时候加一个换行即可。

四、九九乘法表的打印

#include<iostream>
using namespace std;
int main() {
	int i, j;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
		{
			cout << i << "*" << j << "=" << i * j << '\t';
		}
		cout << endl;
 
	}
	return 0;
}

 这个当初写的时候还花费了蛮长时间,现在重新写竟一下就可以完成,不禁感叹真的是随着见到的知识越来越多,写的一个个小程序也越来越多,真的是能体会到积土成山,风雨兴焉的感慨,哈哈哈回归正题。

这个看着麻烦,其实找到规律,跟之前写的并无两样,行数还是从1 开始表示,可以发现,每一行中的另一个元素 j 都是从1 开始一直到 i ,都是 <= i ,所以这个核心规律就找到了,这个题最重要的是最后输出时的表示方法,因为输出的时候 i ,j 要在不断的变,所以都不需要加双引号, 然后就是根据每一个小单元的输出格式,不变的元素字符就加上双引号,最后为了整洁美观,在输出完每一个小结都要加上一个制表符 \t 来整齐美观,that's all.

最后,我想说的是,我最开始写的时候不知道如何表示每一行的元素个数的方法,依我现在的总结方法就是,努力使每一个式子都跟行数 i 形成直接或间接的关系。

总结

到此这篇关于C++实现二维图形的打印的文章就介绍到这了,更多相关C++二维图形打印内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c++输出斐波那契数列示例分享

    c++输出斐波那契数列示例分享

    这篇文章主要介绍了c++输出斐波那契数列示例,需要的朋友可以参考下
    2014-03-03
  • C++ ffmpeg实现将视频帧转换成jpg或png等图片

    C++ ffmpeg实现将视频帧转换成jpg或png等图片

    有时播放实时流的时候有截图的需求,需要将解码出来的图片保存本地或上传服务器,这时就需要将avframe中的数据编码成png、jpg等格式的图片,我们使用ffmpeg的相关编码器就可以实现功能,下面就来讲讲具体实现方法吧
    2023-03-03
  • c++中new一个结构体初始化过程

    c++中new一个结构体初始化过程

    这篇文章主要介绍了c++中new一个结构体初始化过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • C++标准模板库STL的介绍

    C++标准模板库STL的介绍

    今天小编就为大家分享一篇关于C++标准模板库STL的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++实现LeetCode(106.由中序和后序遍历建立二叉树)

    C++实现LeetCode(106.由中序和后序遍历建立二叉树)

    这篇文章主要介绍了C++实现LeetCode(106.由中序和后序遍历建立二叉树),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++实现动态烟花代码

    C++实现动态烟花代码

    这篇文章主要介绍了利用C++实现的放烟花程序,用到了EGE图形库,文中的示例代码讲解详细,对我们学习C++有一定帮助,需要的可以参考一下
    2023-01-01
  • C++使用map实现多进程拷贝文件的程序思路

    C++使用map实现多进程拷贝文件的程序思路

    这篇文章主要介绍了C++使用mmap实现多进程拷贝文件,通过本文给大家分享程序思路及完整代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 常用C/C++预处理指令详解

    常用C/C++预处理指令详解

    预处理指令提供按条件跳过源文件中的节、报告错误和警告条件,以及描绘源代码的不同区域的能力。使用术语“预处理指令”只是为了与 C 和 C++ 编程语言保持一致。在 C# 中没有单独的预处理步骤;预处理指令按词法分析阶段的一部分处理。
    2014-11-11
  • C++实现LeetCode(160.求两个链表的交点)

    C++实现LeetCode(160.求两个链表的交点)

    这篇文章主要介绍了C++实现LeetCode(160.求两个链表的交点),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • c++引用传参和指针传参的区别及说明

    c++引用传参和指针传参的区别及说明

    这篇文章主要介绍了c++引用传参和指针传参的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01

最新评论