網(wǎng)站首頁 編程語言 正文
今天,總結(jié)一下二維圖形的打印問題,也是當(dāng)時(shí)困擾我的一大難題哈哈哈哈,好在隨著知識(shí)的沉淀,對(duì)這個(gè)知識(shí)點(diǎn)的理解也愈發(fā)清晰,今天就來舉幾個(gè)例子來探討一下吧。
一、下三角圖形的打印
#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 ; }
首先這個(gè)圖形有三行,為了便于表示,i 直接從 1 開始,至 3 結(jié)束,表示縱向一行一行,然后用 j 來橫向描述每一行的情形。通過找規(guī)律易知,每一行的 * 個(gè)數(shù)與 i 之間是 2*i-1 的關(guān)系,然后就在每一行結(jié)束的時(shí)候添加換行即可。
二、中三角二維圖形的打印
#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; }
首先,這個(gè)圖形有四行,每一行需要打印兩個(gè)元素,一個(gè)是前面的空格,另一個(gè)就是 * ,行數(shù)還是從i= 1 開始標(biāo)記,橫向的 j 每一次要先打印完空格才能打印 * ,而通過找規(guī)律可知,前面的空格與行數(shù) i 有空格數(shù) = 4-i 的規(guī)律,然后看每一次的 * 呈奇數(shù)的關(guān)系,即與行數(shù)呈 2*i-1 的關(guān)系,最后在每一個(gè)i結(jié)束的時(shí)候加上換行即可。
三、上三角圖形的打印
#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; }
?這個(gè)題是當(dāng)時(shí)困擾我最久的了,哎,當(dāng)時(shí)陷入了固定思維,一直在思考這個(gè) * 的個(gè)數(shù)與i之間的直接聯(lián)系,0, 2, 4,當(dāng)真是沒找到有啥關(guān)系,許是我太笨了,確實(shí)沒找到有啥關(guān)系式可以表示,后來在網(wǎng)上看了別人寫的代碼,懂得了還有一種表示方法,簡直是豁然開朗,醍醐灌頂,當(dāng)每一行需要表示兩種元素的時(shí)候,如果一種表示方法很簡單,可以用總的長度減去這種簡單表示的式子來表示那個(gè)較難表示的數(shù)量,這種思想跟高數(shù)中積分那里有種解題思路相仿。
再來說這個(gè)題,首先一共三行,縱向的i從1 開始賦值,到等于3 ,接著是橫向的每一行需要表示的元素,空格的數(shù)量根據(jù)行數(shù)一次是0, 2, 4 這種偶數(shù)跟i 之間的關(guān)系,很容易便知是 2*i-2 的關(guān)系,接著就是這個(gè)題新開拓出來的方法,用總的數(shù)量減去第一種的數(shù)量就是第二種的數(shù)量,即 5- (2*i-1),然后就是最后了,依舊跟往常一樣,在每一行結(jié)束的時(shí)候加一個(gè)換行即可。
四、九九乘法表的打印
#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; }
?這個(gè)當(dāng)初寫的時(shí)候還花費(fèi)了蠻長時(shí)間,現(xiàn)在重新寫竟一下就可以完成,不禁感嘆真的是隨著見到的知識(shí)越來越多,寫的一個(gè)個(gè)小程序也越來越多,真的是能體會(huì)到積土成山,風(fēng)雨興焉的感慨,哈哈哈回歸正題。
這個(gè)看著麻煩,其實(shí)找到規(guī)律,跟之前寫的并無兩樣,行數(shù)還是從1 開始表示,可以發(fā)現(xiàn),每一行中的另一個(gè)元素 j 都是從1 開始一直到 i ,都是 <= i ,所以這個(gè)核心規(guī)律就找到了,這個(gè)題最重要的是最后輸出時(shí)的表示方法,因?yàn)檩敵龅臅r(shí)候 i ,j 要在不斷的變,所以都不需要加雙引號(hào), 然后就是根據(jù)每一個(gè)小單元的輸出格式,不變的元素字符就加上雙引號(hào),最后為了整潔美觀,在輸出完每一個(gè)小結(jié)都要加上一個(gè)制表符 \t 來整齊美觀,that's all.
最后,我想說的是,我最開始寫的時(shí)候不知道如何表示每一行的元素個(gè)數(shù)的方法,依我現(xiàn)在的總結(jié)方法就是,努力使每一個(gè)式子都跟行數(shù) i 形成直接或間接的關(guān)系。
總結(jié)
原文鏈接:https://blog.csdn.net/weixin_62254935/article/details/122840970
相關(guān)推薦
- 2022-06-10 阿里云日志服務(wù)日志過濾器配置_服務(wù)器其它
- 2022-04-18 詳解OpenGL?Shader抗鋸齒的實(shí)現(xiàn)_Android
- 2022-04-26 Python?Pandas學(xué)習(xí)之?dāng)?shù)據(jù)離散化與合并詳解_python
- 2022-07-12 springboot整合jasypt加密yml配置文件
- 2022-03-06 C語言動(dòng)態(tài)順序表實(shí)例代碼_C 語言
- 2022-07-08 C#中Lambda表達(dá)式的用法_C#教程
- 2021-12-16 .NET中的狀態(tài)機(jī)庫Stateless的操作流程_實(shí)用技巧
- 2022-10-14 Ubuntu18.04使用Xorg創(chuàng)建虛擬屏幕
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支