for 循環(huán)
for 循環(huán)是一種前測試循環(huán)語句,在反復(fù)執(zhí)行一段代碼之前柬采,都要先測試入口條件欢唾,如果條件為真,可以繼續(xù)循環(huán)粉捻,如果條件為假匈辱,必須跳出循環(huán)不再執(zhí)行。即反復(fù)執(zhí)行一段代碼直到測試條件為假時停止杀迹。
for (;;) {
}
呆板的語法:
for (定義循環(huán)變量;變量的最大值或最小值;步長) {
循環(huán)體亡脸;
}
這種解釋只能涵蓋 for 循環(huán)的一部分特殊結(jié)構(gòu),不能表示所有的 for 循環(huán)實現(xiàn)的情況树酪。應(yīng)該掌握 for 循環(huán)運行的一個軌跡浅碾、路徑,去推導(dǎo) for 循環(huán)運行的過程续语。
for 循環(huán)執(zhí)行過程:遇到 for 循環(huán)垂谢,立即執(zhí)行 ① 位置的語句,執(zhí)行完畢后立即執(zhí)行 ② 位置的語句疮茄,② 位置會強制得到一個 true 或 false的結(jié)果滥朱,如果為 true 表示入口條件為真,下一步執(zhí)行 ③ 位置的語句力试,如果為 false 表示入口條件為假徙邻,不再往下執(zhí)行,直接跳出循環(huán)執(zhí)行后面的 ⑤ 位置的語句畸裳。
如果能夠執(zhí)行到 ③ 位置缰犁,③ 是一個結(jié)構(gòu)體必須執(zhí)行完畢,再執(zhí)行 ④ 位置的語句怖糊,執(zhí)行完畢后再執(zhí)行 ② 位置的語句帅容,回到了判斷真假,如果為 true伍伤,繼續(xù)執(zhí)行 ③并徘,再執(zhí)行 ④……直到 ② 位置得到一個 false 的結(jié)果,循環(huán)結(jié)束跳出執(zhí)行 ⑤扰魂。
注意事項
- 小括號內(nèi)部必須有兩個分號麦乞。
- for 循環(huán) {} 后面不需要加分號。
- 如果 ② 位置語句不寫阅爽,相當(dāng)于沒有設(shè)置入口條件路幸,或者條件永遠為真,沒法限制什么時候停止循環(huán)了付翁,出現(xiàn)死循環(huán)简肴。
- ③ 位置是循環(huán)的結(jié)構(gòu)體,每次進入循環(huán)都要執(zhí)行完后百侧,才能執(zhí)行語句 ④砰识,③ 位置的語句是可以人為自定義的能扒,甚至可以書寫 if 語句。
- for 循環(huán)嵌套 if 語句:表示既要能夠執(zhí)行循環(huán)辫狼,還要滿足 if 語句的條件初斑。
- for 循環(huán)嵌套 for 循環(huán):外層循環(huán)執(zhí)行一次,內(nèi)層循環(huán)作為外層 ③ 位置的結(jié)構(gòu)體膨处,必須執(zhí)行完所有的內(nèi)層循環(huán)见秤,才能進入外層循環(huán)下一次的 ④。循環(huán)內(nèi)的變量是全局變量真椿,必須避免循環(huán)嵌套時起相同的變量名鹃答,內(nèi)層和外層變量名必須不同,常用的變量名 i突硝,j测摔,k。
do while 循環(huán)
do while 循環(huán)是一種后測試循環(huán)語句解恰,會先執(zhí)行一次結(jié)構(gòu)體锋八,執(zhí)行完后才會去判斷入口條件,如果條件為真能夠繼續(xù)下一次循環(huán)护盈,如果條件為假跳出循環(huán)挟纱。
do {
結(jié)構(gòu)體;
} while(條件表達式);
do:做什么黄琼。后面是每次循環(huán)的循環(huán)體樊销。
while:當(dāng)……時候。
先執(zhí)行一次循環(huán)體脏款,然后當(dāng)條件表達式為真時可以繼續(xù)循環(huán)。
注意事項
- 如果循環(huán)中需要循環(huán)變量參與裤园,循環(huán)變量必須定義在循環(huán)外面撤师,否則會被重置。
- 循環(huán)變量自加的過程需要寫在 {} 循環(huán)體內(nèi)部拧揽。
- 如果將循環(huán)變量寫在結(jié)構(gòu)體內(nèi)剃盾,i的初始值每次都會被重置,容易出現(xiàn)死循環(huán)淤袜。
- 變量自加過程寫在輸出語句前面和后面痒谴,結(jié)果是不同的。
- do while 循環(huán)即便條件第一次測試就為假铡羡,也會執(zhí)行一次結(jié)構(gòu)體积蔚。
- 至少會執(zhí)行一次循環(huán)體。
while 循環(huán)
while 循環(huán)是一種前測試循環(huán)語句烦周,在執(zhí)行循環(huán)體之前都要測試入口條件尽爆,條件為真繼續(xù)執(zhí)行怎顾,條件為假直接跳出循環(huán)。
while (條件表達式) {
循環(huán)體漱贱;
}
當(dāng)條件表達式為真時槐雾,執(zhí)行循環(huán)體,如果為假幅狮,跳出循環(huán)募强。
注意事項
- 如果需要循環(huán)變量參與,必須定義在循環(huán)外部崇摄,避免被重置钻注。
- 循環(huán)變量自加的過程寫在循環(huán)體內(nèi)部。
總結(jié)
遇到必須先執(zhí)行一次結(jié)構(gòu)體的循環(huán)配猫,使用 do while 循環(huán)幅恋。
先測試入口條件的循環(huán),可以選擇 for 循環(huán)或 while 循環(huán)泵肄。
break 語句
break 語句的作用可以立即停止當(dāng)前的 for捆交、do while、while 循環(huán)腐巢。
根據(jù)一些條件設(shè)置 break 位置品追,直到循環(huán)能夠執(zhí)行到 break 語句立即停止執(zhí)行,跳出循環(huán)冯丙。
注意事項
break 如果沒有特殊指示肉瓦,只能停止自己所在的那一層循環(huán),并不能終止外部循環(huán)胃惜。
如果想停止外層循環(huán)泞莉,可以給外層循環(huán)添加一個標簽名 label,在內(nèi)層循環(huán)的 break 關(guān)鍵字后面空格加一個 label 名船殉。
continue 語句
遇到 continue 表示當(dāng)前的一次循環(huán)數(shù)據(jù)不是我們想要的鲫趁,會立即停止當(dāng)前次的循環(huán),立即進入下一次循環(huán)利虫。
注意事項
要根據(jù)特殊條件設(shè)置 continue 的位置挨厚。continue 如果沒有特殊指示只能進入自己的下一次循環(huán),不能立即停止外層循環(huán)的這一次進入下一次糠惫。
控制外層循環(huán)的方式與 break 一樣疫剃,都是添加外層的標簽名。
break 和 continue 這兩個語句的出現(xiàn)可以幫助我們大量的優(yōu)化代碼硼讽,減少了計算機的計算次數(shù)巢价。
窮舉思想
實際案例中,可能需要找到一些有規(guī)律的數(shù)據(jù),但是計算機沒辦法自動智能篩選所要的數(shù)據(jù)蹄溉,只能程序員自己書寫一段代碼咨油,讓計算機根據(jù)代碼去進行篩選。
窮舉思想:是一種解決問題的方法柒爵,將所有的需要數(shù)據(jù)所在的范圍內(nèi)所有的數(shù)據(jù)都一一列舉出來役电,再根據(jù)規(guī)律的條件對所有這些數(shù)據(jù)進行篩選,這種方式就是窮舉法棉胀。窮:窮盡法瑟,舉:列舉
- for 循環(huán):外層使用 for 循環(huán)進行一一列舉。
-
if 語句:內(nèi)層用 if 語句進行判斷唁奢,篩選需要的數(shù)據(jù)霎挟,如果滿足條件就操作數(shù)據(jù),如果不滿足條件跳過看下一次循環(huán)的數(shù)據(jù)麻掸。
累加器
有時候需要的不是每個數(shù)據(jù)是什么酥夭,需要得到所有數(shù)據(jù)的加和,必須想辦法將所有的數(shù)據(jù)的和存起來脊奋,就用到了累加器熬北。累加器本質(zhì)就是變量。實現(xiàn)累加的效果诚隙,就是利用循環(huán)讶隐,每次循環(huán)就將新的數(shù)據(jù)加到原始的變量中去,賦值過程是一個加等于賦值久又。
- 求 1-10 之間所有數(shù)字的和巫延。
注意事項 - 累加器必須定義在循環(huán)外面的前面,如果定義在循環(huán)內(nèi)部地消,每次循環(huán)都會將累加器重置炉峰,不能實現(xiàn)累加功能。
- 累加器的初始值必須設(shè)置犯建,而且必須設(shè)置為 0讲冠,不會影響累加結(jié)果。
- 使用最終累加結(jié)果時适瓦,必須在 for 循環(huán)結(jié)束后的外面,如果寫在循環(huán)內(nèi)部谱仪,循環(huán)沒結(jié)束玻熙,并不是最終需要的值。
累乘器
累乘器累積一些數(shù)據(jù)的乘積疯攒。與累加器非常類似嗦随。
- 求 1 到 10 的累乘的乘積,也叫作 10!,階乘枚尼。
注意事項 - 累乘器必須定義在循環(huán)外部前面贴浙。
- 累乘器的初始值必須是 1,1 乘以任何數(shù)都等于本身署恍。
- 累乘器最終結(jié)果必須在 for 循環(huán)結(jié)束后使用崎溃。