第04章控制程序流程ppt課件_第1頁
第04章控制程序流程ppt課件_第2頁
第04章控制程序流程ppt課件_第3頁
第04章控制程序流程ppt課件_第4頁
第04章控制程序流程ppt課件_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第04章控制程序流程-2-本章內(nèi)容安排while循環(huán)dowhile循環(huán)for循環(huán)高級循環(huán)switch-3-循環(huán)的概念計算機擅長的任務(wù)之一是反復(fù)做一樣的事情。許多編程義務(wù)可以經(jīng)過反復(fù)一樣的操作來完成,經(jīng)過指定次數(shù)或設(shè)定條件來控制執(zhí)行過程。多次反復(fù)執(zhí)行的構(gòu)造稱為循環(huán),每一次循環(huán)稱為迭代。while、dowhile、for-4-while循環(huán)在指定條件為true的情況下,程序反復(fù)執(zhí)行,直到指定條件變?yōu)閒alse。條件放在while之后的內(nèi),循環(huán)執(zhí)行的語句放在一對內(nèi)。表達式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;假設(shè)循環(huán)語句中沒有x+,那么while循環(huán) 的條件永遠為真,導(dǎo)致循環(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,構(gòu) 造1個無限循環(huán)。在循環(huán)體內(nèi),調(diào)用break語句,可 立刻停頓循環(huán)的執(zhí)行。運用while( true )構(gòu)造時,要確 保循環(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-本章內(nèi)容安排while循環(huán)dowhile循環(huán)for循環(huán)高級循環(huán)switch-11-dowhile循環(huán)while在執(zhí)行循環(huán)前檢查條件,假設(shè)此時條件為false,那么一次循環(huán)也不執(zhí)行。dowhile在循環(huán)之后檢查條件,條件為true,繼續(xù)循環(huán),

5、條件為false終了循環(huán)。do 循環(huán)體語句; while(表達式);表達式F循環(huán)體語句T-12-反復(fù)顯示單詞指定次數(shù)#include using namespace std;int main() int badger;coutbadger;do cout0);coutn;return 0;不要脫漏語句最后的;號。無論條件如何設(shè)置,dowhile循 至少執(zhí)行1次。break和continue依然有效。-13-本章內(nèi)容安排while循環(huán)dowhile循環(huán)for循環(huán)高級循環(huán)switch-14-for循環(huán)for循環(huán)將設(shè)置計數(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-本章內(nèi)容安排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個可以為空, 但對應(yīng)的分號不能省略。-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轉(zhuǎn)移到循環(huán)體內(nèi)部,已 經(jīng)退化為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)構(gòu)造。-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)體內(nèi)的語句轉(zhuǎ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+,導(dǎo)致死循環(huán)。養(yǎng)成將循環(huán)語句放在 內(nèi)作為復(fù) 語句的良好習慣,不論能否只需 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í)行空語句,導(dǎo)致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)的終了必需有; 否那么無法經(jīng)過編譯。-25-26-3、循環(huán)的嵌套在循環(huán)體內(nèi),可以包含另一個循環(huán),從而構(gòu)成循環(huán)的嵌套。外部循環(huán)每次迭代時,內(nèi)部循環(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ù)學(xué)問題共有30個人,其中有男人、女人和小孩,他們在一家飯館吃飯共破費了50先令,其中每個男人破費3先令,每個女人破費2先令,

13、每個小孩各花1先令,問30個人中男人、女人和小孩各幾人?設(shè)男人、女人和小孩的人數(shù)各為x、y、z,那么經(jīng)過題意可以列出下面的方程。x+y+z=303x+2y+z=50-29-窮舉法經(jīng)過兩個方程解3個未知數(shù),這是一個不定方程,應(yīng)該有多組解,用代數(shù)方法很難求解。利用計算機編寫程序,經(jīng)過“窮舉法可以列舉出一切能夠的解。所謂“窮舉法,就是讓計算機根據(jù)一切能夠的情況,逐一去驗證,從而找出一切滿足要求的“解 。由于總?cè)藬?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便可以經(jīng)過方程式來確定,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-本章內(nèi)容安排while循環(huán)dowhile循環(huán)for循環(huán)高級循環(huán)switchswitch的動機對同一個變量,假設(shè)存在多個分支判別情況,運用嵌套的if語句,將導(dǎo)致代碼非常煩瑣混亂,不易了解且難以維護。switch語句,檢查表達式,根據(jù)結(jié)果匹配執(zhí)行多個代碼塊中的1個。-38-switch的根本構(gòu)造switch(表達式)case 常量1:語句1; break;case 常量2:語句2; break; case 常量n:

18、語句n; break;default:語句n+1;switch的表達式必需是一個整數(shù)值。case分支后必需為常量,不能是變 量或者表達式,分支間不允許反復(fù)。switch語句執(zhí)行時,假設(shè)匹配到某個 case,執(zhí)行后面的語句;假設(shè)沒有匹 配的case,執(zhí)行default部分。通常每個case分支,都應(yīng)該有break 語句,用于退出switch。假設(shè)某個 case沒有break,當前分支執(zhí)行完 后,繼續(xù)下一個case分支。良好編程習慣:保管default,處置 特殊情況。-39-等級分轉(zhuǎn)百分制#include int main()char grade;int score;coutgrade;return 0;-40-等級分轉(zhuǎn)百分制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)系上傳者。文件的所有權(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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論