文科C語言_第6章_循環(huán).ppt_第1頁
文科C語言_第6章_循環(huán).ppt_第2頁
文科C語言_第6章_循環(huán).ppt_第3頁
文科C語言_第6章_循環(huán).ppt_第4頁
文科C語言_第6章_循環(huán).ppt_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第六章 循環(huán)控制 本章要點 循環(huán)的基本概念不同形式的循環(huán)控制多重循環(huán)問題 主要內(nèi)容 6 1概述6 2goto語句以及用goto語句構(gòu)成循環(huán)6 3用while語句實現(xiàn)循環(huán)6 4用do while語句實現(xiàn)循環(huán)6 5用for語句實現(xiàn)循環(huán)6 6循環(huán)的嵌套6 7幾種循環(huán)的比較6 8break語句continue和語句6 9程序舉例 6 1概述 什么是循環(huán) 為什么要使用循環(huán) 問題1 問題2 求學(xué)生平均成績分?jǐn)?shù)相加后除以課數(shù) 在許多問題中需要用到循環(huán)控制 循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計的基本結(jié)構(gòu)之一 它和順序結(jié)構(gòu) 選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元 6 2goto語句以及用goto語句構(gòu)成循環(huán) goto語句 無條件轉(zhuǎn)向語句goto語句標(biāo)號 語句標(biāo)號用標(biāo)識符表示 它的定名規(guī)則與變量名相同 即由字母 數(shù)字和下劃線組成 其第一個字符必須為字母或下劃線 例如 gotolabel 1 合法 goto123 不合法 6 2goto語句以及用goto語句構(gòu)成循環(huán) 結(jié)構(gòu)化程序設(shè)計方法主張限制使用goto語句 因為濫用goto語句將使程序流程無規(guī)律 可讀性差 一般來說 可以有兩種用途 1 與if語句一起構(gòu)成循環(huán)結(jié)構(gòu) 2 從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外 但是這種用法不符合結(jié)構(gòu)化原則 一般不宜采用 只有在不得已時 例如能大大提高效率 才使用 例6 1用if語句和goto語句構(gòu)成循環(huán) 求1到100的和voidmain inti sum 0 i 1 loop if i 100 sum sum i i gotoloop printf d n sum 說明 這里用的是 當(dāng)型 循環(huán)結(jié)構(gòu) 當(dāng)滿足 i 100 時執(zhí)行花括弧內(nèi)的循環(huán)體 運行結(jié)果 5050 6 3用while語句實現(xiàn)循環(huán) while語句用來實現(xiàn) 當(dāng)型 循環(huán)結(jié)構(gòu) 一般形式 while 表達(dá)式 語句當(dāng)表達(dá)式為非0值時 執(zhí)行while語句中的內(nèi)嵌語句 其特點是 先判斷表達(dá)式 后執(zhí)行語句 例6 2求1到100的和 includevoidmain inti sum 0 i 1 while i 100 sum sum i i printf d n sum 說明 1 循環(huán)體如果包含一個以上的語句 應(yīng)該用花括弧括起來 以復(fù)合語句形式出現(xiàn) 2 在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句 運行結(jié)果 5050 6 3用while語句實現(xiàn)循環(huán) 注意 循環(huán)體如果包含一個以上的語句 應(yīng)該用花括弧括起來 以復(fù)合語句形式出現(xiàn) 在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句 如果無此語句 則i的值始終不改變 循環(huán)永不結(jié)束 6 4用do while語句實現(xiàn)循環(huán) do while語句的特點 先執(zhí)行循環(huán)體 然后判斷循環(huán)條件是否成立 一般形式 do循環(huán)體語句while 表達(dá)式 執(zhí)行過程 先執(zhí)行一次指定的循環(huán)體語句 然后判別表達(dá)式 當(dāng)表達(dá)式的值為非零 真 時 返回重新執(zhí)行循環(huán)體語句 如此反復(fù) 直到表達(dá)式的值等于0為止 此時循環(huán)結(jié)束 例6 3求1到100的和 includevoidmain inti sum 0 i 1 do sum sum i i while i 100 printf d n sum 運行結(jié)果 5050 6 4用do while語句實現(xiàn)循環(huán) while語句和用do while語句的比較 在一般情況下 用while語句和用do while語句處理同一問題時 若二者的循環(huán)體部分是一樣的 它們的結(jié)果也一樣 但是如果while后面的表達(dá)式一開始就為假 0值 時 兩種循環(huán)的結(jié)果是不同的 例6 4while和do while循環(huán)的比較 1 include 2 includevoidmain voidmain intsum 0 i intsum 0 i scanf d 運行結(jié)果 1 sum 55再運行一次 11 sum 0 運行結(jié)果 1 sum 55再運行一次 11 sum 11 說明 1 當(dāng)while后面的表達(dá)式的第一次的值為 真 時 兩種循環(huán)得到的結(jié)果相同 否則 二者結(jié)果不相同 6 5用for語句實現(xiàn)循環(huán) C語言中的for語句使用最為靈活 不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況 而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況 它完全可以代替while語句 一般形式 for 表達(dá)式1 表達(dá)式2 表達(dá)式3 語句 6 5用for語句實現(xiàn)循環(huán) for語句的執(zhí)行過程 1 先求解表達(dá)式1 2 求解表達(dá)式2 若其值為真 值為非0 則執(zhí)行for語句中指定的內(nèi)嵌語句 然后執(zhí)行下面第 3 步 若為假 值為0 則結(jié)束循環(huán) 轉(zhuǎn)到第 5 步 3 求解表達(dá)式3 4 轉(zhuǎn)回上面第 2 步驟繼續(xù)執(zhí)行 5 循環(huán)結(jié)束 執(zhí)行for語句下面的一個語句 6 5用for語句實現(xiàn)循環(huán) 循環(huán)初始條件 循環(huán)控制條件 循環(huán)體 for語句等價于下列語句 表達(dá)式1 while 表達(dá)式2 語句 表達(dá)式3 6 5用for語句實現(xiàn)循環(huán) for語句最簡單的形式 for 循環(huán)變量賦初值 循環(huán)條件 循環(huán)變量增值 例如 for i 1 i 100 i sum sum i 相當(dāng)于 i 1 while i 100 sum sum i i 用for語句簡單 方便 6 5用for語句實現(xiàn)循環(huán) 說明 1 for語句的一般形式中的 表達(dá)式1 可以省略 此時應(yīng)在for語句之前給循環(huán)變量賦初值 注意省略表達(dá)式1時 其后的分號不能省略 如for i 100 i sum sum i 執(zhí)行時 跳過 求解表達(dá)式1 這一步 其他不變 6 5用for語句實現(xiàn)循環(huán) 說明 2 如果表達(dá)式2省略 即不判斷循環(huán)條件 循環(huán)無終止地進(jìn)行下去 也就是認(rèn)為表達(dá)式2始終為真 例如 for i 1 i sum sum i 表達(dá)式1是一個賦值表達(dá)式 表達(dá)式2空缺 它相當(dāng)于 i 1 while 1 sum sum 1 i 6 5用for語句實現(xiàn)循環(huán) 說明 3 表達(dá)式3也可以省略 但此時程序設(shè)計者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束 如 for i 1 i 100 sum sum i i 在上面的for語句中只有表達(dá)式1和表達(dá)式2 而沒有表達(dá)式3 i 的操作不放在for語句的表達(dá)式3的位置處 而作為循環(huán)體的一部分 效果是一樣的 都能使循環(huán)正常結(jié)束 6 5用for語句實現(xiàn)循環(huán) 說明 4 可以省略表達(dá)式1和表達(dá)式3 只有表達(dá)式2 即只給循環(huán)條件 如 for i 100 while i 100 sum sum i 相當(dāng)于 sum sum i i i 在這種情況下 完全等同于while語句 可見for語句比while語句功能強 除了可以給出循環(huán)條件外 還可以賦初值 使循環(huán)變量自動增值等 6 5用for語句實現(xiàn)循環(huán) 說明 5 3個表達(dá)式都可省略 如 for 語句相當(dāng)于while 1 語句即不設(shè)初值 不判斷條件 認(rèn)為表達(dá)式2為真值 循環(huán)變量不增值 無終止地執(zhí)行循環(huán)體 6 5用for語句實現(xiàn)循環(huán) 說明 6 表達(dá)式1可以是設(shè)置循環(huán)變量初值的賦值表達(dá)式 也可以是與循環(huán)變量無關(guān)的其他表達(dá)式 如 for sum 0 i 100 i sum sum i 表達(dá)式3也可以是與循環(huán)控制無關(guān)的任意表達(dá)式 6 5用for語句實現(xiàn)循環(huán) 說明 表達(dá)式1和表達(dá)式3可以是一個簡單的表達(dá)式 也可以是逗號表達(dá)式 即包含一個以上的簡單表達(dá)式 中間用逗號間隔 如 for sum 0 i 1 i 100 i sum sum i 或for i 0 j 100 i j i j k i j 表達(dá)式1和表達(dá)式3都是逗號表達(dá)式 各包含兩個賦值表達(dá)式 即同時設(shè)兩個初值 使兩個變量增值 6 5用for語句實現(xiàn)循環(huán) 說明 在逗號表達(dá)式內(nèi)按自左至右順序求解 整個逗號表達(dá)式的值為其中最右邊的表達(dá)式的值 如 for i 1 i 100 i i sum sum i 相當(dāng)于for i 1 i 100 i i 2 sum sum i 6 5用for語句實現(xiàn)循環(huán) 說明 7 表達(dá)式一般是關(guān)系表達(dá)式 如i 100 或邏輯表達(dá)式 如a b x y 但也可以是數(shù)值表達(dá)式或字符表達(dá)式 只要其值為非零 就執(zhí)行循環(huán)體 6 5用for語句實現(xiàn)循環(huán) 說明 for i 0 c getchar n i c 在表達(dá)式2中先從終端接收一個字符賦給c 然后判斷此賦值表達(dá)式的值是否不等于 n 換行符 如果不等于 n 就執(zhí)行循環(huán)體 注意 此for語句的循環(huán)體為空語句 把本來要在循環(huán)體內(nèi)處理的內(nèi)容放在表達(dá)式3中 作用是一樣的 可見for語句功能強 可以在表達(dá)式中完成本來應(yīng)在循環(huán)體內(nèi)完成的操作 6 5用for語句實現(xiàn)循環(huán) 注意 C語言中的for語句比其他語言 如BASIC PASCAL 中的FOR語句功能強得多 可以把循環(huán)體和一些與循環(huán)控制無關(guān)的操作也作為表達(dá)式1或表達(dá)式3出現(xiàn) 這樣程序可以短小簡潔 但過分地利用這一特點會使for語句顯得雜亂 可讀性降低 最好不要把與循環(huán)控制無關(guān)的內(nèi)容放到for語句中 6 6循環(huán)的嵌套 一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu)稱為循環(huán)的嵌套 內(nèi)嵌的循環(huán)中還可以嵌套循環(huán) 這就是多層循環(huán) 三種循環(huán) while循環(huán) do while循環(huán)和for循環(huán) 可以互相嵌套 6 6循環(huán)的嵌套 下面幾種都是合法的形式 1 while 2 do 3 for while dofor while while 6 6循環(huán)的嵌套 4 while 5 for 6 do do while for while while 6 7幾種循環(huán)的比較 1 四種循環(huán)都可以用來處理同一問題 一般情況下它們可以互相代替 但一般不提倡用goto型循環(huán) 2 在while循環(huán)和do while循環(huán)中 只在while后面的括號內(nèi)指定循環(huán)條件 因此為了使循環(huán)能正常結(jié)束 應(yīng)在循環(huán)體中包含使循環(huán)趨于結(jié)束的語句 如i 或i i 1等 6 7幾種循環(huán)的比較 for循環(huán)可以在表達(dá)式3中包含使循環(huán)趨于結(jié)束的操作 甚至可以將循環(huán)體中的操作全部放到表達(dá)式3中 因此for語句的功能更強 凡用while循環(huán)能完成的 用for循環(huán)都能實現(xiàn) 3 用while和do while循環(huán)時 循環(huán)變量初始化的操作應(yīng)在while和do while語句之前完成 而for語句可以在表達(dá)式1中實現(xiàn)循環(huán)變量的初始化 6 7幾種循環(huán)的比較 4 while循環(huán) do while循環(huán)和for循環(huán) 可以用break語句跳出循環(huán) 用continue語句結(jié)束本次循環(huán) break語句和continue語句見下節(jié) 而對用goto語句和if語句構(gòu)成的循環(huán) 不能用break語句和continue語句進(jìn)行控制 6 8break語句和continue語句 6 8 1break語句break語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體 即提前結(jié)束循環(huán) 接著執(zhí)行循環(huán)下面的語句一般形式 break 注意 break語句不能用于循環(huán)語句和switch語句之外的任何其他語句中 6 8break語句和continue語句 例 floatpi 3 14159 for r 1 r100 break printf r f area f n r area 程序的作用是計算r 1到r 10時的圓面積 直到面積area大于100為止 從上面的for循環(huán)可以看到 當(dāng)area 100時 執(zhí)行break語句 提前結(jié)束循環(huán) 即不再繼續(xù)執(zhí)行其余的幾次循環(huán) 6 8break語句和continue語句 6 8 2continue語句作用為結(jié)束本次循環(huán) 即跳過循環(huán)體中下面尚未執(zhí)行的語句 接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定 一般形式 continue 6 8break語句和continue語句 continue語句和break語句的區(qū)別continue語句只結(jié)束本次循環(huán) 而不是終止整個循環(huán)的執(zhí)行 while 表達(dá)式1 for if 表達(dá)式2 continue 0 6 8break語句和continue語句 continue和break的區(qū)別break語句則是結(jié)束整個循環(huán)過程 不再判斷執(zhí)行循環(huán)的條件是否成立 while 表達(dá)式1 for if 表達(dá)式2 break 例6 5把100 200之間的不能被3整除的數(shù)輸出 includevoidmain intn for n 100 n 200 n if n 3 0 continue printf d n 說明 當(dāng)n能被3整除時

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論