版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C+程序的流程控制 第三章程序或程序模塊的三種根本構(gòu)造 順序構(gòu)造條件分支構(gòu)造循環(huán)構(gòu)造經(jīng)過安排語句的陳列順序來決議程序流程由特定的條件決議執(zhí)行哪個語句的程序構(gòu)造由特定的條件決議某個語句反復(fù)執(zhí)行次數(shù)的控制方式順序構(gòu)造 按語句的先后順序依次執(zhí)行每一條語句語句1語句2順序構(gòu)造表示X=3;Y=4Z=X;X=YY=Z;程序段完成的功能是:交換X和Y的值例:條件語句1語句2falsetrue語句格式: If(條件) 語句1 else 語句2 含義: 假設(shè)條件成立,執(zhí)行語句1,否那么執(zhí)行語句2流程表示: If多分支構(gòu)造一條件分支構(gòu)造 條件語句truefalse語句格式:If(條件) 語句含義: 假設(shè)條件成立,
2、執(zhí)行語句1,否那么什么也不做即跳出if語句的執(zhí)行,到下一第語句流程表示:(無else子句) If多分支構(gòu)造二條件分支構(gòu)造 例1:輸入2個數(shù),找出其中最大的一個并顯示出來。#includevoid main( ) int i,j; coutij; cout=j) coutiendl; else coutjendl;條件分支構(gòu)造例2:輸入3個數(shù),找出其中最大的一個并顯示出來。#includevoid main( ) int i,j,k; coutijk; cout“3個數(shù)中最大的是:; if(ij) i=j; if(ik) i=j; coutiendl;兩條無else分支的語句例3:輸入3個數(shù),然
3、后按從大到小的順序把它們顯示出來。#includevoid main( ) int i,j,k,p; coutijk; if(ij) p=i; i=j; j=p; if(ik) p=i; i=k; k=p; if(jk) p=j; j=k; k=p; coutendlijk;例4:P58,例3.5,請對照書本自主學(xué)習(xí)If 語句的嵌套語句中出現(xiàn)多個if和多個else時,首先必需進(jìn)展配對,配對原那么:從遇見的第一個else開場,else總與離它最近的if配對。在if語句的else前嵌套另一個if語句容易使所表達(dá)的邏輯關(guān)系難于了解,應(yīng)加以防止,必要時把嵌套位置改為else之后條件分支構(gòu)造 If多分支
4、構(gòu)造If多分支構(gòu)造是一種經(jīng)過規(guī)范化的if嵌套所構(gòu)成的條件分支構(gòu)造,在這種構(gòu)造中if語句嵌套在else之后運用格式:if(條件1) 語句1else if條件2 語句2else if條件3 語句3else if條件n 語句nelse 語句n+1條件分支構(gòu)造 例:輸入一個0100分范圍內(nèi)的一個成果,顯示相應(yīng)的等級:90100優(yōu)8089良7079中6069及格60分以下不及格#includevoid main( ) float score; coutscore; if(score100) cout“成果必需在0100之間; else if(score60) cout“不及格endl: else if(
5、score70) cout“及格endl; else if(score80) cout“中endl; else if(score90) cout“良endl; else cout“優(yōu)endl; switch 多分支構(gòu)造 switch整型表達(dá)式 case 整型常量表達(dá)式1:語句序列1 case 整型常量表達(dá)式2:語句序列2 case 整型常量表達(dá)式k:語句序列k default:語句序列k+1條件分支構(gòu)造 switch語句格式:switch語句的含義:經(jīng)過判別整型表達(dá)式的值,決議程序的去向: 假設(shè)整型表達(dá)式的值與整型常量表達(dá)式1的值一樣,那么依次執(zhí)行語句序列1開場的各個語句序列,即執(zhí)行語句序列1
6、,語句序列2,語句序列k,語句序列k+1 假設(shè)整型表達(dá)式的值與整型常量表達(dá)式2的值一樣,那么依次執(zhí)行開場的各個語句序列,即執(zhí)行語句序列2,語句序列k,語句序列k+1 依此類推 假設(shè)整型表達(dá)式的值不等于任何列出的整型常量表達(dá)式的值,那么執(zhí)行從default開場的語句序列 假設(shè)沒有default語句,那么什么也不做。在依次執(zhí)行語句序列的過程中,如遇見break語句,那么立刻停頓語句序列的執(zhí)行,跳出switch分支構(gòu)造因此,假設(shè)要讓分支構(gòu)造只執(zhí)行與整型表達(dá)式匹配的整型常量表達(dá)式后的語句序列,而不往下執(zhí)行下面的語句序列,應(yīng)在該語句序列后加一條break語句在每一個整型常量表達(dá)式后的語句序列后加brea
7、k語句的switch分支構(gòu)造,等同于if多分支構(gòu)造。break語句在switch分支構(gòu)造中的運用例1:輸入一個表示星期的數(shù)字0表示星期日,1表示星期二,6表示星期六,顯示對應(yīng)的英文單詞。#includevoid main( ) int weekday; coutweekday; switch(weekday) case 0:cout“Sundayendl;break; case 1:cout“Mondayendl;break; case 2:cout“Tuesdayendl;break; case 3:cout“Wednesdayendl;break; case 4:cout“Thursday
8、endl;break; case 5:cout“Fridayendl;break; case 6:cout“Saturdayendl;break; /weekday的值為0時, 顯示Sunday,break語句阻止了往下執(zhí)行輸出語句例2:輸入一個0100分范圍內(nèi)的一個成果,顯示相應(yīng)的等級:90100優(yōu)8089良7079中6069及格60分以下不及格(用switch多分支構(gòu)造實現(xiàn))#includevoid main( ) float score; coutscore; switch(int(score/10) case 0: case 1: case 2: case 3: case 4: cas
9、e 5:cout“不及格endl; break; case 6:cout“及格endl; break; case 7: cout“中endl; break;case 8: cout“良endl; break;case 9: case 10: cout“優(yōu)endl; break;default: cout“成果必需在0100分之間; 例2闡明:int(score/10)的值為0、1、2、3、4時分別執(zhí)行case0、case1、case2、case3、case4后的語句序列是空的,程序從這些入口點進(jìn)入后,直接往下走,并在執(zhí)行完case 5后的語句并遇見break語句時跳出switch分支。因此當(dāng)值
10、為05時均顯示“不及格。case 9后的語句為空,從case 9進(jìn)入后,直接往下執(zhí)行case 10后的語句序列,遇見break語句時跳出switch分支。因此,值為9和10時均顯示“優(yōu)。循環(huán)構(gòu)造 for循環(huán)初始化;循環(huán)條件;循環(huán)參數(shù)調(diào)整循環(huán)體for 語句循環(huán)初始化循環(huán)條件循環(huán)參數(shù)調(diào)整循環(huán)體falsetruefor 循環(huán)構(gòu)造表示for 循環(huán)含義首先進(jìn)展循環(huán)初始化,然后判別循環(huán)條件,假設(shè)循環(huán)條件成立那么執(zhí)行循環(huán)體;假設(shè)不成立,那么終了循環(huán)循環(huán)體執(zhí)行完后,再進(jìn)展循環(huán)參數(shù)的調(diào)整,然后再進(jìn)展循環(huán)條件判別,假設(shè)循環(huán)條件成立,那么繼續(xù)執(zhí)行循環(huán)體否那么跳出循環(huán),循環(huán)體執(zhí)行完進(jìn)展循環(huán)參數(shù)的調(diào)整,然后再進(jìn)展條件判
11、別,條件成立繼續(xù)執(zhí)行循環(huán)體,否那么跳出循環(huán),直到跳出循環(huán)關(guān)于for 循環(huán)語句的幾點闡明循環(huán)條件是一個邏輯表達(dá)式循環(huán)初始化和循環(huán)參數(shù)的調(diào)整都該當(dāng)具有副作用循環(huán)體可以是復(fù)合語句,也可以是根本語句典型的for循環(huán)實例:for(int i=0;i100;i+=5) couti ;假設(shè)循環(huán)條件一開場就不成立,那么循環(huán)體一次也不執(zhí)行循環(huán)初始化和循環(huán)參數(shù)的調(diào)整可以為空,相當(dāng)于while循環(huán)循環(huán)條件為空意味著永真條件循環(huán)體為空,可用于延遲一段時間例:分析以下程序段的執(zhí)行結(jié)果for(int I=0;I=20;I+) cout*;分析:第1次:循環(huán)初始化I=0,判別條件I=20成立,第一次執(zhí)行循環(huán)體,輸出第一個*
12、;第2次:進(jìn)展參數(shù)調(diào)整,I增1,I的值為1,條件成立,執(zhí)行第二次循環(huán),輸出第二個*第20次:I為19,循環(huán)條件成立,執(zhí)行循環(huán)體,輸出第20個*號,然后I調(diào)整為20;第21次:I為20,循環(huán)條件成立,執(zhí)行循環(huán)體,輸出第21個*,然后I調(diào)整為21;跳出循環(huán):I的值為21,循環(huán)條件I=20不成立,跳出循環(huán)執(zhí)行結(jié)果:輸出21個*號例1:輸入10個數(shù),計算并顯示它們的合計#include void main( ) double x,s=0; /x用于暫時保管輸入的數(shù)據(jù),s用于 保管累加結(jié)果,稱s為累加器 cout“請輸入10個數(shù):; for(int i=0; ix; s+=x; cout“合計:s; 例
13、2:顯示并輸出如下所示的三角形: * 第0行:5空、1* * 第1行:4空、3* *第2行:3空、5* *第3行:2空、7* *第4行:1空、9*第5行:0空、11*由以上得出:假設(shè)行號為i,那么應(yīng)輸出的空格數(shù)為5-i,應(yīng)輸出的*數(shù)為i+i+1程序如下頁:#include void main( ) for(int i=0; i6; i+) /循環(huán)6次,輸出6行 coutendl; /每次循環(huán)換行,換6次,顯示6行 int j; for(j=0;j5-i;j+) cout /每行輸出假設(shè)干空格 for(j=0;ji+i+1;j+) cout* /然后輸出假設(shè)干* cout“合計:s; 書本70頁
14、例3.11顯示輸出99乘法表。請看書本自主學(xué)習(xí)注:setw2功能是為下一個要輸出的數(shù)據(jù)設(shè)置輸出寬度,該設(shè)置只對下一個數(shù)據(jù)輸出有效。例如,cout1setw(8)20) cout0 循環(huán)體是一個根本語句:coutI-;分析:第一次:I=20時,執(zhí)行第一次循環(huán),輸出I的值20,同時在cout0不成立,不執(zhí)行循環(huán)體,跳出循環(huán)。因此循環(huán)共執(zhí)行了20次。do while 語句do 循環(huán)體 while循環(huán)條件)循環(huán)構(gòu)造 do while 循環(huán)構(gòu)造表示循環(huán)條件循環(huán)體falsetruedo while 循環(huán)含義不判別條件直接執(zhí)行一次循環(huán)體,循環(huán)體執(zhí)行完后,再判別循環(huán)條件,假設(shè)條件為真,那么再次執(zhí)行循環(huán)體,假設(shè)
15、條件不成立,那么跳出循環(huán),在第二次循環(huán)體執(zhí)行完后,繼續(xù)先判別循環(huán)條件,條件滿足,那么執(zhí)行循環(huán)體,直到條件不滿足,跳出循環(huán)。do while 循環(huán)和while 循環(huán)的區(qū)別do while 循環(huán)無論循環(huán)條件能否滿足,循環(huán)體至少執(zhí)行一次;然后再根據(jù)循環(huán)條件決議能否繼續(xù)執(zhí)行循環(huán)體;while 循環(huán)循環(huán)條件不滿足那么循環(huán)體一次也不執(zhí)行I=1;While(I=5)CoutI+; I=1;DoCoutI+;While(I=5)用do while 循環(huán)實現(xiàn)用while 循環(huán)實現(xiàn)用兩種循環(huán)輸出一樣的內(nèi)容:輸出:12345用While循環(huán)與dowhile循環(huán)等效:I=6;While(I=5)CoutI+; /循環(huán)
16、體一次也沒執(zhí)行,因此無任何內(nèi)容輸出I=6;DoCoutI+;While(I0;I-) s+=I; /for循環(huán)8次實現(xiàn)s=8+7+1, 且I的值為0循環(huán)終了時,s的值為36While(+I5) s+=I; /while循環(huán)4次,把14再加到s中,I的值為5時循環(huán)終了,s的值為46后,s的值是 答案:46#include #includevoid main( ) double A,B,C; do coutendl ABC; while(A=0.0) /輸入3個系數(shù),當(dāng)系數(shù)A為0時重新輸入 coutendl; double Delta=B*B-4*A*C; /以下程序段根據(jù)Delta的值求方程的解
17、 If(Delta0.0) cout0.0) cout“此方程有兩個不同的實數(shù)解; cout(-B+sqrt(Delta)/(A+A); cout“和(-B-sqrt(Delta)/(A+A); else cout“此方程有兩個一樣的實數(shù)解-B/(A+A); break :continue :強迫退出循環(huán),執(zhí)行下一條語句提早終了本輪循環(huán)體的執(zhí)行,判別循環(huán)條件,提早進(jìn)入下一輪循環(huán)闡明:這兩個語句通常與if語句同時運用,形如: if() break; if() continue當(dāng)if條件成立時,退出循環(huán)或提早終了本輪循環(huán)體的執(zhí)行循環(huán)特殊控制語句 例:允許反復(fù)地輸入半徑,計算并顯示圓面積,直到輸入的半徑是0時為止即輸入0是終止程序運轉(zhuǎn)的信號;假設(shè)發(fā)現(xiàn)是輸入的半徑是負(fù)數(shù),提示操作者重新輸入。#include #define PI 3.1416 void
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝修合同范本簡化版
- 房屋出租簡約合同樣式
- 出租車承包合同
- 線上辦公信息安全協(xié)議
- 旅館承包合同范例
- 房地產(chǎn)經(jīng)紀(jì)公司代理合同模板
- 技術(shù)成果轉(zhuǎn)讓股權(quán)協(xié)議
- 2024年汽車租賃合同范本
- 抵押物借款合同的社會責(zé)任
- 教職工違紀(jì)聘用合同案例
- 汽車起重機日常檢查維修保養(yǎng)記錄表
- 中國醫(yī)科大學(xué)2023年12月《康復(fù)工程學(xué)》作業(yè)考核試題-【答案】
- 浙江省9+1高中聯(lián)盟2022-2023學(xué)年高一上學(xué)期11月期中考物理試題(解析版)
- 七年級上冊英語期中專項復(fù)習(xí)-補全對話(含答案)
- 鐵的單質(zhì)(導(dǎo)學(xué)案)高一化學(xué)
- 絞吸式挖泥船水下疏挖河渠施工工法
- 反腐倡廉廉潔行醫(yī)
- 心血管內(nèi)科醫(yī)療質(zhì)量評價體系與考核標(biāo)準(zhǔn)
- 2022-2023學(xué)年廣州市南沙區(qū)小升初全真模擬數(shù)學(xué)檢測卷含答案
- 2023年食品安全糧食類理論知識考試題庫(含答案)
- 人教版五年級上冊數(shù)學(xué)《可能性》作業(yè)設(shè)計
評論
0/150
提交評論