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++二维图形打印内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言打印菱形实例详解

    前言 打印菱形这道题对于初学编程者来说简直是噩梦,曾经我就是栽在这上面的,后来编程编多了之后对打印菱形也觉得不再那么难了,去年在公众号写了一篇推送是关于打印菱形的,觉得对一些师弟师妹还是有所帮助的,今天就把这道题分享出来. 以下是我遇到的各种各样的菱形: 普通菱形,输入n,输出n行n列的菱形 难度系数:♥ n行空心菱形,输入n,输出n行空心菱形 难度系数:♥♥ n行挖空菱形,输入n,输出n行n列空格菱形 难度系数:♥♥♥ n行数字菱形,输入n,输入n行数字从外到内递增的数字菱形 难度系数:♥♥♥

  • C语言打印正方形实例代码

    目录 题目描述 输入 输出 样例输入 样例输出 题目描述 由火柴棍组成的一个n×n的正方形,按从上到下,从左到右的顺序给火柴棍编号,从1开始,比如下图中,一共有24根火柴棍. 问去掉若干个火柴棍之后,这个图形中还存在多少个正方形? 如下图所示,n=3时,去掉12,17,23号火柴棒之后,还剩下5个正方形. 输入 第一行是一个整数T(1≤T≤1000),表示样例的个数. 每个样例的第1行是两个整数n(1≤n≤50),表示图形的宽度. 样例的第2行首先是一个整数m(0≤m≤2n(n+1),表示去掉火

  • C语言打印杨辉三角形的示例代码

    目录 1. 题目描述 2. 解题思路 3. 动图演示 4. 代码实现 Step1 Step2 居中显示 5. 完整代码 6. 特性总结 1. 题目描述 杨辉三角形 解题之前,我们先来了解一下杨辉三角形到底是什么? 杨辉三角形,又称帕斯卡三角形.贾宪三角形.海亚姆三角形,它的排列形如三角形. 因为首现于南宋杨辉的<详解九章算法>得名,而书中杨辉说明是引自贾宪的<释锁算书>,故又名贾宪三角形. 古代波斯数学家欧玛尔·海亚姆也描述过这个三角形.在欧洲,因为法国数学家布莱兹‧帕斯卡在165

  • 利用C语言如何实现一些简单图形的打印

    1#define_CRT_SECURE_NO_WARNINGS 1 因为笔者采用的是VS的编译环境所以有了上面的这一句话 我们都知道平面图形是由一条条线段构成,所以我们就先实现线段的打印 //打印自定义长度的线段 #include<stdio.h> int main() { int i = 0; int n; while (~scanf("%d", &n)) { for (i = 0; i < n; i++) printf("* "); p

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

    目录 一.下三角图形的打印 二.中三角二维图形的打印 三.上三角图形的打印 四.九九乘法表的打印 总结 今天,总结一下二维图形的打印问题,也是当时困扰我的一大难题哈哈哈哈,好在随着知识的沉淀,对这个知识点的理解也愈发清晰,今天就来举几个例子来探讨一下吧. 一.下三角图形的打印 #include<iostream> using namespace std; int main() { int i , j ; for(i = 1 ; i <= 3 ; i ++) { for (j = 1; j

  • C++实现二维图形的傅里叶变换

    本文实例讲述了C++实现二维图形的傅里叶变换的方法.有一定的借鉴价值.分享给大家供大家参考. 具体代码如下: // Fourier.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdio.h" #include "math.h" #include <cv.h> #include <highg

  • 使用python绘制二维图形示例

    我就废话不多说了,直接上代码吧! import matplotlib.pyplot as plt #也可以使用 import pylab as pl import matplotlib.font_manager as fm myfont = fm.FontProperties(fname=r'C:\Windows\Fonts\simkai.ttf') #或许字体,为设置中文显示 x = [1,2,3,4,5,6] data1 = [1,1.3,1.39,1.41,1.42,1.40] data2

  • C#实现扫描枪扫描二维码并打印(实例代码)

    1.使用usb口输入的扫描枪,这里实现使用了winform 首先创建一个CS文件 using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Text; namespace am_sign { class BardCodeHooK { public delegate voi

  • 基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作

    在很多项目里面,对条形码和二维码的生成和打印也是一种很常见的操作,在Web项目里面,我们可以利用JS生成条形码和二维码的组件有很多.本文引入两个比较广泛使用的JS组件,用来处理条形码和二维码的生成处理,并介绍如何利用CLODOP组件实现内容的打印输出. 生成条形码使用组件JsBarcode,生成二维码使用组件qrcodejs. 1.条形码的生成 条码的作用一般在一些商品标签上,方便使用条码枪快速.准确录入信息. 如下所示是一种条形码 这里条形码生成使用了JsBarcode组件进行处理,它支持很多

  • Java 二维数组创建及使用方式

    目录 二维数组的创建 二维数组基本使用 1. 二维数组的使用 2. 使用方式 1: 动态初始化 3. 使用方式 2: 动态初始化 4. 使用方式 3: 动态初始化-列数不确 5. 使用方式 4: 静态初始化 6. 二维数组的应用案例 7. 二维数组使用细节和注意事项 8. 二维数组课堂练习 二维数组的创建 二维数组好比一个表格,第一个下标表示行,第二个下标表示列,数组的创建和初始化与一位数组一模一样,及二维数组就是一个把多个一维数组包起来的数组. 数组的创建: type[][] arrayNam

  • PHP生成(支持多模板)二维码海报代码

    增加模板: 1.qrcode.*** 开头的 文件夹,比如:qrcode.demoABC 2.在第一步创建的文件夹中配置文件config.php,以上面的例子为:qrcode.demoABC/config.php <?php return array( //二维码部分 'level' => "L", //二维码校正级别,可选:L.M.Q.H 'matrix' => 6, //矩阵的大小, 1-10 'type' => 'png', //二维码 输出类型 /**

  • unityZXing二维码的生成与扫描

    本文实例为大家分享了unityZXing二维码生成与扫描的具体代码,供大家参考,具体内容如下 借鉴自某位大佬不记得了 using System.Collections; using System.Collections.Generic; using UnityEngine; using ZXing; using UnityEngine.UI; /// <summary> /// 二维码扫描识别功能 /// </summary> public class TestQRCodeScan

  • java高效打印一个二维数组的实例(不用递归,不用两个for循环)

    打印1个元素,不让循环变量i++,走出思维定式(执行一次循环体,就i++).public class OneForPrint2DArr { public static void main(String[] args) throws Exception { int[][] a = { { 1, 2, 3 }, { 4, 5} }; for (int i = 0, j = 0; i < a.length;) { System.out.println(a[i][j]); j++; if (j >=

  • C# TSC打印二维码和条形码的实现方法

    效果图 开发.使用环境说明 安装TSC_7.3.8_M-3.exe打印机驱动,安装时选择对应的ttp 244 pro 将TSCLIB.dll复制到C:\Windows\system 驱动安装说明 选择下一步 选择安装路径,默认即可,选择下一步 选择安装打印机,选择下一步 选择其他,点击下一步 选择对应的打印机型号,点击下一步 选择USB端口,点击下一步 直接默认即可,点击下一步 驱动安装完成! TSCLIB.cs代码: using System; using System.Collections

随机推荐