天天看點

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

文 | Edward

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

2 循環執行語句

計算機有一個強大的能力,快速地重複執行某一計算,這種重複計算多次的方法,是通過軟體中的循環執行語句去實作的。C語言中實作循環語句結構的方式有三種,第一種為“for”循環,第二種為“while”循環,第三種為“do……while”循環。不管是那種循環,其循環的方式都是類似的,即在某一條件成立的情況下(為True,或者非0),某一範圍内的某條或某幾條語句就會被一次循環執行,循環執行語句的示意如圖3-8-7所示。

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

圖3-8-7 循環執行語句

(1)while循環

while語句的一般使用形式為:

while(判斷條件)

{

    執行語句;

}

其中判斷條件可以為表達式,也可以是一個變量,隻要表達式或者變量不為0,那麼while後面的執行語句将一直被循環執行。如果while條件後面隻跟随一句執行語句,那麼while後面的一對“{}”可以不加。

例如,當我們需要連續列印出1到100的時候,用while語句即可輕松實作,其實作代碼如圖3-8-8所示。

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

圖3-8-8 while循環列印

圖3-8-8代碼中,i定義完成之後,賦初值為1,“i <= 100”是一個判斷條件,隻要這個表達式為1,即條件成立,那麼代碼就一直會把“i”列印出來,而變量i每次在列印完成之後,就對自己加1,這樣,當執行99次之後,i=100,此時“i <= 100”這個條件還是成立,進而再執行一次“i+1”,此時i=101了,再去判斷“i<=100”已經不成立了,是以while循環最終退出。

當然,C語言在設計之初就設計了循環的退出機制,“continue”和“break”就是循環退出機制的兩個關鍵詞。這兩個關鍵詞雖然都可以使while循環中斷退出,但是其效果和功能有着非常大的差別。“break”關鍵詞是讓整個while循環徹底退出,而“continue”關鍵詞是讓本次的循環中斷運作,進而進行下一次while的循環以決定這個循環需不需要繼續執行下去。關于“continue”關鍵詞我們可以做一個簡單的程式來說明一下其功能。如圖3-8-9所示。

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

圖3-8-9 continue關鍵詞

這個程式的主體和圖3-8-8中的代碼一樣,隻不過加了一個判斷條件,當i加到5的時候進行判斷,直接給變量i指派200,之後再運作continue語句,由于continue語句執行了,是以循環在此處就中斷了,直接進行while條件的判斷,而此時下面的printf語句也就不會被執行了。在while的判斷下,發現此時“i <= 100”這個條件不成立了,是以退出了while循環。

利用while循環和continue的組合,我們還可以做很多有趣的程式,如,找出1~1000中所有能被3整除的整數。程式代碼如圖3-8-10所示。

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

圖3-8-10 找出1000以内能被3整除的數

而break的文法就是直接退出整個while循環,我們可以寫一個軟體來驗證這個while的用法,做一個鍵盤字元擷取程式,程式平時一直在等待按鍵輸入,并将按下的按鍵列印出來,直到當按下小寫字元“k”的時候,程式列印出goodbye并且退出。如圖3-8-11所示,此時while的判斷條件是一個常數1,是以可以說while在任何情況下都不會退出,但是一旦當擷取到的按鍵為“k”,此時if判斷語句中的條件就成立,運作break語句,最終列印出good bye,并且退出while(1)這個循環。可能做純軟體的讀者會覺得我這裡的while(1)用的非常荒唐,再怎麼樣也要寫一個退出條件比較考究,但是在很多的裸機系統中,就是通過一個while(1)的大循環使晶片裡面的程式連續運作的。

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

圖3-8-11 按鍵字元判斷

(2)do……while循環

do……while語句,在一些書上也稱作do語句,它很像while語句,隻是它的運作條件判斷,要在循環體執行完一次之後再去判斷。是以,這種結構的循環體至少會被運作一次,下面是它的文法。

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

既然while和do……while的用法很相似,那我們如何在它們之間進行選擇呢?

當需要循環體至少執行一次的時候,選擇do。

比如,還是一個按鍵判斷的程式,當輸入的字元不為小寫字母“k”的時候,将這個數字列印出來,如果是小寫字母“k”就退出程式,列印出good bye。這個程式由于要求我們對輸入的第一個字元就需要判斷,是以在不用break和while(1)的情況下,我們可以直接使用do……while的形式來完成。其代碼如圖3-8-12所示。

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

圖3-8-12 字元判斷程式

(3)for循環

C語言中,for循環語句是while循環語句的一種簡化方法,for語句的一般形式為:

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

通過上幾小節的練習,我們發現一個規律,即有限次數的循環程式,一般都會定義一個控制循環次數的變量,而for循環語句中的表達式1為初始化部分,即我們可以對定義的這個控制循環次數變量進行初始化。表達式2為條件部分,當表達式2成立的時候(True,非0),for循環一直運作下去,一旦當表達式2的條件不滿足,則退出for循環。表達式3為調整部分,它在每一次循環體運作完成一遍之後,都會執行表達式3。與while循環一樣,在for語句中,也可以使用break語句和continue語句來中斷循環。

如我們需要找出1~1000中所有能被3整除的整數,除了圖3-8-10中用while循環的程式外,還可以用for語句來實作。如圖3-8-13所示。

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

圖3-8-13 for語句尋找能被3整除的數

圖3-8-13,for語句後面的三個表達式分别為:

初始條件:i = 1;

判斷條件:i <= 1000;

調整語句:i ++;這裡的i可以根據需求自行調節。

循環控制語句後面我們在實際使用中會頻繁用到,是以後面讓我們來慢慢探索。

java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...
java while語句列印三角形_【連載】(循環執行語句while和if)樂創DIY C語言講義——3.8節(3)...

繼續閱讀