




已閱讀5頁(yè),還剩57頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六章循環(huán)控制 6 1概述6 2goto語(yǔ)句以及用goto語(yǔ)句構(gòu)成循環(huán)6 3while語(yǔ)句和do while語(yǔ)句6 4for語(yǔ)句6 5循環(huán)的嵌套6 6break和continue語(yǔ)句 6 1循環(huán)控制概述 循環(huán)結(jié)構(gòu)的特點(diǎn) 在給定條件成立時(shí) 反復(fù)執(zhí)行某程序段 直到條件不成立為止 語(yǔ)言提供的循環(huán)結(jié)構(gòu)類型如下 1 用goto語(yǔ)句和if語(yǔ)句構(gòu)成循環(huán) 2 用while語(yǔ)句 3 用do while語(yǔ)句 4 用for語(yǔ)句 循環(huán)條件 循環(huán)體 6 2goto語(yǔ)句以及用goto語(yǔ)句構(gòu)成循環(huán) 6 2 1形式 goto語(yǔ)句標(biāo)號(hào) 6 2 2功能 一進(jìn)入執(zhí)行g(shù)oto語(yǔ)句 立即轉(zhuǎn)向去執(zhí)行其后面標(biāo)號(hào)所指示的語(yǔ)句 gotojump loop 語(yǔ)句1語(yǔ)句1語(yǔ)句2語(yǔ)句2 語(yǔ)句n語(yǔ)句njump 語(yǔ)句n 1gotoloop 用標(biāo)識(shí)符表示 分號(hào) 冒號(hào) 冒號(hào) 6 2 3注意 結(jié)構(gòu)化程序設(shè)計(jì)方法主張限制使用goto語(yǔ)句 一般只在下面兩種結(jié)構(gòu)中表示循環(huán)一 loop if 表達(dá)式 語(yǔ)句gotoloop 表達(dá)式值為零時(shí) 立即停止循環(huán)二 loop 語(yǔ)句if 表達(dá)式 gotoloop 表達(dá)式值非零時(shí) 立即停止循環(huán) 例 用goto語(yǔ)句和if語(yǔ)句構(gòu)成循環(huán) 例用goto語(yǔ)句和if語(yǔ)句構(gòu)成循環(huán) voidmain inti sum 0 i 1 loop if i 100 sum sum i i gotoloop printf d n sum 運(yùn)行結(jié)果 5050 i 101 形式 while 表達(dá)式 語(yǔ)句表達(dá)式值為零時(shí) 立即停止循環(huán)形式 do語(yǔ)句while 表達(dá)式 表達(dá)式值為零時(shí) 立即停止循環(huán) 至少執(zhí)行一次循環(huán)語(yǔ)句 6 3while和dowhile語(yǔ)句 分號(hào) while 表達(dá)式 do語(yǔ)句while 表達(dá)式 例1 寫(xiě)出下面程序的運(yùn)行結(jié)果 1 voidmain inti 1 while i 3 printf d n i i 2 voidmain inti 1 while i 3 printf d n i i 結(jié)果123 結(jié)果死循環(huán) 循環(huán)體 空語(yǔ)句 注意 若把上面 去掉也死循環(huán) 復(fù)合語(yǔ)句作為循環(huán)體語(yǔ)句 3 voidmain intk 1 n 1 sum 0 do sum n n if sum 10 k 0 while k 1 printf sum d n sum 改為while k 1 死循環(huán) 0 1 1 2 3 3 6 4 10 結(jié)果 sum 10 例2用while語(yǔ)句和do while語(yǔ)句求 傳統(tǒng)流程圖表示算法 N S圖表示算法 100 voidmain inti sum 0 i 1 運(yùn)行結(jié)果 5050while i 100 sum i i printf d n sum voidmain inti sum 0 i 1 do sum i i while i 100 printf d n sum 注意 i和sum的初值i的終值 例3統(tǒng)計(jì)從鍵盤(pán)輸入一行字符的個(gè)數(shù) includevoidmain intn 0 printf inputastring n while getchar n n printf d n 只要從鍵盤(pán)輸入的字符不是回車(chē)就繼續(xù)循環(huán) 完成對(duì)輸入字符個(gè)數(shù)計(jì)數(shù) 輸入 ascdf 輸出 5 例4 計(jì)算p 1 2 3 nvoidmain inti n longp scanf d 不用long會(huì)溢出 重復(fù)到n次 也可以寫(xiě)成i n 1 例5 計(jì)算s 1 2 3 n n 0 voidmain inti n longs t scanf d 保證達(dá)到計(jì)算n次 t 1 1 2 3 S 1 1 2 1 2 3 例6 計(jì)算下面二十個(gè)數(shù)的和 13 8 65 68 9 342 987voidmain inti 1 floatx sum 0 while i 20 scanf f 注 執(zhí)行程序時(shí)輸入13 8 6568 9 342 987 i 40 i 2 while語(yǔ)句中的表達(dá)式一般是關(guān)系表達(dá)或邏輯表達(dá)式 也可以是其它表達(dá)式 只要表達(dá)式的值為真 非0 即可繼續(xù)循環(huán) 例7 voidmain inta 0 n printf ninputn scanf d 執(zhí)行n次 每執(zhí)行1次 n減1 a 2 a 輸入 8 輸出 02468101214 例8 while和do while循環(huán)比較 voidmain intsum 0 i scanf d do sum sum i i while i 10 輸入 8 輸入 11 sum 0 sum 11 6 4for語(yǔ)句 代替while語(yǔ)句 6 4 1形式 for 表達(dá)式1 表達(dá)式2 表達(dá)式3 語(yǔ)句要正確表達(dá)循環(huán)結(jié)構(gòu)應(yīng)注意三方面要求 1 循環(huán)控制變量的初始化 2 循環(huán)的條件 3 循環(huán)控制變量的值的更新 for語(yǔ)句在書(shū)寫(xiě)形式上集中體現(xiàn)了這三方面要求 6 4 2功能 for語(yǔ)句完全可以取代while語(yǔ)句 for 表達(dá)式1 表達(dá)式2 表達(dá)式3 語(yǔ)句它的執(zhí)行過(guò)程如下 1 先求解表達(dá)式1 2 求解表達(dá)式2 若其值為真 非0 則執(zhí)行for語(yǔ)句中指定的內(nèi)嵌語(yǔ)句 然后執(zhí)行第3 步 若其值為假 0 則結(jié)束循環(huán) 轉(zhuǎn)到第5 步 3 求解表達(dá)式3 4 轉(zhuǎn)回第2 步繼續(xù)執(zhí)行 5 循環(huán)結(jié)束 執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句 用for語(yǔ)句改寫(xiě)前面的例2 例4 例5 例7 例2 求voidmain inti sum 0 i 1 do sum i i while i 100 printf d n sum voidmain inti sum 0 for i 1 i 100 i sum i printf d n sum 例4 計(jì)算p 1 2 3 nvoidmain inti n longp scanf d for i 1 p 1 i n i P i 中間用逗號(hào) for i 1 p 1 i n P i i 例5 計(jì)算s 1 2 3 n n 0 voidmain inti n longs t scanf d for i 1 t 1 s 0 i n i t i s t 例7 計(jì)算下面二十個(gè)數(shù)的和 13 8 65 68 9 342 987voidmain inti 1 floatx sum 0 while i 20 scanf f for i 1 i 20 i scanf f for語(yǔ)句形式 for 循環(huán)變量賦初值 循環(huán)條件 循環(huán)變量增量 語(yǔ)句 總是一個(gè)賦值語(yǔ)句 它用來(lái)給循環(huán)控制變量賦初值 總是一個(gè)表達(dá)式 它用來(lái)判別循環(huán)是否終止 定義循環(huán)控制變量每循環(huán)一次后按什么方式變化 這三個(gè)部分之間用 分開(kāi) 對(duì)于for循環(huán)中語(yǔ)句的一般形式 for 表達(dá)式1 表達(dá)式2 表達(dá)式3 語(yǔ)句就是如下的while循環(huán)形式 表達(dá)式1 while 表達(dá)式2 語(yǔ)句表達(dá)式3 例1 寫(xiě)出下面程序的輸出結(jié)果 includevoidmain charc for c getchar putchar c c為 值為0 結(jié)束 可以是任意表達(dá)式 輸入 a56 3h hj 輸出 a56 3h 例2 下面程序的輸出結(jié)果是 voidmain intx 10 y 10 i for i 0 x 8 y i printf 3d 3d x y A 10192B 9876C 101091D 10990 表達(dá)式1只做一次 9 1 8 C 2 注意 1 for循環(huán)中的 表達(dá)式1 表達(dá)式2 循環(huán)條件 和 表達(dá)式3 可以缺省 但 不能缺省 2 省略了 表達(dá)式1 表示不對(duì)循環(huán)控制變量賦初值 可在for循環(huán)里面或外面對(duì)其賦初值 例如 i 1 for i 20 i scanf f 4 省略了 表達(dá)式3 循環(huán)變量增量 則不對(duì)循環(huán)控制變量進(jìn)行操作 這時(shí)可在語(yǔ)句體中加入修改循環(huán)控制變量的語(yǔ)句 例如 for i 1 i 100 sum sum i i 5 省略了 表達(dá)式1 和 表達(dá)式3 例如 for i 100 sum sum i i 相當(dāng)于 while i 100 sum sum i i 6 3個(gè)表達(dá)式都可以省略 例如 for 語(yǔ)句相當(dāng)于 while 1 語(yǔ)句7 表達(dá)式1可以是設(shè)置循環(huán)變量的初值的賦值表達(dá)式 也可以是其他表達(dá)式 例如 for sum 0 i 100 i sum sum i 8 表達(dá)式1和表達(dá)式3可以是一個(gè)簡(jiǎn)單表達(dá)式也可以是逗號(hào)表達(dá)式 for sum 0 i 1 i 100 i sum sum i 或 for i 0 j 100 i 100 i j k i j 9 表達(dá)式2一般是關(guān)系表達(dá)式或邏輯表達(dá)式 但也可是數(shù)值表達(dá)式或字符表達(dá)式 只要其值非零 就執(zhí)行循環(huán)體 例如 for i 0 c getchar n i c 又如 for c getchar n printf c c 6 5循環(huán)的嵌套 1 各種循環(huán)結(jié)構(gòu)的循環(huán)體中可以包含任一種完整的循環(huán)結(jié)構(gòu) 選擇結(jié)構(gòu) 2 選擇結(jié)構(gòu)的任一分支中也可以包含任一種完整的循環(huán)結(jié)構(gòu) 選擇結(jié)構(gòu) 3 且它們可多層嵌套 例1 while x y z for k 1 k 2 k if a 5 w 1 elseif a 5 switch結(jié)構(gòu) else for s 0 n 0 n 3 n s n 6 6break語(yǔ)句和continue語(yǔ)句 switch結(jié)構(gòu)中的break 提前結(jié)束該結(jié)構(gòu)循環(huán)結(jié)構(gòu)中的break 提前結(jié)束該結(jié)構(gòu) while循環(huán) do while循環(huán) for循環(huán) 循環(huán)結(jié)構(gòu)中的continue 提前結(jié)束本次循環(huán) 若在多層嵌套中使用break或continue 它只影響包含它的最內(nèi)層結(jié)構(gòu) 例1 寫(xiě)出以下程序的運(yùn)行結(jié)果 voidmain intn for n 1 n 10 n if n 3 0 break printf 4d n printf n voidmain intn for n 1 n 10 n if n 3 0 cotinue printf 4d n printf n 結(jié)果 12 結(jié)果 12457810 例2 把100 200之間的不能被3整除的數(shù)輸出 includevoidmain intn for n 100 n 200 n if n 3 0 continue printf d n printf n 能被3整除 則進(jìn)行下一次循環(huán) 例3 計(jì)算下面若干個(gè)數(shù)的和 13 8 65 68 9 342 987 并統(tǒng)計(jì)個(gè)數(shù) 個(gè)數(shù) 100 includevoidmain inti 1 floatx sum 0 while i 100 scanf f 注 執(zhí)行程序時(shí)輸入13 8 6568 9 342 9871e36 求絕對(duì)值 理論上相等 實(shí)際上有誤差 位置不能錯(cuò) i 1 例4 voidmain intk j x 0 for k 1 k 4 k x if k 3 0 break for j k j 5 j x x printf d n x 結(jié)果 14 程序舉例 例1 輸出10 1000中所有十位數(shù)為3的數(shù)voidmain inti for i 10 i 1000 i if i 10 10 3 printf 5d i 如 i 1234i 10 123整數(shù)123 10 3 if i 10 103 continue printf 5d i 例2 voidmain intk for k 2 k 10 k 3 printf 4d k printf 4d k 運(yùn)行結(jié)果 25811 例3 voidmain intk j 99 for k 1 k 2 k printf 1 d 5d n k j for j 5 j 7 j printf 2 d 5d n k j printf 3 d 5d n k j printf 4 d 5d n k j 例4 voidmain inti j k printf ijk n for i 0 i 2 i for j 0 j 2 j for k 0 k 2 k printf d d d n i j k 1 2 1 2 例5 輸出100 200中所有素?cái)?shù)m是素?cái)?shù) m不被2 3 4 m 1中任一個(gè)整除結(jié)果 101103107109113127131137139149151157163173173179181191193197199 執(zhí)行m 11 m 15 k m 1 k m 1 for i 2 iki kk 10 i 11k 3i 3 i k 結(jié)束for循環(huán) m i 0 break voidmain intm i k for m 100 m 200 m k m 1 for i 2 i k i if m i 0 break if i k printf disnotaprimenumber n m elseprintf disaprimenumber n m 只要有一個(gè)整除 后面無(wú)需判斷 強(qiáng)迫循環(huán)結(jié)束 此時(shí)i k 循環(huán)正常結(jié)束 i k說(shuō)明都不能整除 改為輸入一個(gè)數(shù) 判斷是否為素?cái)?shù) m 1 includevoidmain intm i k scanf d 輸入 3 輸入 6 例6 輸出所有由1 2 3組成的三位數(shù) 111211311112212312113213313121221321122222322123223323131231331132231332133233333 voidmain inti j k for i 1 i 3 i for j 1 j 3 j for k 1 k 3 k printf d d d i j k d d d沒(méi)有空格和逗號(hào) 起分隔符作用 上面改為不出現(xiàn)重復(fù)數(shù)字的三位數(shù)voidmain inti j k for i 1 i 3 i for j 1 j 3 j for k 1 k 3 k if i j 上面改為不出現(xiàn)重復(fù)字母的由X Y Z組成的三個(gè)子符的字符串voidmain inti j k for i X i Z i for j X j Z j for k X k Z k if i j 與int一樣 例7 P1216 15 voidmain 甲隊(duì)乙隊(duì) inti j k XAfor
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)電熱毛巾柜市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)智能網(wǎng)絡(luò)調(diào)光立柜市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)平流式沉淀池刮油刮泥機(jī)市場(chǎng)調(diào)查研究報(bào)告
- 聲樂(lè)合作合同范本
- 院落保潔合同范本
- 2025年中國(guó)入墻式帶筒紙巾箱市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)位牌市場(chǎng)調(diào)查研究報(bào)告
- 中介收房合同范本
- 2025年中國(guó)T/C床罩市場(chǎng)調(diào)查研究報(bào)告
- 借車(chē)汽車(chē)合同范本
- 小班數(shù)學(xué)課件《認(rèn)識(shí)長(zhǎng)方形》
- 淺談第三方物流的倉(cāng)儲(chǔ)管理
- 21ZJ111 變形縫建筑構(gòu)造
- 醫(yī)院各委員會(huì)職責(zé)制度
- 心理健康與職業(yè)生涯(中職)PPT完整全套教學(xué)課件
- 改良經(jīng)皮經(jīng)肝膽道鏡術(shù)New
- 2萬(wàn)噸馬鈴薯深加工(淀粉)項(xiàng)目可行性研究報(bào)告
- 服飾品設(shè)計(jì)PPT完整全套教學(xué)課件
- 顱腦橫斷層解剖09課件
- 2023年同等學(xué)力申碩英語(yǔ)真題
- 2023年04月廣東深圳市市場(chǎng)監(jiān)督管理局許可審查中心招考聘用醫(yī)療器械注冊(cè)審評(píng)員(員額)筆試參考題庫(kù)附答案解析
評(píng)論
0/150
提交評(píng)論