官术网_书友最值得收藏!

3.3 循環結構程序設計

學習目標

1)掌握循環結構的內涵。

2)掌握while循環語句的結構和應用。

3)掌握循環結構程序中break和continue語句的用法。

4)掌握for循環語句結構的內涵。

5)掌握for循環語句的結構和執行過程。

6)掌握do-while循環語句結構的內涵。

7)掌握do-while循環語句的結構和執行過程。

8)掌握循環結構程序中break和continue語句的用法。

實例15

實例15 while循環語句——求1+2+…+100的值

實例任務

用while語句求1+2+3+…+100的值。程序運行結果如圖3-14所示。

圖3-14 程序運行結果

程序代碼

相關知識

1.循環結構程序設計

循環結構是結構程序的3種基本結構之一,它和順序結構、選擇結構共同作為各種復雜程序的基本構造單元。循環結構的特點是:在給定條件成立時,反復執行某程序段,直到條件不成立為止。給定的條件稱為循環條件,反復執行的程序段稱為循環體。C語言的循環體語句有while語句、do-while語句、for語句。

2.while語句

while語句用于實現“當”型循環結構。其一般形式如下:

其執行過程是當表達式為非0值時,執行循環體。循環體內語句可以是空語句,可以是一條語句,可以是多條語句。如果為空語句或一條語句,可略去{}。

循環執行過程中,如果參與表達式判斷的變量值不能改變,則循環不會結束,稱為死循環。

課堂精練

1)統計從鍵盤輸入的一系列字符的個數。程序運行結果如圖3-15所示。

圖3-15 程序運行結果(1)

根據程序運行結果,請將下面的程序補充完整并調試。

2)求n!的值。程序運行結果如圖3-16所示。

圖3-16 程序運行結果(2)

根據程序運行結果,請將下面的程序補充完整并調試。

實例16

實例16 for循環語句——統計大寫字母和小寫字母的個數

實例任務

編寫一個程序,用于接收用戶輸入的10個字符,統計其中大寫字母和小寫字母的個數,并比較大寫字母與小寫字母的個數,顯示相應的消息。程序運行結果如圖3-17所示。

圖3-17 程序運行結果

程序代碼

相關知識

1.for語句

for語句是C語言中最靈活、功能最強的循環語句。它不僅可以用于循環次數已經確定的情況,而且可以用于循環次數不確定而只給出循環結束條件的情況。for語句完全可以代替while語句。for語句的一般形式為:

for語句的執行過程是:運行之初先求解表達式1,然后進行表達式2的條件判斷,如果條件成立,則執行循環體,如果條件不成立,則退出循環。在執行循環體后,再計算表達式3,之后轉去執行表達式2的條件判斷,如果成立,繼續執行循環體,否則退出循環。首次執行循環體后,按計算表達式3、判斷表達式2的順序循環執行,直到條件不成立為止,結束循環。

2.表達式說明

表達式1通常用來給循環變量賦初值,一般是賦值表達式。也可以在for語句外給循環變量賦初值,此時可以省略該表達式。表達式1在整個循環過程中只執行一次。

表達式2通常是循環條件,一般為關系表達式或邏輯表達式。

表達式3通常可以用來修改循環變量的值,一般是賦值語句。如果想省略表達式3,可以把相應語句放到循環體中完成。

這3個表達式都可以是逗號表達式,即每個表達式都可以由多個表達式組成。3個表達式都是任選項,都可以省略。但要注意,在省略表達式的同時,兩個分號必須保留,因為語句要求用兩個分號將3個表達式分開。如以下語句:

3.for語句中的逗號表達式

逗號運算符的主要應用就在for語句中。表達式1和表達式3常為逗號表達式,求解它們時可完成多個表達式(往往為賦值表達式、自增自減表達式)的一次求值。如下列表示方式:

從上面幾種表達方式可以看出,C語言中的for語句功能強大。可以把循環體和一些與循環控制無關的操作也作為表達式1或表達式3出現,這樣程序可以短小簡潔。但過分地利用這一特點會使for語句顯得雜亂,可讀性降低,建議不要把與循環控制無關的內容放到for語句中。

課堂精練

1)把100~200之間的整數中不能被3整除的數輸出,要求每行輸出5個,最后1行除外。程序運行結果如圖3-18所示。

圖3-18 程序運行結果(1)

根據程序運行結果,請將下面的程序補充完整并調試。

2)判斷一個整數是否為素數(素數是指只能被1和它本身整除的數)。判斷方法是看m能否被之間的整數整除,即如果m不能被中的任何一個整數整除,則m是素數;只要m能被中的某一個整數整除,則m為非素數。程序運行結果如圖3-19所示。

圖3-19 程序運行結果(2)

根據程序的運行結果,請將下面程序補充完整并調試。

實例17

實例17 do-while循環語句——求1+2+…+100和12+22+…+302的值

實例任務

用do-while語句求s1=1+2+3+…+100和s2=12+22+32+…+302的值。程序運行結果如圖3-20所示。

圖3-20 程序運行結果

程序代碼

相關知識

1.do-while語句

do-while語句的特點是先執行循環體,然后判斷循環條件是否成立。其一般形式為:

其執行過程是先執行一次指定的循環體語句,然后進行條件判斷,也就是先計算表達式的值,當表達式的值為非零(“真”)時,返回重新執行循環體語句。如此反復,直到表達式的值等于0為止,此時循環結束。

2.while語句和do-while語句的區別

while語句執行時,先進行條件判斷,條件成立的情況下才執行循環體。do-while語句是先執行一次循環體,再進行條件判斷,直到表達式不成立時終止循環。

3.break語句和continue語句

在switch語句中,可用break語句終止switch語句的執行以跳出該switch語句。同樣,在3種循環語句中可用break語句終止該循環語句的執行而跳出,它的一般形式是:

continue語句用于結束本次循環,即跳過循環體中在continue語句后面的尚未執行的其他語句,而執行下一次循環,它的一般形式是:

課堂精練

1)求s=1+2+3+…+100的值。程序運行結果如圖3-21所示。

圖3-21 程序運行結果(1)

根據程序運行結果,請將下面的程序補充完整并調試。

2)求s=1+1/2+1/4+…+1/50的值。程序運行結果如圖3-22所示。

圖3-22 程序運行結果(2)

根據程序運行結果,請將下面的程序補充完整并調試。

實例18

實例18 循環的嵌套結構——百錢買百雞問題

實例任務

中國古代數學家張丘建在他的《算經》中提出了著名的“百錢百雞問題”:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,翁、母、雛各幾何?編寫程序解決此問題,程序運行結果如圖3-23所示。

圖3-23 程序運行結果

程序代碼

相關知識

1.循環嵌套

在一個循環體內又完整地包含了另一個循環,稱為循環嵌套。前面介紹的3種類型的循環都可以互相嵌套,循環的嵌套可以是多層的,但每一層循環在邏輯上必須是完整的。在編寫程序時,循環嵌套的書寫要采用縮進的形式,如本實例程序中所示,內循環中的語句應該比外循環中的語句有規律地向右縮進2~4列,這樣編寫的程序層次分明,易于閱讀。

2.百錢買百雞問題解析

百錢買百雞是一道用C語言程序解決數學方程運算問題的典型試題,用到了程序中的典型方法——窮舉法。假設xyz分別為雞翁、雞母、雞雛的只數,依題意可得出聯立方程組如下:

3個未知數,只有兩個方程式,所以xyz可能有多組解,因此,可用“窮舉法”列舉xyz可能滿足要求的組合,最后把符合上述兩個方程的xyz的值輸出。

課堂精練

1)輸出一個空心菱形圖案,程序運行結果如圖3-24所示。

根據程序運行結果,請將下面的程序補充完整并調試。

圖3-24 程序運行結果(1)

2)輸出九九乘法表,程序運行結果如圖3-25所示。

圖3-25 程序運行結果(2)

根據程序運行結果,請將下面的程序補充完整并調試。

主站蜘蛛池模板: 疏勒县| 邵武市| 花垣县| 保亭| 洪洞县| 武义县| 东海县| 北辰区| 望都县| 三都| 崇左市| 沈丘县| 临洮县| 澄江县| 西和县| 绥宁县| 珲春市| 介休市| 蒙山县| 浦江县| 云安县| 漠河县| 饶平县| 沽源县| 新巴尔虎左旗| 西乌珠穆沁旗| 楚雄市| 永靖县| 吴忠市| 射阳县| 武汉市| 银川市| 青河县| 娱乐| 定襄县| 诏安县| 新郑市| 绥德县| 南投市| 云林县| 淳化县|