首頁 > 運動
C++入門基礎系列:巢狀雙重for迴圈實現起來很簡單
由 向陽花開滿山紅 發表于 運動2022-12-01
簡介如果要擴充套件程式,如:要列印100行,只需要修改外部迴圈的結束條件即可
python有指標嗎
上一次課中,我們講到了演算法和流程圖。
演算法是
解決問題的思路或步驟
,類似解數學題一樣,第一步做什麼、第二步做什麼,套用什麼公式等。
流程圖是
描述演算法的一種圖形化的表示方法
,使得問題更加直觀、簡單易懂。
本次課的學習目標:
巢狀雙重for迴圈
01
知識點:巢狀雙重for迴圈
前面在講
if
條件結構時,學習過條件巢狀結構。同樣的,迴圈也可以巢狀。
比如:列印
10
個
*
號。你可以這樣:
如果讓你列印
100
個、
1000
個甚至更多這樣的
*
號,這樣編寫程式碼顯然就不行了。這時,就必須要考慮到我們前面學過的迴圈語句,採用
for
迴圈結構是最簡單的方式。
不知道看懂沒有?只需要修改一下迴圈的結束條件,比如:將
100
改為
1000
,就可以列印
1000
個
*
號了。透過這種方式,想列印多少
*
號就可以列印多少。
我們更進一步:如果要列印這樣的圖形,該怎麼實現呢?
是不是可以這樣思路:列印一行
10
個
*
號,需要一個可以重複
10
次的迴圈結構;這樣的行數有
5
行,那就需要
5
個這樣的迴圈結構。
儘管上述程式碼實現了我們預期的目標,但是這樣的程式碼存在大量的重複(冗餘),而且擴充套件性不好。比如:現在我要列印
100
行、
1000
行、甚至更大這樣每行
10
個
*
號的行,就需要不斷的複製重複上述程式碼。
那麼,可不可以這樣,將上圖中單個方框內的部分作為迴圈體,在其外圍再套一重迴圈,結構如下:
內部迴圈代表列數,每行列印
10
個這樣的
*
號;外部迴圈代表行數,可以讓內部迴圈重複執行
5
次。如果要擴充套件程式,如:要列印
100
行,只需要修改外部迴圈的結束條件即可。
這就是經典的巢狀雙重
for
迴圈,
外層迴圈代表行,內層迴圈代表列。
在列印平面圖形時,就需要考慮使用這種結構。
02
案例:九九乘法表
九九乘法表就是一個
9X9
的平面圖形,只不過它不是一個完整的矩形,而是一個三角形結構。
第一行只有
1
列,第二行有
2
列,依次每行增加
1
列,到第九行有
9
列。
根據前面的分析,需要採用巢狀雙重
for
迴圈結構。有九行,外層迴圈的迴圈結束條件就是
9
;問題在於內層迴圈的結束條件是多少呢?
每一行的列數不同,內層迴圈的結束條件就不能是一個固定值。
再分析:
第一行1
列,第二行2
列,第三行3
列……
也就是說:內層迴圈的結束條件與行數相同,它會受到行數的影響。所以,我們的程式碼應該這樣寫:
這樣,直角三角形就做好了,最後修改輸出的
*
號,構造成表示式輸出即可。
執行結果如下:
03
總結
本次課重點講解了巢狀雙重迴圈的實現過程。同學們在遇到列印平面圖形的案例時,別忘了使用此結構。
,在實踐中體會程式設計的無窮樂趣吧。