第五章:迴圈結構
5.1while語句和呼叫while語句構成的迴圈結構
「當」迴圈:由while語句構成
形式:while(表示式)
迴圈體eg:k=0;
while(k<10)
說明:while是c語言的關鍵字。
while後一對圓括號中的表示式可以是c語言中任意合法的表示式,但不能為空,由它來控制迴圈是否執行。
在語法上。迴圈體只能是一條可執行語句,若迴圈體內有多個語句,應該使用復合語句。
5.1.2while迴圈的執行過程
過程:計算while後圓括號中表示式的值。當值為非0時,執行步驟(2);當值為0時,執行步驟(4)。
執行迴圈體一次。
轉去執行步驟(1)。
退出while迴圈。
由以上迴圈過程可知,while後圓括號表示式的值決定了迴圈是否將被執行。因此,進入while迴圈後,一定要有能使表示式的值變為0的操作,否則迴圈將會無限地執行下去,成為無限迴圈(死迴圈)。若此表示式不變,則迴圈體內應有在某種條件下強行終止迴圈的語句(break等)。
注意:while語句的迴圈可能一次都不執行,因此while後圓括號中的條件表示式可能一開始就為0。
不要把由if語句構成的分支結構與由while語句構成的迴圈結構混同在一起。若if後條件表示式的值為非0,其後的if子句只可能執行一次;而while後條件表示式的值為非0時,其後的迴圈體結構語句可能重複執行。在設計迴圈時,通常應在迴圈體內改變條件表示式中有關變數的值,使條件表示式的值最終變為0,以便能結束迴圈。
當迴圈需要無條件迴圈,條件表示式可以設為1(恆真),但在迴圈體內要有帶條件的非正常出口(break等)。
while語句一般用於事先並不知道迴圈次數的迴圈,例如通過控制精度等進行的計算可用while迴圈來實現。
5.2do-while語句和用do-while語句構成的迴圈結構
5.2.1do-while語句構成的迴圈結構
形式:do
迴圈體while(表示式);
eg:do
while(i<10);
說明:do是c語言的關鍵字,必須和while聯用。
do-while迴圈由do開始,至while結束。必須注意的是:在while(表示式)後的」;」不可丟,它表示do-while語句的結束。
while後一對圓括號中的表示式,可以是c語言中任意合法的表示式,由它控制迴圈是否執行。
按語法,在do和while之間的迴圈體只能是一條可執行語句。若迴圈體內需要多個語句,應該使用復合語句。
5.2.2do-while迴圈的執行過程
執行do後面迴圈體的語句。
計算while後一對圓括號中表示式的值,當值為非0時,轉去執行步驟(1);當值為0時,執行步驟(3)。
退出do-while迴圈
注意:(1)由do-while構成的迴圈與while迴圈十分相似,它們之間的重要區別是:
while迴圈的控制出現在迴圈之前,只有當while後面條件表示式的值為非0時,才可能執行迴圈體,因此在迴圈體內可能出現一次都不執行;
do-while構成的迴圈中,總是先執行一次迴圈體,然後再求條件表示式的值,因此,無論條件表示式的值是0還是非0,迴圈體至少要被執行一次。
do-while迴圈體中,一定要有能時while後表示式的值百年未0的操作,否則,迴圈將會無限制地進行下去,除去迴圈體中有帶條件的非正常出口(break等)。
5.3for語句和用for語句構成的迴圈結構
5.3.1for語句構成的迴圈結構
形式:for(表示式1;表示式2;表示式3)
迴圈體5.3.2for迴圈的執行過程
計算表示式1。
計算表示式2。若其值為非0,轉步驟(3);若其值為0,轉步驟(5)。
執行一次for迴圈體。
計算表示式3,轉向步驟(2)。
結束迴圈。
說明:for語句中的表示式可以部分或全部省略,但兩個」;」不可省略。
eg:for( ; ; ) printf(「*」);
三個表示式均省略,但因缺少條件判斷,迴圈將會無限制的執行,而形成無限迴圈(死迴圈)。
for後一對圓括號中的表示式可以是任意有效的c語言表示式
eg:for(sum=0,i=1;i<=100;sum=sum+i,i++)
表示式1和表示式3都是乙個逗號表示式。
5.4迴圈結構的巢狀
迴圈巢狀:在乙個迴圈體內又完整地包含了另乙個迴圈。
迴圈地巢狀可以多層,但每一層在邏輯上必須是完整地。
5.5 break和continue語句在迴圈體中的作用
5.5.1 break語句
用break語句可以使流程跳出switch語句體,也可用break語句在迴圈結構中終止本層迴圈體,從而提前結束本層迴圈。
說明:只能在迴圈體內和switch語句體內使用break語句。
當break出現在迴圈體中的switch語句體內時,其作用只是跳出該switch語句體,並不能中止迴圈體的執行。
若想強行中止迴圈體的執行,可以在迴圈體中,但並不在switch語句中設定break語句,滿足某種條件則跳出本層迴圈體。
5.5.2continue語句
continue語句的作用是跳過本次迴圈體中餘下執行的語句,立刻進行下一次的迴圈條件判定,可以理解為僅結束本次迴圈。
注意:執行continue語句並沒有使整個迴圈終止。
在while和do-while迴圈中,continue語句使得流程直接跳到迴圈控制條件的測試部分,然後決定迴圈是否繼續執行。
在for迴圈中,遇到continue後,跳過迴圈體中餘下的語句,而去對for語句中的「表示式3」求值,然後進行「表示式2」的條件測試,最後根據「表示式2」的值來決定for迴圈是否執行。
在迴圈體內,不論continue是作為何種語句中的語句成分,都將按上述功能執行,這點與break有所不同。
eg:#include
main()
k=k+s;
printf("i=%d,s=%d,k=%d\n",i,s,k); /*2#輸出語句*/}}
結果:i=1,s=1,k=1
i=2,s=3,k=4
****i=3,s=6,k=4
****i=4,s=10,k=4
****i=5,s=15,k=4
程式執行過程:
當i為1和2時,由於條件表示式s>5為假,不執行if子句,僅執行k=k+s;和2#輸出語句;執行第三次迴圈時,s的值也是6,這時表示式s>5的值為真,因此執行if分支中的1#輸出語句和continue語句,並跳過其後的k=k+s;語句和2#輸出語句;接著執行for後面括號中的i++,繼續執行下一次迴圈。由輸出結果可見,後面三次迴圈中k的值沒有改變。
第五章 迴圈結構程式設計
第五章 迴圈結構程式設計 三種迴圈語句 while 表示式 語句 其中的 語句 就是迴圈體。迴圈體只能是乙個語句,可以使乙個簡單的語句,還可以是復合語句。用花括號包起來的若干語句,如果不用花括號,則while語句的範圍知道while後面的第乙個分號處 只要當暈還條件表示式為真 即給定的條件成立 就執...
第五章 迴圈結構課後反思
1 for語句的一般形式 for 初值表示式 條件表示式 迴圈變數表示式 2 for語句的重要特徵1 while語句的一般形式 while 條件表示式 2 while語句的重要特徵 3 do while語句的一般形式 do while 條件表示式 4 do while語句的特徵 1 break語句既...
C語言 第五章 迴圈結構練習
一 計算15 16 17 98 99的和 for實現 n n您是否繼續運算 y n scanf c z fflush stdin while z y printf 歡迎下次光臨!n字母 d z printf n數字 d n字母個數 d z printf n數字個數 d s printf n符號個數 ...