




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第5章 循環結構程序設計 在實際工作中常常會遇到有一定規律的重復性操作: 比如輸入若干個學生的成績,對其求平均值; 又如對若干個數求和等; 許多問題的求解歸結為重復執行的操作,重復執行就是循環。 重復工作是計算機特別擅長工作之一。而重復執行,并不是簡單地重復,每次重復,操作的數據(狀態、條件)都可能發生變化。這就需要用到循環語句。 循環結構是結構化程序設計的基本結構之一,它和順序結構、選擇結構共同作為各種復雜程序的基本構造單元。循環結構的特點是,在給定條件成立時,反復執行某程序段,直到條件不成立為止。給定的條件稱為循環條件,反復執行的程序段稱為循環體。 C語言提供了多種循環語句,可以組成各種不
2、同形式的循環結構: while語句構成的 “當型循環”; do-while語句構成的 “直到型循環”; for語句構成的 “當型循環”; 用goto語句和if語句構成的循環;(僅了解)5.1 while語句(當型循環)語句(當型循環) while語句的一般形式是: while(表達式表達式)語句;語句; 或: while(表達式表達式) 語句序列;語句序列; 其中:表達式稱為“循環條件”,語句稱為“循環體”。 為便于初學者理解,可以讀做“當條件(循環條件)成立(為真),循環執行語句(循環體)”5.1.1 while循環的執行流程循環的執行流程 執行流程是:先計算while后面的表達式的值,如果
3、其值為“真”則執行循環體,在執行完循環體后,再次計算while后面的表達式的值,如果其值為“真”則繼續執行循環體,如果表達式的值為假,退出此循環結構。使用while語句需要注意以下幾點 while語句的特點是先計算表達式的值,然后根據表達式的值決定是否執行循環體中的語句。因此,如果表達式的值一開始就為“假”,那么循環體一次也不執行。 當循環體為多個語句組成,必須用 括起來,形成復合語句。 在循環體中應有使循環趨于結束的語句,以避免“死循環”的發生。 5.1.2 while循環案例循環案例 【案例5.1】編寫程序,計算1+2+3+100的和。 案例分析:這是一個典型的循環結構程序,定義兩個整型變
4、量,sum為累加和,i為加數,如果i小于或等于100,返回重新執行累加步驟;否則,循環結束。5.1.2 while循環案例循環案例 【案例5.2】編寫程序,輸出030間的偶數 案例分析:數據執行輸出工作,只需定義1個整型變量i,如果i能被2整除,則將其輸出,并返回重新執行循環;否則,循環結束。5.1.2 while循環案例循環案例 【案例5.3】求5個學生某一門課的平均成績。 案例分析:求平均值,首先要將幾個數據累加,設定變量n為計數器,sum為累加器,score為輸入成績變量,循環次數達到5次即能輸出結果。5.2 do-while語句(直到型循環)語句(直到型循環) do-while語句的一
5、般形式是: do 語句序列;語句序列; while(表達式表達式); 其中:表達式稱為“循環條件”,語句稱為“循環體”。 為便于初學者理解,可以讀做:“執行語句,當循環條件成立(為真)時,繼續循環”。5.2.1 do-while語句的執行流程語句的執行流程 while循環的執行流程是: 執行do后面循環體語句。 計算while后面的表達式的值,如果其值為“真”則繼續執行循環體,如果表達式的值為假,退出此循環結構。 說明: do-while循環,總是先執行一次循環體,然后再求表達式的值,因此,無論表達式是否為“真”,循環體至少執行一次。 do-while循環與while循環十分相似,它們的主要區
6、別是:while循環先判斷循環條件再執行循環體,循環體可能一次也不執行。do-while循環先執行循環體,再判斷循環條件,循環體至少執行一次。 其它:復合語句 ,避免死循環要求同while循環。 5.2.1 do-while語句的執行流程語句的執行流程5.2.2 do-while循環案例循環案例 【案例5.4】利用do-while語句計算1+1/2+1/4+1/50的和。 案例分析:參與運算的數中,除了第一項以外,每一項的分母是遞增變化的偶數,可以使用循環語句實現,sum為累加器,i為描述分母變化的變量。 【案例5.5】求n個學生某門課的平均成績。 案例分析:求平均值,仍然是將幾個數據累加,設
7、定變量n為計數器,sum為累加器,score為輸入成績變量,循環次數無特別規定,此時要設定一個終止循環的條件,本題改進了案例5.3的算法,在設定輸入值為非負數的情況下,執行循環,否則終止循環。5.2.2 do-while循環案例循環案例5.3 for語句(當型循環)語句(當型循環) for語句的一般形式是: for(表達式表達式1;表達式表達式2;表達式表達式3) 循環體語句循環體語句 for是關鍵詞,其后有3個表達式,各個表達式用“; ”分隔。3個表達式可以是任意的表達式,通常主要用于for循環控制。5.3.1 for循環的執行流程循環的執行流程 for循環執行流程如下: 計算表達式1。 計
8、算表達式2,若其值為非0(循環條件成立),則轉3執行循環體;若其值為0(循環條件不成立),則結束循環。 執行循環體。 計算表達式3,然后轉2判斷循環條件是否成立。 結束循環,執行for循環之后的語句。 5.3.2 for循環案例循環案例 【案例5.6】求正整數n的階乘n!,其中n由用戶輸入。 案例分析:由公式n!=1*2*3*4*n分析得出,至少設定三個變量,fact為連乘積,i為參與階乘的項,n為用戶輸入的值,也代表循環次數。 【案例5.7】求Fibonacci數列的前20個數。 案例分析:這是一個古典數學中的“兔子數量”問題。這個數列被稱為斐波那契數列,它的第一、二個數為1、1,從第三個數
9、開始,每個數是它前面的兩個數之和,由此至少設定三個變量,其中f1、f2為數列的前兩個數,而變量i表示循環執行的次數,每次執行加法運算后,都要輸出兩個數,共執行10次,輸出前20個數。 5.3.2 for循環案例循環案例5.4幾種循環的比較幾種循環的比較 從前面的循環結構的語法和例子的介紹,我們可以看出循環結構由4部分組成: 循環變量、條件(狀態)的初始化 循環變量、條件(狀態)檢查,以確認是否進行循環 循環變量、條件(狀態)的修改,使循環趨于結束 循環體處理的其它工作。5.4.1 比比 較較C語言中,三種循環結構(不考慮用if/goto構成的循環)都可以用來處理同一個問題,但在具體使用時存在一
10、些細微的差別。如果不考慮可讀性,一般情況下它們可以相互代替。 循環變量初始化循環變量初始化:while和do-while循環,循環變量初始化應該在while和do-while語句之前完成;而for循環,循環變量的初始化可以在表達式1中完成。 循環條件循環條件:while和do-while循環只在while后面指定循環條件;而for循環可以在表達式2中指定。 循環變量修改使循環趨向結束循環變量修改使循環趨向結束:while和do-while循環要在循環體內包含使循環趨于結束的操作;for循環可以在表達式3中完成。 for循環可以省略循環體,將部分操作放到表達式2,表達式3中,for語句功能強大。
11、 5.4.1 比比 較較 while和for循環先測試表達式,后執行循環體,而do-while是先執行循環體,再判斷表達式。(所以while,for循環是典型的當型循環,而do-while循環可以看作是直到型循環)。 三種基本循環結構一般可以相互替代,不能說哪種更加優越。具體使用哪一種結構依賴于程序的可讀性和程序設計者個人偏好。我們應當盡量選擇恰當的循環結構,使程序更加容易理解。5.4.1 比比 較較5.4.2 案案 例例 【案例5.8】用三種循環結構實現: 輸出80100之間能被3整除的數。5.5 循環的嵌套循環的嵌套 一個循環體內又包含另一個完整的循環結構稱為循環的嵌套。內嵌的循環中還可以
12、嵌套循環,這就是多層循環。 三種循環(while循環、do-while循環和for循環)可以互相嵌套。下面幾種都是合法的形式1)1)while( ) while( ) while( ) while( ) 2 2) do do do do while( ); while( ); while( ); while( );(3) (3) for(;) for(;) for( ; ; ) for( ; ; ) 4) while( ) dowhile( ); 5) for(;) while( ) 6) do for( ; ; ) while( );案 例 【案例5.9】用for循環結構實現99乘法表的輸出
13、。 案例分析:這是一個典型實例,設定兩個整型變量i,j,分別代表行數和列數,在行列數不斷遞增的同時,每一行的乘積也跟這兩個變量的變化有關。 【案例5.10】求所有的水仙花數。 案例分析:所謂水仙花數,是一個三位整數,其各位數字的立方和等于該數本身,如153=13+ 53 + 33。案 例5.6 break語句和語句和continue語句語句 5.6.1 釋義釋義 1.break語句:語句: break語句可以用來從循環體內跳出循環體,即提前結束循環,接著執行循環下面的語句 一般形式: break ; 注意:break語句不能用于循環語句和switch語句之外的任何其他語句中。 5.6.1 釋義
14、釋義 2.continue語句語句 作用為結束本次循環,即跳過循環體中下面尚未執行的語句,接著進行下一次是否執行循環的判定. 一般形式: continue ;5.6.2 二者的區別二者的區別 continue語句和break語句的區別: continue語句只結束本次循環,意為:繼續下次循環,而不是終止整個循環的執行。 while(表達式表達式1) for if(表達式表達式2) continue; break語句則是結束整個循環過程,不再判斷執行循環的條件是否成立。 while(表達式表達式1) for if(表達式表達式2) break; 5.6.2 二者的區別二者的區別案例 【案例5.11】計算半徑從1到10時圓的面積,直到面積大于100為止(break語
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機器設備租賃合同
- 酒店宴會廳租賃協議
- 2025年度金融公司合同保密協議模板
- 山西同文職業技術學院《醫學信息收集與信息處理》2023-2024學年第一學期期末試卷
- 邵陽工業職業技術學院《電路原理B》2023-2024學年第二學期期末試卷
- 物流司機雇傭合同
- 吉林省長春市“BEST合作體”2025屆高三第九次適應性考試英語試題含解析
- 佳木斯市東風區2024-2025學年五年級數學第二學期期末統考試題含答案
- 山東體育學院《網絡文學》2023-2024學年第二學期期末試卷
- 四川省自貢市富順縣2024-2025學年第二學期初三年級一模考試數學試題試卷含解析
- 慢性腎臟病健康宣教
- 幼兒詩歌《家》課件
- 2024年4月自考00043經濟法概論(財經類)試題
- 備孕知識講座課件
- 腹瀉便秘課件
- 《開胸心臟按壓技術》課件
- 標準儀表進場程序課程設計
- 麻醉科臨床診療指南2020版
- 餐券模板完整
- 燃氣管道保護辦法
- 全國水利ABC證單選題五
評論
0/150
提交評論