C++程序設(shè)計(jì)教程第三章_第1頁(yè)
C++程序設(shè)計(jì)教程第三章_第2頁(yè)
C++程序設(shè)計(jì)教程第三章_第3頁(yè)
C++程序設(shè)計(jì)教程第三章_第4頁(yè)
C++程序設(shè)計(jì)教程第三章_第5頁(yè)
已閱讀5頁(yè),還剩31頁(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)介

1、C+程序設(shè)計(jì)教程,Email:,C+程序設(shè)計(jì)教程 牛琳,1,目錄,第1章 C/C+概述及開(kāi)發(fā)環(huán)境簡(jiǎn)介 第2章 基本數(shù)據(jù)類(lèi)型與表達(dá)式 第3章 控制結(jié)構(gòu) 第4章 數(shù)組與字符串 第5章 函數(shù) 第6章 指針 ,C+程序設(shè)計(jì)教程 牛琳,2,第3章 控制結(jié)構(gòu),本章學(xué)習(xí)目標(biāo) 了解算法的概念及結(jié)構(gòu)化程序設(shè)計(jì)的特點(diǎn) 掌握C+的基本控制結(jié)構(gòu) 分支控制結(jié)構(gòu):if-else語(yǔ)句 多分支控制結(jié)構(gòu):switch語(yǔ)句 三種循環(huán)結(jié)構(gòu):for循環(huán)、while循環(huán)和do-while循環(huán)語(yǔ)句 了解其它控制語(yǔ)句,C+程序設(shè)計(jì)教程 牛琳,3,主要內(nèi)容,3.1 程序的基本控制結(jié)構(gòu) 3.2 C+的控制結(jié)構(gòu) 3.2.1 順序結(jié)構(gòu) 3.2.2

2、 分支結(jié)構(gòu) 3.2.3 循環(huán)結(jié)構(gòu) 3.3 C+的其它控制轉(zhuǎn)移語(yǔ)句,C+程序設(shè)計(jì)教程 牛琳,4,3.1 程序的基本控制結(jié)構(gòu),在C+中,編寫(xiě)程序就是將解決實(shí)際問(wèn)題所使用的算法用C+語(yǔ)句和函數(shù)進(jìn)行描述,換句話說(shuō)就是組織程序的結(jié)構(gòu)。 算法的概念(補(bǔ)充) 算法:對(duì)某個(gè)特定問(wèn)題求解步驟的一種描述稱(chēng)為算法。 算法的性能評(píng)價(jià)指標(biāo): 1、執(zhí)行算法所耗費(fèi)的時(shí)間,稱(chēng)為算法的時(shí)間復(fù)雜度. 2、算法中所使用的額外存儲(chǔ)空間的開(kāi)銷(xiāo),稱(chēng)為算法的空間復(fù)雜度。 算法的描述方法: 自然語(yǔ)言、傳統(tǒng)流程圖、N-S結(jié)構(gòu)化流程圖和偽代碼。,C+程序設(shè)計(jì)教程 牛琳,5,結(jié)構(gòu)化程序設(shè)計(jì): 結(jié)構(gòu)化程序設(shè)計(jì)的主要思想:自頂向下,逐步取精,即功能分

3、解(即模塊化)的思想。 按照結(jié)構(gòu)化程序設(shè)計(jì)的觀點(diǎn),任何算法都可以通過(guò)由程序模塊組成的3種基本程序結(jié)構(gòu)順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的組合來(lái)實(shí)現(xiàn)。 C+即支持面向?qū)ο蟮脑O(shè)計(jì)思想,同時(shí)支持結(jié)構(gòu)化程序設(shè)計(jì)思想。,C+程序設(shè)計(jì)教程 牛琳,6,3.2 C+的控制結(jié)構(gòu),C+的控制結(jié)構(gòu): 順序結(jié)構(gòu): 分支結(jié)構(gòu): 雙分支結(jié)構(gòu):if-else語(yǔ)句 多分支結(jié)構(gòu):switch語(yǔ)句 循環(huán)結(jié)構(gòu): while循環(huán)語(yǔ)句 do-while循環(huán)語(yǔ)句 for循環(huán)語(yǔ)句,C+程序設(shè)計(jì)教程 牛琳,7,順序結(jié)構(gòu),分支結(jié)構(gòu),循環(huán)結(jié)構(gòu)(當(dāng)型),循環(huán)結(jié)構(gòu)(直到型),多分支結(jié)構(gòu),C+程序設(shè)計(jì)教程 牛琳,8,3.2.1 順序結(jié)構(gòu),只需將語(yǔ)句順序排列

4、即可。 例如,交換兩個(gè)變量p和q的值的程序段: r=p; p=q; q=r; 順序結(jié)構(gòu)是C+程序默認(rèn)的執(zhí)行方式,選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)可以打破程序中默認(rèn)的順序執(zhí)行結(jié)構(gòu)。,C+程序設(shè)計(jì)教程 牛琳,9,注意: VB.net中格式為 ifThenElseEnd if,3.2.2 分支結(jié)構(gòu),雙分支結(jié)構(gòu): 1、ifelse語(yǔ)句 其基本格式如下: if() 語(yǔ)句序列1 else 語(yǔ)句序列2 ,不要添加分號(hào),語(yǔ)句序列由多條語(yǔ)句構(gòu)成,由花括號(hào)括起來(lái),每條語(yǔ)句必須以分號(hào)結(jié)尾,如果語(yǔ)句序列中只包含一條語(yǔ)句,則可以不使用花括號(hào),C+程序設(shè)計(jì)教程 牛琳,10,ifelse語(yǔ)句的嵌套使用(如:例3_1) 其基本格式如下:

5、if () 語(yǔ)句序列1 else if () 語(yǔ)句序列2 else if ( ) 語(yǔ)句序列n else 語(yǔ)句序列n+1 ,能夠?qū)崿F(xiàn)多分支選擇, 可與switch多分支語(yǔ)句 相互轉(zhuǎn)換,C+程序設(shè)計(jì)教程 牛琳,11,if語(yǔ)句的嵌套使用 【例3-1】 編程實(shí)現(xiàn)分段函數(shù),C+程序設(shè)計(jì)教程 牛琳,12,2、switch語(yǔ)句:,用于實(shí)現(xiàn)多重分支,格式如下: switch() case; 模塊1 case; 模塊2 case; 模塊n-1 default:模塊n ,switch語(yǔ)句的執(zhí)行過(guò)程: 計(jì)算的值 與每個(gè)case后的值依次比較 相等則執(zhí)行其后每個(gè)case模塊(無(wú)論表達(dá)式的值與這些case模塊的進(jìn)入值是

6、否相等) 如果需要在執(zhí)行完本case模塊后就跳出switch語(yǔ)句,可在case模塊后加上break語(yǔ)句,這樣才能實(shí)現(xiàn)真正的多路分支。,表達(dá)式的值必須屬于整型、字符型或枚舉型,C+程序設(shè)計(jì)教程 牛琳,13,switch語(yǔ)句的特點(diǎn): 根據(jù)具體的整數(shù)表達(dá)式的值判斷執(zhí)行的路線。 因此, 應(yīng)用switch語(yǔ)句的關(guān)鍵問(wèn)題就是將轉(zhuǎn)換條件構(gòu)造成合適的整數(shù)表達(dá)式。 靈活運(yùn)用break語(yǔ)句可編寫(xiě)出所需的轉(zhuǎn)換程序。,C+程序設(shè)計(jì)教程 牛琳,14,【例3-2】 編寫(xiě)程序,將學(xué)生成績(jī)由百分制轉(zhuǎn)換為五級(jí)制。 90100優(yōu)秀,8089良好,7079中等,6069及格、60分以下不及格。 算法分析: 本題屬于多分支結(jié)構(gòu),適合

7、使用switch語(yǔ)句。 本題轉(zhuǎn)換標(biāo)準(zhǔn)為學(xué)生分?jǐn)?shù)所屬的范圍。因此,可利用整數(shù)的除法規(guī)則,構(gòu)造一個(gè)整型表達(dá)式old_grade/10用于將分?jǐn)?shù)段化為單個(gè)整數(shù)值。 (例如,分?jǐn)?shù)6069中的各分?jǐn)?shù)值,上述表達(dá)式的值均為6。) 最后,在switch語(yǔ)句中各模塊中靈活運(yùn)用的break語(yǔ)句,即可編寫(xiě)出所需的轉(zhuǎn)換程序。,C+程序設(shè)計(jì)教程 牛琳,15,構(gòu)造整型表達(dá)式使 分?jǐn)?shù)段化為單個(gè)整數(shù)值,靈活運(yùn)用的break語(yǔ)句,C+程序設(shè)計(jì)教程 牛琳,16,3.2.3 循環(huán)結(jié)構(gòu),C+中,循環(huán)結(jié)構(gòu)主要通過(guò)3種語(yǔ)句結(jié)構(gòu)實(shí)現(xiàn)。 1)while語(yǔ)句(當(dāng)型循環(huán)) 2)dowhile語(yǔ)句(直到型循環(huán)) 3)for語(yǔ)句(for循環(huán),計(jì)數(shù)

8、循環(huán)) 單層for循環(huán) 雙層for循環(huán),C+程序設(shè)計(jì)教程 牛琳,17,1)while語(yǔ)句(當(dāng)型循環(huán)),while語(yǔ)句格式: while() 循環(huán)體 注意: 在循環(huán)體內(nèi)應(yīng)該有修改的部分,以此確保在執(zhí)行一定次數(shù)之后可以退出循環(huán),否則循環(huán)永不會(huì)結(jié)束,就會(huì)成為“死循環(huán)”。 當(dāng)while后面的表達(dá)式成立就執(zhí)行循環(huán)體語(yǔ)句,不一定非有循環(huán)變量控制循環(huán)次數(shù),適合于循環(huán)次數(shù)不確定場(chǎng)合。,C+程序設(shè)計(jì)教程 牛琳,18,例:某人在銀行存款5000元,按年利率5%計(jì),多少年后本息之和能達(dá)10000元? 計(jì)算本息和的公式: (p為本金 ,r是年利率 ,n是存款年數(shù) , a為本息和),公式的理解:后一年的本息和是前一年的

9、(1+r)倍。,C+程序設(shè)計(jì)教程 牛琳,19,2)dowhile語(yǔ)句(直到型循環(huán)),dowhile語(yǔ)句格式: do 循環(huán)體 while(); 無(wú)論是否滿足條件都會(huì)先執(zhí)行一次循環(huán)體。直到條件不滿足為止,重復(fù)執(zhí)行循環(huán)體。 當(dāng)循環(huán)至少應(yīng)該被執(zhí)行一次的情況下,while語(yǔ)句與dowhile語(yǔ)句可以相互轉(zhuǎn)換。,C+程序設(shè)計(jì)教程 牛琳,20,用dowhile語(yǔ)句實(shí)現(xiàn)上例,有分號(hào),C+程序設(shè)計(jì)教程 牛琳,21,3)for語(yǔ)句(for循環(huán)),for語(yǔ)句是一種應(yīng)用更加廣泛、靈活的循環(huán)語(yǔ)句。 格式如下: for( i=初值 ; i終值 ;i+) 注意:與VB.net格式區(qū)別。 For i =初值 To 終值 St

10、ep 步長(zhǎng) 循環(huán)體 Next,i為循環(huán)變量,控制循環(huán)次數(shù), i自增自減均可,以;分隔,可轉(zhuǎn)換為 i=初值; for( ; i終值; ) i+; ,C+程序設(shè)計(jì)教程 牛琳,22,應(yīng)用:計(jì)數(shù),例:計(jì)算1+1+1+1,(共100個(gè)1相加)。 #include using namespace std; int main() int count=0;/count用來(lái)存放計(jì)算結(jié)果 for(int i=1;i=100;i+) /循環(huán)100次 count=count+1; /計(jì)數(shù) cout 1+1+1+1 =countendl; return 0; ,累加常量1,C+程序設(shè)計(jì)教程 牛琳,23,應(yīng)用:求累加和,

11、例3_5計(jì)算1+2+3+100。 #include using namespace std; int main() int sum=0; /sum用來(lái)存放計(jì)算結(jié)果 for(int i=1;i=100;i+) /循環(huán)100次 sum=sum+i;/求累加和 cout1+2+3+100=sumendl; return 0; ,C+程序設(shè)計(jì)教程 牛琳,24,應(yīng)用:計(jì)算n!,累乘積,累乘積:u初值取1,C+程序設(shè)計(jì)教程 牛琳,25,應(yīng)用:打印水仙花數(shù),C+程序設(shè)計(jì)教程 牛琳,26,雙層for循環(huán),例3_10編寫(xiě)程序制作九九乘法表。 算法:利用雙層for循環(huán)按行按列輸出數(shù)據(jù)。,C+程序設(shè)計(jì)教程 牛琳,2

12、7,雙層for循環(huán),第i行循環(huán)i次,C+程序設(shè)計(jì)教程 牛琳,28,練習(xí):模仿例3_10編程輸出如圖所示圖形及數(shù)字,C+程序設(shè)計(jì)教程 牛琳,29,3.3 C+的其它控制語(yǔ)句(自學(xué)內(nèi)容),1.goto語(yǔ)句 又稱(chēng)無(wú)條件轉(zhuǎn)移語(yǔ)句,格式如下: goto 語(yǔ)句標(biāo)號(hào); 其中語(yǔ)句標(biāo)號(hào)是書(shū)寫(xiě)在某一語(yǔ)句行開(kāi)頭的標(biāo)號(hào) 。但是,一般不主張使用goto語(yǔ)句, 以免造成程序流程的混亂 。 2.break和continue語(yǔ)句 break;在switch語(yǔ)句中,可使程序跳出switch結(jié)構(gòu)。在循環(huán)語(yǔ)句中,可使程序跳出該循環(huán),提前結(jié)束整個(gè)循環(huán)。 continue;用于提前結(jié)束本輪循環(huán),繼續(xù)下一輪循環(huán)。 在解決某些應(yīng)用問(wèn)題時(shí)恰

13、當(dāng)?shù)厥褂眠@些語(yǔ)句,可使程序更加靈活。 3.exit( )和abort( )函數(shù) 均為中止整個(gè)程序的運(yùn)行。使用是需要 #include,C+程序設(shè)計(jì)教程 牛琳,30,應(yīng)用:for循環(huán),C+程序設(shè)計(jì)教程 牛琳,31,C+程序設(shè)計(jì)教程 牛琳,32,應(yīng)用:用while循環(huán)求解數(shù)列問(wèn)題,例3-3計(jì)算e值(利用通項(xiàng)公式) 算法:定義3個(gè)變量e、n和u,分別用于存放以計(jì)算出結(jié)果的近似值、當(dāng)前項(xiàng)序列號(hào)和當(dāng)前通項(xiàng)值。 用偽代碼描述的算法為: e=1.0;n=1;u=1.0; while(通項(xiàng)u大于等于10的-7次冪) 計(jì)算新的通項(xiàng)值; 將新通項(xiàng)值加到結(jié)果近似值上; 準(zhǔn)備處理下一項(xiàng); ,C+程序設(shè)計(jì)教程 牛琳,33,e=1.0;n=1;u=1.0; while(通項(xiàng)u大于等于10的-7次冪) 計(jì)算新的通項(xiàng)值; 將新通項(xiàng)值加到結(jié)果近似值上; 準(zhǔn)備處理下一項(xiàng); ,C+程序設(shè)計(jì)教程 牛琳,34,編程提示,編程的一個(gè)主要內(nèi)容就是確定解決問(wèn)題的算法,然后再利用某種程序設(shè)計(jì)語(yǔ)言完成算法到程序的轉(zhuǎn)換。 代碼的書(shū)寫(xiě)應(yīng)該盡量層次清

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論