第五章 迴圈結構

2021-08-23 14:24:58 字數 3261 閱讀 3563

第五章:迴圈結構

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符號個數 ...