回覆列表
-
1 # IT劉小虎
-
2 # 村中少年
1,一共三種迴圈。while,do while,for
2,break跳出本層迴圈,本層迴圈剩下的迴圈不再執行。continue忽略本次迴圈後續的語句,執行本層迴圈的下一次迴圈。
1,一共三種迴圈。while,do while,for
2,break跳出本層迴圈,本層迴圈剩下的迴圈不再執行。continue忽略本次迴圈後續的語句,執行本層迴圈的下一次迴圈。
C語言為了方便的讓計算機執行很多次數的迭代運算,提供了迴圈語句,我的上一個回答較為詳細的介紹了while迴圈語句,以及它與遞迴之間的關係。
的確,C語言還提供了其他兩種迴圈語句,供不同的使用環境,和不同使用習慣的程式設計師使用。此外,C 語言還提供了 break 和 continue 關鍵字用於控制迴圈。下面將一一介紹。
先來說說C語言的 break 和 continue 關鍵字break 和 continue 關鍵字的區別還是挺大的,它們的功能是不同的。當C語言程式的迴圈語句遇到 break 時,直接跳出整個迴圈體,而遇到 continue 時,則結束本次迴圈,開始一次新的迴圈。這麼說有點虛,還是來看幾個例子吧:
以上程式碼,while(1) 本應是個死迴圈,按理說,程式應該永遠停在 while 迴圈語句裡了。但是在 cnt 等於 3 的時候,C語言程式遇到 break,於是跳出迴圈體, printf() 將不再被執行。再來看看 continue 關鍵字:
程式碼很簡單,就是把 cnt 依次從 0 加一加到 4,然後打印出它的值。程式最後輸出:”1, 3, 4, “,少了 2 對不?
這是因為在 cnt 等於 2 的時候,直接就結束本次迴圈,跳到迴圈體開頭的條件表示式了,也即 cnt 等於 2 的時候,printf() 語句被跳過了。
現在應該理解“當迴圈語句遇到 break 時,直接跳出整個迴圈體,而遇到 continue 時,則結束本次迴圈,開始一次新的迴圈。” 這句話了。
題主應注意“整個”和“本次”這兩個詞。另外要說明的是,break 和 continue 應作為獨立的語句,要用 ;結尾。
現在明白了C語言迴圈控制關鍵字 break 和 continue 的功能和區別了,再來看看另外兩種迴圈語句:do/while 迴圈語句,和 for 迴圈語句。
C語言的 do/while 迴圈語句do/while 迴圈語句和 while 迴圈語句非常像,只是 do/while 迴圈語句把條件表示式放在後面,它的語法如下:
do{ 語句;}while(條件表示式);程式遇到 do/while 迴圈語句後,會先執行迴圈體裡的語句,到末尾才判斷條件表示式真假決定是否迴圈。
說到這裡,就看出它與 while 迴圈語句的區別了:如果條件表示式為假,while 迴圈直接就被跳過了,不會執行;而 do/while 迴圈語句則至少執行一次迴圈。例如:
編譯執行後,程式會輸出 “do while”。使用 do/while 語句要注意的事項和 while 語句一致,只是還要確保 do/while 語句的最後 while後一定要有“;”,否則編譯器無法判斷這是一個do/while迴圈的結尾還是另一個while迴圈的開頭。
再來說說C語言的 for 迴圈先看看 for 迴圈的結構:
for(控制表示式1;控制表示式2;控制表示式3) 語句如果不考慮 continue(為什麼呢,可以思考一下) ,則 for 迴圈等價於下面的 while 迴圈:
控制表示式1;while(控制表示式2) { 語句 控制表示式3;}下面用 for 迴圈來計算 n!,請看如下C語言程式碼:
題主可點我主頁,檢視我上一個回答中使用 while 迴圈語句計算n! 的C語言程式碼,對比和理解二者之間的差異。++i 的作用和 i+1; i=i+1; 一樣,如果 i = 0,那麼執行 a = ++i; 語句後,a 等於 1,i 也等於 1。類似還有 –i,表示自減。
現在來分析一下 for 語句:“i=1”,表示 for 迴圈體裡的 i 從 1 開始;“i<=n”,表示如果 i<=n 為真,則迴圈,否則跳出迴圈;++i 表示每執行一次迴圈,就把 i 加一。
到這裡,相信題主已經知道 C 語言迴圈語句一大家子和它的管家們(break,continue)了吧,要理解它們的區別其實很簡單,只要把各個語句的功能和機制徹底弄懂,應該明白,C語言是一門極其重視基本功的程式語言。