




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第04章控制程序流程-2-本章內容安排while循環(huán)dowhile循環(huán)for循環(huán)高級循環(huán)switch-3-循環(huán)的概念計算機擅長的任務之一是反復做一樣的事情。許多編程義務可以經過反復一樣的操作來完成,經過指定次數(shù)或設定條件來控制執(zhí)行過程。多次反復執(zhí)行的構造稱為循環(huán),每一次循環(huán)稱為迭代。while、dowhile、for-4-while循環(huán)在指定條件為true的情況下,程序反復執(zhí)行,直到指定條件變?yōu)閒alse。條件放在while之后的內,循環(huán)執(zhí)行的語句放在一對內。表達式F循環(huán)體語句Twhile(表達式) 循環(huán)體語句;-5-顯示099#include using namespace std;int
2、main()int x=0;while( x100 )cout x ;x+;return 0;假設循環(huán)語句中沒有x+,那么while循環(huán) 的條件永遠為真,導致循環(huán)不斷執(zhí)行, 稱為無限循環(huán)或死循環(huán)。-6-顯示099,每行5個#include using namespace std;int main()int x=0;while( x100 )cout x ;x+;if(x%5=0) coutendl;return 0;遞增x,每當x是5的倍數(shù)時,輸出回車。-7-顯示前20個整除14的正整數(shù)#include using namespace std;int main()int x=0, count=
3、0;while( true )x+;if(x%14=0) coutx19) break;return 0;循環(huán)中讓while的條件為true,構 造1個無限循環(huán)。在循環(huán)體內,調用break語句,可 立刻停頓循環(huán)的執(zhí)行。運用while( true )構造時,要確 保循環(huán)可以停頓。-8-顯示前20個整除14的正整數(shù)#include using namespace std;int main()int x=0, count=0;while( count19 )x+;if(x%15!=0) continue;coutx ;count+;return 0;在循環(huán)中遇到continue語句,將 跳過余下的語
4、句,執(zhí)行下一次 迭代。break終了當前循環(huán),而continue 終了本次迭代。-9-顯示前20個整除14的正整數(shù)#include using namespace std;int main()int x=0, count=0;while( count19 )x+=14;coutx ;count+;return 0;14倍數(shù),從14開場,依次遞增14。-10-本章內容安排while循環(huán)dowhile循環(huán)for循環(huán)高級循環(huán)switch-11-dowhile循環(huán)while在執(zhí)行循環(huán)前檢查條件,假設此時條件為false,那么一次循環(huán)也不執(zhí)行。dowhile在循環(huán)之后檢查條件,條件為true,繼續(xù)循環(huán),
5、條件為false終了循環(huán)。do 循環(huán)體語句; while(表達式);表達式F循環(huán)體語句T-12-反復顯示單詞指定次數(shù)#include using namespace std;int main() int badger;coutbadger;do cout0);coutn;return 0;不要脫漏語句最后的;號。無論條件如何設置,dowhile循 至少執(zhí)行1次。break和continue依然有效。-13-本章內容安排while循環(huán)dowhile循環(huán)for循環(huán)高級循環(huán)switch-14-for循環(huán)for循環(huán)將設置計數(shù)變量初值、檢查條件、修正計數(shù)變量合并到1條語句中。for(表達式1; 表達式2
6、;表達式3) 循環(huán)體;表達式2F表達式3表達式1循環(huán)體語句T計算1100的和#include using namespace std;int main()int i,sum=0; for(i=1;i=100;i+)sum+=i;cout“Sum: “sum“n;return 0;表達式1:完成計數(shù)變量初始化。表達式2:檢查條件,確定能否 繼續(xù)執(zhí)行循環(huán)。表達式3:修正計數(shù)變量的值。3個表達式之間用分號分割。-15-16-本章內容安排while循環(huán)dowhile循環(huán)for循環(huán)高級循環(huán)switch1、for的變化方式1#include using namespace std;int main() i
7、nt i,sum; for( i=1, sum=0; i=100; i+) sum=sum+i; cout“Sum: “sum“n; return 0;初始化多個變量時,用逗號進展 分割。依然是3大部分,用;分割-17-for的變化方式2#include using namespace std;int main() int i=1,sum=0; for( ; i=100; i+ ) sum=sum+i; cout“Sum: “sum“n; return 0;3個表達式中的恣意1個可以為空, 但對應的分號不能省略。-18-for的變化方式3#include using namespace std
8、;int main() int i=1,sum=0; for( ; i=100; ) sum=sum+i; i+; cout“Sum: “sum“n; return 0;將表達式3轉移到循環(huán)體內部,已 經退化為while循環(huán)。-19-for的變化方式4#include using namespace std;int main() int i=1,sum=0; for( ; ; ) sum = sum+i; if( i=100 )break; i+; cout“Sum: “sum“n; return 0;將3個表達式全部移出,退化為 while(true)構造。-20-for的變化方式5#inc
9、lude using namespace std;int main() int i=1, sum=0; for( i=1; i=100; sum=sum+i, i+ ) ; cout“Sum: “sum“n; return 0;將循環(huán)體內的語句轉移到某個表達式 中,不提倡這種用法。第3部分為逗號表達式,順序執(zhí)行-21-2、循環(huán)的典型問題#include using namespace std;int main()int i,sum=0; for( i=1; i=100; i+ ) ;sum+=i;cout“Sum: “sum“n;return 0;此時的for循環(huán),執(zhí)行了100次空 語句;。真
10、正的循環(huán)體sum+=i沒有執(zhí)行。-22-循環(huán)的典型錯誤#include using namespace std;int main() int i=1,sum=0; for( ; i=100; )sum=sum+i; i+; cout“Sum: “sum“n; return 0;循環(huán)執(zhí)行sum=sum+i,而不會執(zhí)行 i+,導致死循環(huán)。養(yǎng)成將循環(huán)語句放在 內作為復 語句的良好習慣,不論能否只需 1條語句。-23-循環(huán)的典型錯誤#include using namespace std;int main() int i=1,sum=0; while(i=100) ; sum+=i;i+; cout“
11、Sum: “sum“n; return 0;while循環(huán)后面不能加分號,否那么 while不斷執(zhí)行空語句,導致i無 法遞增,死循環(huán)。-24-循環(huán)的典型錯誤#include using namespace std;int main() int i=1,sum=0; do sum+=i;i+; while(i=100) cout“Sum: “sum“n; return 0;dowhile循環(huán)的終了必需有; 否那么無法經過編譯。-25-26-3、循環(huán)的嵌套在循環(huán)體內,可以包含另一個循環(huán),從而構成循環(huán)的嵌套。外部循環(huán)每次迭代時,內部循環(huán)都將完好循環(huán)1次輸出字符矩形#include using nam
12、espace std;int main() int rows,columns;char character;coutrows;coutcolumns;coutcharacter;coutn;-27-輸出字符矩形#include using namespace std;int main()for( int i=0; irows; i+ )for( int j=0; jcolumns; j+) coutcharacter;coutn;return 0;-28-馬克思手稿中的數(shù)學問題共有30個人,其中有男人、女人和小孩,他們在一家飯館吃飯共破費了50先令,其中每個男人破費3先令,每個女人破費2先令,
13、每個小孩各花1先令,問30個人中男人、女人和小孩各幾人?設男人、女人和小孩的人數(shù)各為x、y、z,那么經過題意可以列出下面的方程。x+y+z=303x+2y+z=50-29-窮舉法經過兩個方程解3個未知數(shù),這是一個不定方程,應該有多組解,用代數(shù)方法很難求解。利用計算機編寫程序,經過“窮舉法可以列舉出一切能夠的解。所謂“窮舉法,就是讓計算機根據一切能夠的情況,逐一去驗證,從而找出一切滿足要求的“解 。由于總人數(shù)為30人,所以x、y和z的取值范圍一定為030并且為整數(shù),在編程時,我們可以讓x、y和z都從0循環(huán)到30,然后驗證看哪個組合能滿足方程式。-30-三重循環(huán)求解int main()int x,
14、y,z;coutMan t Women t Childrenn“;for(x=0;x=30;x+) for(y=0;y=30;y+) for(z=0;z=30;z+) if(x+y+z=30 & 3*x+2*y+z=50) coutx“ty“tz“n; return 0;“t表示制表符。分析:循環(huán)體執(zhí)行313131,循環(huán)時x、y 確定后,z就會確定,不需求再循環(huán)。此外, 每種人的循環(huán)范圍不一定都是30。-31-減少窮舉范圍int main()int x,y,z;coutMan t Women t Childrenn“;for(x=0;x=16;x+) for(y=0;y=25;y+) for(
15、z=0;z=30;z+) if(x+y+z=30 & 3*x+2*y+z=50) coutx“ty“tz“n; return 0;-32-2重循環(huán)int main()int x,y,z;coutMan t Women t Childrenn“;for(x=0;x=16;x+) for(y=0;y=25;y+) z = 30 x y; if( 3*x+2*y+z=50) coutx“ty“tz“n; return 0;某一次循環(huán)迭代中,x和y確定后,z便可以 計算得出,減少了循環(huán)的次數(shù)。-33-1重循環(huán)的嘗試采用消元法,消去變量z,得到新的方程式2x+y=20對于這一方程式,我們可以采用一重循環(huán)
16、來窮舉x的一切能夠,即x從0變到16,但只需x確定下來,y便可以經過方程式來確定,x和y確定下來,那么z可以由x+y+z=30確定。-34-1重循環(huán)小Bugint main()int x,y,z;coutMan t Women t Childrenn“;for(x=0; x=16; x+) y = 20 - 2*x; z = 30 - x - y; if( 3*x+2*y+z=50) coutx“ty“tz“n;return 0;-35-1重循環(huán)int main()int x,y,z;coutMan t Women t Childrenn“;for(x=0; x=16; x+) y = 20
17、- 2*x; z = 30 - x - y;if(y0 | z0) continue; if( 3*x+2*y+z=50) coutx“ty“tz“n;return 0;-36-37-本章內容安排while循環(huán)dowhile循環(huán)for循環(huán)高級循環(huán)switchswitch的動機對同一個變量,假設存在多個分支判別情況,運用嵌套的if語句,將導致代碼非常煩瑣混亂,不易了解且難以維護。switch語句,檢查表達式,根據結果匹配執(zhí)行多個代碼塊中的1個。-38-switch的根本構造switch(表達式)case 常量1:語句1; break;case 常量2:語句2; break; case 常量n:
18、語句n; break;default:語句n+1;switch的表達式必需是一個整數(shù)值。case分支后必需為常量,不能是變 量或者表達式,分支間不允許反復。switch語句執(zhí)行時,假設匹配到某個 case,執(zhí)行后面的語句;假設沒有匹 配的case,執(zhí)行default部分。通常每個case分支,都應該有break 語句,用于退出switch。假設某個 case沒有break,當前分支執(zhí)行完 后,繼續(xù)下一個case分支。良好編程習慣:保管default,處置 特殊情況。-39-等級分轉百分制#include int main()char grade;int score;coutgrade;return 0;-40-等級分轉百分制switch( grade )case A: score = 95; break;case B: score = 85; break;case C: score = 75; break;case D: score =65; bre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CMMA 9-2023鎂質膠凝材料制品用氧化鎂
- T/CITS 0012-2021制造業(yè)企業(yè)質量創(chuàng)新力評價規(guī)范
- T/CIQA 17-2021移動式核酸檢測實驗室通用技術規(guī)范
- T/CIMA 0036-2022低壓電力線高速載波通信單元自動化檢測系統(tǒng)技術規(guī)范
- T/CIE 162-2023工業(yè)軟件技術來源檢測規(guī)范
- T/CGCC 64-2022大宗商品電子交易敏感數(shù)據存儲和使用規(guī)范
- T/CFPA 028-2023消防通道視頻監(jiān)測系統(tǒng)
- T/CECS 10251-2022綠色建材評價金屬給水排水管材管件
- T/CECS 10238-2022綠色建材評價換熱器
- T/CECS 10208-2022齒圈卡壓式薄壁不銹鋼管件
- 2025四川中江振鑫產業(yè)集團招聘14人筆試參考題庫附帶答案詳解
- 森林管護工技師考試試題及答案
- 車棚維修協(xié)議書
- 樂曲演奏電路設計-正文
- 2025年1-氯丁烷項目可行性研究報告
- 【部編版】語文六年級下冊古詩詞誦讀1《采薇(節(jié)選)》精美課件
- 2025屆高三高考押題預測卷 英語 (新高考Ⅱ卷02) 含解析
- 2024年西安曲江二小教師招聘真題
- 四川省2025屆高三第二次聯(lián)合測評-英語試卷+答案
- 2024年全國工會財務知識大賽備賽試題庫500(含答案)
- 2025-2030中國貿易融資行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展趨勢與投資戰(zhàn)略研究報告
評論
0/150
提交評論