第5章__循環(huán)結(jié)構(gòu).ppt_第1頁
第5章__循環(huán)結(jié)構(gòu).ppt_第2頁
第5章__循環(huán)結(jié)構(gòu).ppt_第3頁
第5章__循環(huán)結(jié)構(gòu).ppt_第4頁
第5章__循環(huán)結(jié)構(gòu).ppt_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第5章循環(huán)結(jié)構(gòu) 本章要點 5 1while語句和用while語句構(gòu)成的循環(huán)結(jié)構(gòu)5 2do while語句和用do while語句構(gòu)成的循環(huán)結(jié)構(gòu)5 3for語句和用for語句構(gòu)成的循環(huán)結(jié)構(gòu)5 4循環(huán)結(jié)構(gòu)的嵌套5 5break和continue語句在循環(huán)體中的作用5 6程序舉例 5 1 1while循環(huán)的一般形式 由while語句構(gòu)成的循環(huán)也稱 當(dāng) 循環(huán) While語句的一般形式為 While 表達(dá)式 循環(huán)語句 以下是幾點說明 1 while是C語言的關(guān)鍵字 2 while后的表達(dá)式 可以是C語言中任意合法的表達(dá)式 通常為關(guān)系表達(dá)式或邏輯表達(dá)式 但也可以是其他運算表達(dá)式 當(dāng)表達(dá)式的值為零時 表示條件為假 非零時 表示條件為真 3 循環(huán)體可以是一條簡單可執(zhí)行語句 也可以是復(fù)合語句 4 如果第一次計算時表達(dá)式的值就為0 則循環(huán)語句一次也不被執(zhí)行 流程直接跳過While語句 執(zhí)行下一條語句 重點提示 while型循環(huán)語句中循環(huán)體的執(zhí)行次數(shù)可以從0到無窮 若第一次計算表達(dá)式的值為0 則循環(huán)體執(zhí)行0次 若表達(dá)式恒為真 則陷入死循環(huán) 5 1 2while循環(huán)的執(zhí)行過程while循環(huán)的執(zhí)行過程是 計算while后表達(dá)式的值 當(dāng)值為非零時 執(zhí)行循環(huán)體中的語句 當(dāng)值為零時 退出while循環(huán) 注意 進(jìn)入while循環(huán)后 一定要有能使此表達(dá)式的值變?yōu)?的操作 否則 循環(huán)將會無限制的進(jìn)行下去 即進(jìn)入死循環(huán) 在程序設(shè)計中 這個是不允許出現(xiàn)的 例如 計算1 2 3 100 main inti sum 0 i 1 while i 100 sum i i printf d n sum 程序運行結(jié)果為 5050 1 循環(huán)語句中 sum i 相當(dāng)于 sum sum i 建議讀者采用前一種寫法 因為它不僅比后一種寫法編碼短 而且更能體現(xiàn)C語言的特色 2 注意 在循環(huán)體中應(yīng)有使循環(huán)趨于結(jié)束的語句 例如 本例中的 i 每循環(huán)一次i的值就增加1 當(dāng)i 100時 循環(huán)條件就不滿足 循環(huán)到此結(jié)束 如果無此語句 則i的值一直不變 循環(huán)永不結(jié)束 這就稱為 死循環(huán) 在程序設(shè)計中 是不允許死循環(huán)出現(xiàn)的 重點提示 在循環(huán)體中應(yīng)有使循環(huán)趨于結(jié)束的語句 在程序設(shè)計中 是不允許死循環(huán)出現(xiàn)的 5 2do while語句和用do while語句構(gòu)成的循環(huán)結(jié)構(gòu)5 2 1do while語句構(gòu)成的循環(huán)結(jié)構(gòu)do while是另一種循環(huán)結(jié)構(gòu) 它的一般形式為 do循環(huán)語句 while 表達(dá)式 以下是幾點說明 1 do是C語言的關(guān)鍵字 必須和while聯(lián)合使用 2 在while 表達(dá)式 后的分號 不可丟 它表示do while語句的結(jié)束 3 while后括號中的表達(dá)式可以是任意合法的表達(dá)式 由它來控制循環(huán)是否執(zhí)行 4 do while之間的循環(huán)體可以是一條可執(zhí)行語句也可以是由 構(gòu)成的符合語句 5 2 2do while循環(huán)的執(zhí)行過程do while語句的執(zhí)行過程是 先執(zhí)行一次指定的循環(huán)語句 然后判斷表達(dá)式的值 若表達(dá)式的值為非0 再返回重新執(zhí)行循環(huán)語句 如此重復(fù) 直到表達(dá)式的值為0時才跳出循環(huán)語句 執(zhí)行下一條語句 若表達(dá)式的值為0 則不再返回重新執(zhí)行循環(huán)語句 直接退出循環(huán)語句 執(zhí)行下一條語句 如圖5 1 b 所示 dowhile語句的特點是 先執(zhí)行語句 后判斷表達(dá)式的值 故doWhile語句又稱 直到型 循環(huán)結(jié)構(gòu) 由于是先執(zhí)行后判斷 因此dowhile語句的循環(huán)語句至少被執(zhí)行一次 注意 while圓括號后面有一個分號 書寫時不能丟 例如 用dowhile循環(huán)結(jié)構(gòu)來計算1 2 3 100 main inti sum 0 i 1 do sum i i while i 100 printf d n sum 程序運行結(jié)果為 5050 可以看出 此例的結(jié)果與上節(jié)的例程結(jié)果是完全相同的 也就是說 對同一問題既可以用while語句來處理 也可用dowhile語句來處理 在一般情況下 用while語句和dowhile語句處理同一問題時 若二者的循環(huán)體一樣 運行結(jié)果也就一樣 但當(dāng)while后面表達(dá)式的值一開始就為0時 兩種循環(huán)結(jié)構(gòu)的結(jié)果是不相同的 重點提示 do while語句先執(zhí)行語句 后判斷表達(dá)式的值 故do while語句又稱 直到型 循環(huán)結(jié)構(gòu) 由于是先執(zhí)行后判斷 因此do while語句的循環(huán)語句至少被執(zhí)行一次 5 3for語句和用for語句構(gòu)成的循環(huán)結(jié)構(gòu)5 3 1for語句構(gòu)成的循環(huán)結(jié)構(gòu)for語句的一般形式為 for 表達(dá)式1 表達(dá)式2 表達(dá)式3 循環(huán)語句 以下是幾點說明 1 表達(dá)式1一般為賦值表達(dá)式 用于進(jìn)入循環(huán)之前給循環(huán)變量賦初值 2 表達(dá)式2一般為關(guān)系表達(dá)式或邏輯表達(dá)式 用于執(zhí)行循環(huán)的條件判定 它與while dowhile循環(huán)中的表達(dá)式作用完全相同 3 表達(dá)式3一般為賦值表達(dá)式或自增 自減表達(dá)式 用于修改循環(huán)變量的值 for循環(huán)結(jié)構(gòu)是幾乎所有高級語言都提供的循環(huán)控制結(jié)構(gòu) 但C語言中的for語句使用最為靈活 它不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況 而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況 因而它完全可以代替while語句和dowhile語句 重點提示 表達(dá)式1 表達(dá)式2 表達(dá)式3都必須為for語句規(guī)定的合法的表達(dá)式 for語句的執(zhí)行過程是 先計算表達(dá)式1的值 再計算表達(dá)式2的值 若其值為真 則執(zhí)行循環(huán)體一次 否則跳轉(zhuǎn)第 步 然后計算表達(dá)式3的值 轉(zhuǎn)回上面第 步 結(jié)束循環(huán) 執(zhí)行for語句下面一個語句 5 3 2for循環(huán)執(zhí)行過程 圖5 2for語句的執(zhí)行流程圖 重點提示 在整個for語句中 表達(dá)式1只計算一次 表達(dá)式2和表達(dá)式3則可能計算多次 循環(huán)體可能多次執(zhí)行 也可能一次都不執(zhí)行 5 3 3有關(guān)for語句的說明 1 for語句的一般形式中的 表達(dá)式1 可以省略 即 for 表達(dá)式2 表達(dá)式3 循環(huán)語句 但注意省略表達(dá)式1時 其后的分號不能省略 此時 應(yīng)在for語句之前給循環(huán)變量賦初值 2 如果省略表達(dá)式2 即 for 表達(dá)式1 表達(dá)式3 循環(huán)語句 則表示表達(dá)式2的值始終為真 循環(huán)將無終止地進(jìn)行下去 例如 for i 1 i printf d i 將無限循環(huán)輸出1 2 3 4 5 6 3 如果省略表達(dá)式3 即 for 表達(dá)式1 表達(dá)式2 循環(huán)語句 此時 也將產(chǎn)生一個無窮循環(huán) 因此 程序設(shè)計者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束 可以將循環(huán)變量的修改部分 即表達(dá)式3 放在循環(huán)語句中控制 例如 for i 1 i 100 sum i i 上述for語句中沒有表達(dá)式3 而是將表達(dá)式3 i 放在循環(huán)語句中 作用相同 都能使用循環(huán)正常結(jié)束 注意表達(dá)式2后面的分號不能省略 4 也可以同時省略表達(dá)式1和表達(dá)式3 即 for 表達(dá)式2 循環(huán)語句 也即省略了循環(huán)的初值和循環(huán)變量的修改部分 此時完全等價于while語句 5 同時省略表達(dá)式1 表達(dá)式2和表達(dá)式3 即 for 循環(huán)語句 相當(dāng)于賦循環(huán)變量的初值 循環(huán)控制條件始終為真 不修改循環(huán)變量 故循環(huán)將無終止地進(jìn)行下去 6 在for語句中 表達(dá)式1和表達(dá)式3不僅可以使用簡單表達(dá)式 也可以使用逗號表達(dá)式 即包含一個以上的簡單表達(dá)式 中間用逗號間隔 在逗號表達(dá)式內(nèi)按自左至右求解 整個表達(dá)式的值為其中最右邊的表達(dá)式的值 例如 for i 1 i 100 i sum sum i 相當(dāng)于for i 1 i 100 i sum sum i 7 在for語句中 表達(dá)式一般為關(guān)系表達(dá)式或邏輯表達(dá)式 但也可以是其他表達(dá)式 如字符表達(dá)式 數(shù)值表達(dá)式 8 for語句的循環(huán)語句可以是空語句 空語句用來實現(xiàn)延時 即在程序執(zhí)行中等待一定的時間 如下為延時程序的例子 for i 1 i 1000 i 注意以上語句最后的分號不能省略 它代表一個空語句 例如 用for循環(huán)結(jié)構(gòu)來計算1 2 3 100 main inti sum 0 for i 1 i 100 i sum i printf d n sum 程序運行結(jié)果為 5050 可以看出 此例的結(jié)果前兩例是完全相同的 顯然 用for語句簡單 方便 重點提示 for語句中的表達(dá)式可以部分或全部省略 但兩個分號不能省略 且三個表達(dá)式均省略時 循環(huán)將會無限制執(zhí)行 而形成死循環(huán) 因此 編寫程序時 在for后面的一對圓括號內(nèi) 應(yīng)只含有能對循環(huán)進(jìn)行控制的表達(dá)式 其它的操作盡量放在循環(huán)體內(nèi)完成 5 4循環(huán)結(jié)構(gòu)的嵌套1 循環(huán)嵌套的形式在一個循環(huán)體內(nèi)又完整地包含了另一個循環(huán) 稱為循環(huán)嵌套 循環(huán)的嵌套可以是多層 但每一層循環(huán)在邏輯上必須是完整的 例如以下幾種形式的二重嵌套 while與while二重嵌套 while while dowhile與dowhile二重嵌套do do while while for與for二重嵌套for for while與while二重嵌套 2 關(guān)于循環(huán)嵌套的幾點說明 1 三種循環(huán)語句不僅各自可以嵌套 而且還可以互相嵌套 例如 while與dowhile二重嵌套while do while while與for二重嵌套while for dowhile與for二重嵌套do for while 2 使用嵌套時 應(yīng)注意一個循環(huán)結(jié)構(gòu)應(yīng)完整地嵌套在另一個循環(huán)體內(nèi) 不允許循環(huán)體間交叉 例如以下循環(huán)結(jié)構(gòu)是不正確的 while do while 3 除了上述二重嵌套外 還可以有三重嵌套 四重嵌套等多層嵌套 4 嵌套的外循環(huán)和內(nèi)循環(huán)的循環(huán)控制變量不得同名 但并列的內(nèi) 外循環(huán)允許有同名的循環(huán)控制變量 例如以下為合法的循環(huán)結(jié)構(gòu) for j 1 j 10 j for i 1 i 10 i for i 1 i 10 i 3 循環(huán)嵌套程序舉例利用雙層for循環(huán)結(jié)構(gòu)打印出9 9乘法表 main inti j for i 1 i 10 i printf 5d i printf n for i 1 i 46 i printf printf n for i 1 i 10 i for j 1 j 9 j printf 5d i j printf n 程序運行結(jié)果為 123456789 1234567892468101214161836912151821242748121620242832365101520253035404561218243036424854714212835424956638162432404856647291827364554637281 1 第4 5行和第7 8行為兩個并列的for循環(huán)結(jié)構(gòu) 作用是輸出運行結(jié)果的第1行和第2行 2 第6行和第9行的 printf n 語句作用是輸出一行后進(jìn)行換行處理 3 第10 14行為二重嵌套for循環(huán)結(jié)構(gòu) 作用是打印乘法表 其中第14行的作用是每次退出內(nèi)循環(huán)之時 即每次輸出一行完畢后進(jìn)行換行處理 重點提示 在循環(huán)嵌套中 內(nèi)嵌的第一個for循環(huán)的結(jié)束條件和外循環(huán)的控制變量是有關(guān)的 而最里面的for循環(huán)的循環(huán)結(jié)束條件是固定不變的 5 5break和continue語句在循環(huán)體中的作用5 5 1break語句在第四章中我們介紹過 使用break語句可以使流程跳出switch語句體 在循環(huán)結(jié)構(gòu)中 也可以使用break語句使流程跳出本層循環(huán)體 從而提前結(jié)束本層循環(huán) break語句的一般形式為 break 關(guān)于break語句有以下幾點說明 1 break語句不能用于循環(huán)語句和switch語句之外的任何其他語句中 2 break語句只能用于循環(huán)體內(nèi) 不能用在循環(huán)語句上 如for i 1 i 10 break i 是不正確的 3 break語句只能跳出一層循環(huán) 即從當(dāng)前循環(huán)層中跳出 如果要跳出多層循環(huán) 可使用goto語句 例如 設(shè)計一個程序 求能同時滿足除以3余1 除以5余3 除以7余5 除以9余7的最小正整數(shù) main inti for i 1 i if i 3 1 程序運行結(jié)果為 313由于此題無法確定循環(huán)的條件和循環(huán)次數(shù) 因此應(yīng)采用無限循環(huán)配以break語句的方法 重點提示 當(dāng)break語句出現(xiàn)在循環(huán)體中的switch語句體內(nèi)時 其作用只是跳出該switch語句體 當(dāng)break語句出現(xiàn)在循環(huán)體中 但并不在switch語句體內(nèi)時 則在執(zhí)行break后 跳出本層循環(huán) 5 5 2continue語句1 continue語句的一般形式continue語句的作用是結(jié)束本次循環(huán) 即不再執(zhí)行循環(huán)體中continue語句之后的語句 而是跳轉(zhuǎn)到循環(huán)的開始處 進(jìn)行下一次是否執(zhí)行循環(huán)的判定 它的一般形式為 continue 2 關(guān)于continue語句的幾點說明 1 continue語句只是結(jié)束循環(huán)結(jié)構(gòu)中的本次循環(huán) 并非跳出整個循環(huán)過程 具體說 對while和do while語句 遇continue語句后 轉(zhuǎn)向執(zhí)行while之后圓括號內(nèi)的條件表達(dá)式的判斷 對for語句 遇continue語句后 轉(zhuǎn)向執(zhí)行表達(dá)式3 2 執(zhí)行continue語句并沒有使整個循環(huán)終止 3 continue語句與break語句有本質(zhì)的區(qū)別 continue語句只是結(jié)束本次循環(huán) 而不終止整個循環(huán)的執(zhí)行 而break語句的作用則是強制終止整個循環(huán)過程 3 continue語句與break語句的區(qū)別例如 打印出數(shù)字0 10 但跳過 即不輸出 數(shù)字5 main inti for i 0 i 10 i if i 5 continue printf 5d i 程序運行結(jié)果為 01234678910 1 當(dāng)i等于5時執(zhí)行continue語句 它的作用是終止本次循環(huán) 即不再執(zhí)行continue后面的語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論