版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、程序或程序模塊的三種基本結(jié)構(gòu)程序或程序模塊的三種基本結(jié)構(gòu) 通過安排語句的排列順序來決定程序流程由特定的條件決定執(zhí)行哪個語句的程序結(jié)構(gòu)由特定的條件決定某個語句重復(fù)執(zhí)行次數(shù)的控制方式順序結(jié)構(gòu)順序結(jié)構(gòu) 按語句的先后順序依次執(zhí)行每一條語句語句1語句2順序結(jié)構(gòu)示意X=3;Y=4Z=X;X=YY=Z;程序段完成的功能是:交換程序段完成的功能是:交換X和和Y的值的值例:條件語句1語句2falsetrue語句格式: 含義: 如果條件成立,執(zhí)行語句1,否則執(zhí)行語句2流程示意: If多分支結(jié)構(gòu)一多分支結(jié)構(gòu)一條件分支結(jié)構(gòu)條件分支結(jié)構(gòu) 條件語句truefalse語句格式:含義: 如果條件成立,執(zhí)行語句1,否則什么也不
2、做(即跳出if語句的執(zhí)行,到下一第語句)流程示意:(無else子句) If多分支結(jié)構(gòu)二多分支結(jié)構(gòu)二條件分支結(jié)構(gòu)條件分支結(jié)構(gòu) 例1:輸入2個數(shù),找出其中最大的一個并顯示出來。#includevoid main( ) int i,j; coutij; cout=j) coutiendl; else coutjendl;條件分支結(jié)構(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之后條件分支結(jié)構(gòu)
4、條件分支結(jié)構(gòu) If多分支結(jié)構(gòu)多分支結(jié)構(gòu)If多分支結(jié)構(gòu)是一種通過規(guī)范化的if嵌套所構(gòu)成的條件分支結(jié)構(gòu),在這種結(jié)構(gòu)中if語句嵌套在else之后使用格式:條件分支結(jié)構(gòu)條件分支結(jié)構(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(score70) cout“及格”endl; else if(score8
5、0) cout“中”endl; else if(score90) cout“良”endl; else cout“優(yōu)”endl; switch switch 多分支結(jié)構(gòu)多分支結(jié)構(gòu) 條件分支結(jié)構(gòu)條件分支結(jié)構(gòu) switch語句格式:switch語句的含義:通過判斷的值,決定程序的去向: 若的值與的值相同,則依次執(zhí)行開始的各個語句序列,即執(zhí)行,, 若的值與的值相同,則依次執(zhí)行開始的各個語句序列,即執(zhí)行,, 依此類推 若的值不等于任何列出的整型常量表達(dá)式的值,則執(zhí)行從開始的語句序列 若沒有語句,則什么也不做。在依次執(zhí)行語句序列的過程中,如遇見break語句,則立即停止語句序列的執(zhí)行,跳出switch分支
6、結(jié)構(gòu)因此,若要讓分支結(jié)構(gòu)只執(zhí)行與匹配的后的語句序列,而不往下執(zhí)行下面的語句序列,應(yīng)在該語句序列后加一條break語句在每一個后的語句序列后加break語句的switch分支結(jié)構(gòu),等同于if多分支結(jié)構(gòu)。break語句在switch分支結(jié)構(gòu)中的應(yīng)用例1:輸入一個表示星期的數(shù)字(0表示星期日,1表示星期二,6表示星期六),顯示對應(yīng)的英文單詞。#includevoid main( ) int weekday; coutweekday; switch(weekday) case 0:cout“Sunday”endl;break; case 1:cout“Monday”endl;break; case 2
7、:cout“Tuesday”endl;break; case 3:cout“Wednesday”endl;break; case 4:cout“Thursday”endl;break; case 5:cout“Friday”endl;break; case 6:cout“Saturday”endl;break; /weekday的值為0時, 顯示Sunday,break語句阻止了往下執(zhí)行輸出語句例2:輸入一個0100分范圍內(nèi)的一個成績,顯示相應(yīng)的等級:90100優(yōu)8089良 7079中6069及格60分以下不及格(用switch多分支結(jié)構(gòu)實(shí)現(xiàn))#includevoid main( ) floa
8、t score; coutscore; switch(int(score/10) case 0: case 1: case 2: case 3: case 4: case 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、ca
9、se1、case2、case3、case4后的語句序列是空的,程序從這些入口點(diǎn)進(jìn)入后,直接往下走,并在執(zhí)行完case 5后的語句并遇見break語句時跳出switch分支。因此當(dāng)值為05時均顯示“不及格”。case 9后的語句為空,從case 9進(jìn)入后,直接往下執(zhí)行case 10后的語句序列,遇見break語句時跳出switch分支。因此,值為9和10時均顯示“優(yōu)”。循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) for 語句falsetruefor 循環(huán)結(jié)構(gòu)示意for 循環(huán)含義首先進(jìn)行,然后判斷,若成立則執(zhí)行;(若不成立,則結(jié)束循環(huán))執(zhí)行完后,再進(jìn)行,然后再進(jìn)行判斷,若成立,則繼續(xù)執(zhí)行(否則跳出循環(huán)),執(zhí)行完進(jìn)行,然后再
10、進(jìn)行,條件成立繼續(xù)執(zhí)行,(否則跳出循環(huán)),直到跳出循環(huán)關(guān)于for 循環(huán)語句的幾點(diǎn)說明是一個邏輯表達(dá)式和都應(yīng)當(dāng)具有副作用可以是復(fù)合語句,也可以是基本語句典型的for循環(huán)實(shí)例:for(int i=0;i100;i+=5) couti ;如果一開始就不成立,則一次也不執(zhí)行和可以為空,相當(dāng)于while循環(huán)為空意味著永真條件為空,可用于延遲一段時間例:分析以下程序段的執(zhí)行結(jié)果for(int I=0;I=20;I+) cout*;分析:第1次:循環(huán)初始化I=0,判斷條件I=20成立,第一次執(zhí)行循環(huán)體,輸出第一個*;第2次:進(jìn)行參數(shù)調(diào)整,I增1,I的值為1,條件成立,執(zhí)行第二次循環(huán),輸出第二個*第20次:I
11、為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; 例2:顯示并輸出如下所示的三角形: * 第0行:5空、1* * 第1行:4空、3* *第2行
12、:3空、5* *第3行:2空、7* *第4行:1空、9*第5行:0空、11*由以上得出:若行號為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 /每行輸出若干空格 for(j=0;ji+i+1;j+) cout* /然后輸出若干* cout“合計:”s; 書本70頁例3.11顯示輸出99乘法表。請看書本自主學(xué)習(xí)注:setw(2)功能是為下一個要輸出的數(shù)據(jù)設(shè)置輸
13、出寬度,該設(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 語句循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) do while 循環(huán)結(jié)構(gòu)示意falsetruedo while 循環(huán)含義不判斷條件直接執(zhí)行一次循環(huán)體,循環(huán)體執(zhí)行完后,再判斷循環(huán)條件,若條件為真,則再次執(zhí)行循環(huán)體,(若條件不成立,則跳出循環(huán)),在第二次循環(huán)體執(zhí)行完后,繼續(xù)先判斷循環(huán)條件,條件滿足,則執(zhí)行循環(huán)體,直到條件不滿足,跳出循環(huán)。do wh
14、ile 循環(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)實(shí)現(xiàn)用while 循環(huán)實(shí)現(xiàn)用兩種循環(huán)輸出相同的內(nèi)容:輸出:12345用While循環(huán)與dowhile循環(huán)等效:I=6;While(I=5)CoutI+; /循環(huán)體一次也沒執(zhí)行,因此無任何內(nèi)容輸出I=6;DoCoutI+;While(I0;I-) s+=I; /for循環(huán)8次實(shí)現(xiàn)s=8+7+1,
15、 且I的值為0循環(huán)結(jié)束時,s的值為36While(+I5) s+=I; /while循環(huán)4次,把14再加到s中,I的值為5時循環(huán)結(jié)束,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的值求方程的解 If(Delta0.0) cout0.0) cout“此方程有兩個不同的實(shí)數(shù)解”; cout(-B+sqrt(Delta)/(A
16、+A); cout“和”(-B-sqrt(Delta)/(A+A); else cout“此方程有兩個相同的實(shí)數(shù)解”-B/(A+A); break :continue :說明:這兩個語句通常與if語句同時使用,形如: if() break; if() continue當(dāng)if條件成立時,退出循環(huán)或提前結(jié)束本輪循環(huán)體的執(zhí)行循環(huán)特殊控制語句循環(huán)特殊控制語句 例:允許反復(fù)地輸入半徑,計算并顯示圓面積,直到輸入的半徑是0時為止(即輸入0是終止程序運(yùn)行的信號);若發(fā)現(xiàn)是輸入的半徑是負(fù)數(shù),提示操作者重新輸入。#include #define PI 3.1416 void main( ) double radiu
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計稅基礎(chǔ)施工方案
- 二零二五版電商直播團(tuán)隊店面營業(yè)員合作協(xié)議范本3篇
- 2025年度個人旅游費(fèi)用欠款合同樣本3篇
- 皮帶廊施工方案
- 墻裙油漆施工方案
- 白洋潮課程設(shè)計
- 慶春隧道施工方案
- 河道景觀道路施工方案
- 2025年新能源儲能技術(shù)投資入股分紅合同4篇
- 錐齒傳動軸課程設(shè)計
- 氣動調(diào)節(jié)閥調(diào)校
- 中考模擬考試化學(xué)試卷與答案解析(共三套)
- 新人教版五年級小學(xué)數(shù)學(xué)全冊奧數(shù)(含答案)
- 風(fēng)電場升壓站培訓(xùn)課件
- 收納盒注塑模具設(shè)計(論文-任務(wù)書-開題報告-圖紙)
- 博弈論全套課件
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 腦電信號處理與特征提取
- 高中數(shù)學(xué)知識點(diǎn)全總結(jié)(電子版)
- GB/T 10322.7-2004鐵礦石粒度分布的篩分測定
- 2023新譯林版新教材高中英語必修一重點(diǎn)詞組歸納總結(jié)
評論
0/150
提交評論