第二章基本控制結(jié)構(gòu)程序設(shè)計(jì)ppt課件_第1頁
第二章基本控制結(jié)構(gòu)程序設(shè)計(jì)ppt課件_第2頁
第二章基本控制結(jié)構(gòu)程序設(shè)計(jì)ppt課件_第3頁
第二章基本控制結(jié)構(gòu)程序設(shè)計(jì)ppt課件_第4頁
第二章基本控制結(jié)構(gòu)程序設(shè)計(jì)ppt課件_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、ok第二章第二章 基本控制結(jié)構(gòu)程序設(shè)計(jì)基本控制結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)的特點(diǎn)是任何程序都可由結(jié)構(gòu)化程序設(shè)計(jì)的特點(diǎn)是任何程序都可由三種基本結(jié)構(gòu)及其組合來描述。三種基本結(jié)構(gòu)及其組合來描述。本章將介紹本章將介紹C+分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的設(shè)分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的設(shè)計(jì)方法。還將介紹一些常用算法。計(jì)方法。還將介紹一些常用算法。ok第二章第二章 基本控制結(jié)構(gòu)程序設(shè)計(jì)基本控制結(jié)構(gòu)程序設(shè)計(jì)ok2.1.1 算算 法法 的的 概概 念念 2.1.3 算算 法描述的三種基本結(jié)構(gòu)法描述的三種基本結(jié)構(gòu)2.1.2 算算 法法 的的 表表 示示ok2.1.1 算算 法法 的的 概概 念念 算法:算法:算法是解決問題的步驟。算法

2、是解決問題的步驟。計(jì)算機(jī)算法的特征:計(jì)算機(jī)算法的特征: 可執(zhí)行性可執(zhí)行性 確定性確定性 有窮性有窮性 可輸入輸出信息可輸入輸出信息算法是程序設(shè)計(jì)學(xué)習(xí)的重點(diǎn)。算法是程序設(shè)計(jì)學(xué)習(xí)的重點(diǎn)。#include #define PI 3.14 int main() float r,h,v; coutrh; /r=6;h=12; v=PI*r*r*h; coutthe volume is v cbccmy) maxx;else max y;if (zmax) maxz;輸出輸出max;x7y12z10CPUmax12比較比較比較比較顯示結(jié)果:顯示結(jié)果:12流程圖流程圖條件塊1塊2真假演示算法執(zhí)行過程演示算法

3、執(zhí)行過程ok2.1.3算法描述的三種基本結(jié)構(gòu)算法描述的三種基本結(jié)構(gòu)(3) 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)流程圖流程圖條件塊真假【例【例2 23 3】求】求4 4個(gè)整數(shù)的和。個(gè)整數(shù)的和。 0sum4count12x顯示結(jié)果:顯示結(jié)果:60演示算法執(zhí)行過程演示算法執(zhí)行過程123142621642118600count4; /整數(shù)個(gè)數(shù)整數(shù)個(gè)數(shù)sum0; /累加和的初值累加和的初值while (count0) x輸入一個(gè)整數(shù)輸入一個(gè)整數(shù); s u ms u m + x ; countcount-1;輸出輸出sum;ok2.2 分支結(jié)構(gòu)程序設(shè)計(jì)分支結(jié)構(gòu)程序設(shè)計(jì) 對(duì)程序的運(yùn)行流程進(jìn)行控制,主要通過執(zhí)行對(duì)程序的運(yùn)行流程進(jìn)

4、行控制,主要通過執(zhí)行專門用來控制流程的語句來實(shí)現(xiàn)。專門用來控制流程的語句來實(shí)現(xiàn)。 分支語句是基本流程控制語句之一。分支語句是基本流程控制語句之一。C+C+提供提供三種分支語句。三種分支語句。2.2.1 if語句語句 2.2.2 if語句的嵌套語句的嵌套 2.2.4 swich語句語句 2.2.3 條件運(yùn)算符條件運(yùn)算符“?:” ok2.2.1 if 語句語句ifif語句基本格式:語句基本格式:1 1、if (if (表達(dá)式表達(dá)式) ) 語句語句1;1;2 2、if (if (表達(dá)式表達(dá)式) ) 語句語句1 1; else else語句語句2;2;ok嵌套嵌套ifif語句:語句:if if 語句中

5、,如果內(nèi)嵌語句又是語句中,如果內(nèi)嵌語句又是ifif語句,語句,就構(gòu)成了嵌套就構(gòu)成了嵌套ifif語句。語句。if if 語句可實(shí)現(xiàn)語句可實(shí)現(xiàn)二選一分支,而嵌套二選一分支,而嵌套ifif語句則可以實(shí)現(xiàn)語句則可以實(shí)現(xiàn)多選一的多路分支情況。多選一的多路分支情況。嵌套有兩種形式,嵌套在嵌套有兩種形式,嵌套在elseelse分支中分支中: :if (if (表達(dá)式表達(dá)式1) 1) 語句語句1;1;else if (else if (表達(dá)式表達(dá)式2) 2) 語句語句2;2; else if else if else else 語句語句n;n;嵌套在嵌套在ifif分支中:分支中:if (if () if ()

6、 if () ) 1; else else; 2; 2.2.2 if 語句的嵌套【例【例2.6】用嵌套】用嵌套if語句完成【例語句完成【例2.5】的任務(wù)。】的任務(wù)。okelseelse和和ifif的配對(duì)關(guān)系:的配對(duì)關(guān)系: C+ C+規(guī)定了規(guī)定了ifif和和elseelse的的“就近配對(duì)準(zhǔn)就近配對(duì)準(zhǔn)繩,即相距最近且還沒有配對(duì)的一對(duì)繩,即相距最近且還沒有配對(duì)的一對(duì)ifif和和elseelse首先配對(duì)。按上述規(guī)定,第二種嵌套形首先配對(duì)。按上述規(guī)定,第二種嵌套形式中的式中的elseelse應(yīng)與第二個(gè)應(yīng)與第二個(gè)ifif配對(duì)。如果根據(jù)程配對(duì)。如果根據(jù)程序的邏輯需要改變配對(duì)關(guān)系,則要將屬于同序的邏輯需要改變

7、配對(duì)關(guān)系,則要將屬于同一層的語句放在一對(duì)一層的語句放在一對(duì)“”“”中。如第二種嵌中。如第二種嵌套形式中,要讓套形式中,要讓elseelse和第一個(gè)和第一個(gè)ifif配對(duì),語句配對(duì),語句必須寫成:必須寫成:if (if (表達(dá)式表達(dá)式1) 1) if (if (表達(dá)式表達(dá)式2) 2) 語句語句1 ; 1 ; else else 語句語句2 ;2 ; 第二種嵌套形式較容易產(chǎn)生邏輯錯(cuò)誤,第二種嵌套形式較容易產(chǎn)生邏輯錯(cuò)誤,而第一種形式配對(duì)關(guān)系則非常明確,因此從而第一種形式配對(duì)關(guān)系則非常明確,因此從程序可讀性角度出發(fā),建議盡量使用第一種程序可讀性角度出發(fā),建議盡量使用第一種嵌套形式。嵌套形式。 2.2.2

8、 if 語句的嵌套o(hù)k配對(duì)關(guān)系實(shí)例:配對(duì)關(guān)系實(shí)例:/語句語句1:if(n%3=0)if(n%5=0) coutn是是15的倍數(shù)的倍數(shù)endl;else cout n是是3的倍數(shù)但不是的倍數(shù)但不是5的的倍數(shù)倍數(shù) endl;/語句語句2:if(n%3=0) if(n%5=0) coutn是是15的倍的倍數(shù)數(shù)endl; else cout n 不是不是3的倍數(shù)的倍數(shù)兩個(gè)語句的差別只在于一個(gè)兩個(gè)語句的差別只在于一個(gè)“”,但表,但表達(dá)的邏輯關(guān)系卻完全不同。達(dá)的邏輯關(guān)系卻完全不同。 【例2.7】 某商場(chǎng)購物優(yōu)惠活動(dòng)(p.37)【例【例2.82.8】 求一元二次方程的根求一元二次方程的根(p.38-39)(

9、p.38-39)。 練習(xí):編寫程序,輸入x,根據(jù)下面y和x的關(guān)系,計(jì)算y值并輸出3x-11 (x10)x (x1)2x-1 (1xx; if(x1) y=x; else if(x10) y=2*x-1; else y=3*x-11; couty;. 闡明:闡明:語句中的表達(dá)式可以是任意表達(dá)式:語句中的表達(dá)式可以是任意表達(dá)式: if(x) y=1/x; if(x) y=1/x; else y=10000; else y=10000; 一個(gè)一個(gè)ifif結(jié)構(gòu)不可分割:結(jié)構(gòu)不可分割: if(x) y=1/x; if(x) y=1/x; z=10; z=10; else y=10000; else y=

10、10000;一個(gè)分支中包含多個(gè)語句時(shí),要用一個(gè)分支中包含多個(gè)語句時(shí),要用 : if(a0) x=1; y=2; if(a0) x=1; y=2;/error C2181: illegal else without matching if/error C2181: illegal else without matching if 例:從鍵盤輸入三個(gè)整數(shù)到變量例:從鍵盤輸入三個(gè)整數(shù)到變量a,b,c,a,b,c,要求要求按從大到小的順序輸出。按從大到小的順序輸出。 兩種典型算法:兩種典型算法: 枚舉法將各種可能的排列枚舉出來)。枚舉法將各種可能的排列枚舉出來)。 換位法將換位法將a,b,ca,b,c

11、中的數(shù)據(jù)換位)。中的數(shù)據(jù)換位)。換位法換位法int main() int main() int a,b,c,t; int a,b,c,t; cinabc; cinabc; if(ab) t=a; a=b; b=t; if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(ac) t=a; a=c; c=t; if(bc) t=b; b=c; c=t; if(bc) t=b; b=c; c=t; coutatbtcendl; coutatbtcendl; 358538553abc課下練習(xí)改正下列代碼a) if (ival1!=ival2) ival1=iva

12、l2else ival1=ival2=0;b) if (ival1ival2)/執(zhí)行以下兩個(gè)語句 ival1=1; ival2=2;c) if (ival1=10) ival1=1; d) if ival1ival1endl; 上機(jī)總結(jié)2019.11.4) 上課前沒有預(yù)習(xí) 課下沒有上機(jī)練習(xí) 學(xué)習(xí)過程中浮躁不動(dòng)腦子去聽課)if(表達(dá)式) 語句1; 滿足表達(dá)式,表達(dá)式成立/可行,條件成立cin操作遇到的問題. int a,b;cinab; /輸入1.14 3.21 回車/cin.setstate(ios_base:failbit);cin.clear();while(cin.get()!=n) c

13、ontinue; /get rid of the rest of line. cinb; / 輸入 250課下再上機(jī)練習(xí)ok2.2.3 條件運(yùn)算符條件運(yùn)算符“?:” 三元運(yùn)算符:三元運(yùn)算符:三元運(yùn)算符條件運(yùn)算符三元運(yùn)算符條件運(yùn)算符“?:”“?:”可以用來簡(jiǎn)化可以用來簡(jiǎn)化if if語句表語句表達(dá)。其構(gòu)成的表達(dá)式格式為:達(dá)。其構(gòu)成的表達(dá)式格式為:表達(dá)式表達(dá)式1 ? 1 ? 表達(dá)式表達(dá)式2 : 2 : 表達(dá)式表達(dá)式3 3例如:例如:int a=6,b=7, min=ab?a:b; /min=6int a=6,b=7, min=ab?a:b; /min=6 min=ab?+a:+b; /min=7 a

14、=7 b=7 min=ab?+a:+b; /min=7 a=7 b=7 min=ab?a+:b+; /min=6 a=7 b=7 min=ascore; cinscore; switch (score) switch (score) case A: case a: case A: case a: coutexcellent; break;coutexcellent; break;case B: case b:case B: case b:coutgood; break;coutgood; break;default: coutfair; default: coutfair; ok(5 5從形式

15、上看,從形式上看,switchswitch語句的可讀性比嵌套語句的可讀性比嵌套ifif語句好,語句好,但不是所有多選一的問題都可由開關(guān)語句完成,這是因但不是所有多選一的問題都可由開關(guān)語句完成,這是因?yàn)殚_關(guān)語句中限定了條件表達(dá)式的取值類型。為開關(guān)語句中限定了條件表達(dá)式的取值類型。 ok【例【例2.9】 運(yùn)輸貨物實(shí)行分段計(jì)費(fèi)。運(yùn)輸貨物實(shí)行分段計(jì)費(fèi)。采用不帶采用不帶break的開關(guān)語句實(shí)例的開關(guān)語句實(shí)例【例【例2.10】 設(shè)計(jì)一個(gè)計(jì)算器程序,設(shè)計(jì)一個(gè)計(jì)算器程序,實(shí)現(xiàn)加、減、乘、除運(yùn)算。實(shí)現(xiàn)加、減、乘、除運(yùn)算。 2.2.4 switch語句ok循環(huán)控制語句是基本流程控制語句之一。循環(huán)控制語句是基本流程

16、控制語句之一。C+C+提供三種循環(huán)語句:提供三種循環(huán)語句:2.3.1 while語句語句 2.3.4 循環(huán)的嵌套循環(huán)的嵌套 2.3.3 for語句語句 2.3.2 do-while 語句語句 2.3 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)ok2.3.1 while 語語句句whilewhile語句也稱為當(dāng)循環(huán)。語句也稱為當(dāng)循環(huán)。語句格式為:語句格式為:while (while (表達(dá)式表達(dá)式)循環(huán)體語句;循環(huán)體語句; 圖圖2.5 while語句的執(zhí)行流程圖語句的執(zhí)行流程圖求表達(dá)式的值求表達(dá)式的值表達(dá)式表達(dá)式值為真值為真?是是否否執(zhí)行循環(huán)體語句執(zhí)行循環(huán)體語句【例【例2.11】 求求1+2+3+4+10

17、0的值。的值。ok2.3.1 while 語句語句留意:留意:在有循環(huán)語句的程序中,通常循環(huán)開始前在有循環(huán)語句的程序中,通常循環(huán)開始前對(duì)循環(huán)條件進(jìn)行初始化;而在循環(huán)體語對(duì)循環(huán)條件進(jìn)行初始化;而在循環(huán)體語句中要包含修改循環(huán)條件的語句,否則句中要包含修改循環(huán)條件的語句,否則循環(huán)將不能終止而陷入死循環(huán)。循環(huán)將不能終止而陷入死循環(huán)。C+表達(dá)方式靈活,上例中的循環(huán)語句還表達(dá)方式靈活,上例中的循環(huán)語句還可以寫成:可以寫成:while (i=n) sum+=i+;或者或者while (sum+=i+, i=n) ;/循環(huán)體為空語句循環(huán)體為空語句修改程序后在修改程序后在VC+平臺(tái)上運(yùn)行,看是否正平臺(tái)上運(yùn)行,看

18、是否正確確ok2.3.2 do-while 語句語句 do-while語句稱為直到語句稱為直到循環(huán),格式為:循環(huán),格式為: do 循環(huán)體語句循環(huán)體語句 while( 表達(dá)式表達(dá)式 ); 否否是是表達(dá)式的表達(dá)式的值為真值為真?執(zhí)行循環(huán)體語句執(zhí)行循環(huán)體語句求表達(dá)式的值求表達(dá)式的值圖圖2.6 do-while語句的執(zhí)行流程圖語句的執(zhí)行流程圖ok2.3.2 do-while 語句語句 do/while語句和語句和while語句的區(qū)別:語句的區(qū)別:do/while語句至少執(zhí)行一次循環(huán)體后再判斷語句至少執(zhí)行一次循環(huán)體后再判斷循環(huán)條件是否滿足;循環(huán)條件是否滿足;while語句先判斷條件是否滿足,然后才執(zhí)行語

19、句先判斷條件是否滿足,然后才執(zhí)行循環(huán)體??赡芤淮我膊粓?zhí)行。循環(huán)體??赡芤淮我膊粓?zhí)行。多數(shù)情況下可以互相替代。多數(shù)情況下可以互相替代?!纠纠?.12】 用迭代法求用迭代法求a的平方根近似值。的平方根近似值?!纠纠?.13】 輸入一段文本,統(tǒng)計(jì)文本的輸入一段文本,統(tǒng)計(jì)文本的行數(shù)、單詞數(shù)及字符數(shù)。行數(shù)、單詞數(shù)及字符數(shù)。 x=-1; do x=x*x; while( !x); D) 有語法錯(cuò)誤 C) 循環(huán)執(zhí)行一次B) 循環(huán)執(zhí)行三次A) 是死循環(huán)C)循環(huán)執(zhí)行一次 int y=10; do y-; while(-y); couty-0)&(y5); couty=y x=xendl; 寫出下列程

20、序段的運(yùn)行結(jié)果以及循環(huán)體中的語句共執(zhí)行了幾次。ok2.3.3 for 語句語句 for循環(huán)語句的格式循環(huán)語句的格式為:為:for ( 表達(dá)式表達(dá)式1; 表達(dá)式表達(dá)式2; 表達(dá)式表達(dá)式3 ) 循環(huán)體語句循環(huán)體語句 圖圖2.7 for語句的執(zhí)行流程圖語句的執(zhí)行流程圖否否是是求表達(dá)式求表達(dá)式1的值的值求表達(dá)式求表達(dá)式2的值的值表達(dá)式表達(dá)式2值值為真為真?執(zhí)行循環(huán)體語句執(zhí)行循環(huán)體語句求表達(dá)式求表達(dá)式3的值的值ok例:用例:用forfor語句實(shí)現(xiàn)語句實(shí)現(xiàn)1-101-10的累加求和算法:的累加求和算法:s=0;s=0;for(i=1;i=10;i+) s+=i; for(i=1;i=10;i+) s+=i

21、; 標(biāo)準(zhǔn)形式標(biāo)準(zhǔn)形式可以理解:可以理解: 循環(huán)變量循環(huán)變量i i從初值從初值1 1開始到終值開始到終值1010,步長(zhǎng)為,步長(zhǎng)為1 1,重復(fù)執(zhí),重復(fù)執(zhí)行循環(huán)體。行循環(huán)體。表達(dá)式表達(dá)式2表達(dá)式表達(dá)式3表達(dá)式表達(dá)式1 1循環(huán)體循環(huán)體forfor語句的常見變化:語句的常見變化: s=0; i=1; s=0; i=1; for(;i=10;i+)s+=i; for(;i=10;i+)s+=i; s=0; s=0; f o r ( i = 1 ; i = 1 0 ; ) s + = i + + ; f o r ( i = 1 ; i = 1 0 ; ) s + = i + + ; s=0;i=1; s=0

22、;i=1; f o r ( ; i = 1 0 ; ) s + = i + + ; f o r ( ; i 10) break; s=10;i=10; for(;-i;) s+=i;省略省略3 3個(gè)表達(dá)式個(gè)表達(dá)式表達(dá)式表達(dá)式2 2是是任意表達(dá)式任意表達(dá)式 s=0; for(i=1,j=10;ij;i+,j-) s+=i+j; 1 2 3 4 5 6 7 8 9 10在程序設(shè)計(jì)中不要過分追求它的多變性,力求簡(jiǎn)潔明了ij用逗號(hào)表達(dá)式用逗號(hào)表達(dá)式通用嗎?i=ji=j?okfor語句、while語句、do/while語句比較:(如何選擇?)int i=1,sum=0; /循環(huán)初始條件循環(huán)初始條件whi

23、le(i=4) sum+=i; i+; /修改循環(huán)條修改循環(huán)條件件 int i=1,sum=0;/循環(huán)初始條件循環(huán)初始條件do sum+=i; i+;/修改循環(huán)條修改循環(huán)條件件 while(i=4);int i,sum=0;for( i=1; i=4; i+ ) sum+=i; /*習(xí)慣上:表達(dá)式習(xí)慣上:表達(dá)式1:循環(huán)初始條件;表達(dá)式:循環(huán)初始條件;表達(dá)式2:循環(huán)終止條件;表達(dá)式循環(huán)終止條件;表達(dá)式3:修改循環(huán)條件:修改循環(huán)條件*/okokfor 語句的應(yīng)用語句的應(yīng)用 forfor語句的幾點(diǎn)說明:語句的幾點(diǎn)說明: 1 1、是先判斷型的,同、是先判斷型的,同whilewhile語句;語句; 2

24、2、使用更為靈活:、使用更為靈活: 三個(gè)表達(dá)式可以是任意表達(dá)式,因三個(gè)表達(dá)式可以是任意表達(dá)式,因此它們就可以實(shí)現(xiàn)循環(huán)初始化、計(jì)此它們就可以實(shí)現(xiàn)循環(huán)初始化、計(jì)算、修改循環(huán)條件等任務(wù),而不一算、修改循環(huán)條件等任務(wù),而不一定非在循環(huán)體中進(jìn)行;定非在循環(huán)體中進(jìn)行;okfor 語句的應(yīng)用語句的應(yīng)用【例【例2.142.14】運(yùn)行結(jié)果:】運(yùn)行結(jié)果:0 0 1 1 1 1 2 2 3 35 5 8 8 13 13 21 21 34 345555 89 89 144 144 233 377 233 377610610 987 987 1597 2584 4181 1597 2584 4181【例【例2.152.

25、15】 輸入一個(gè)不超過輸入一個(gè)不超過5 5位的位的整數(shù),將其反向后輸出。整數(shù),將其反向后輸出?!纠纠?.142.14】 設(shè)計(jì)程序輸出設(shè)計(jì)程序輸出FibonaciiFibonacii數(shù)列的前數(shù)列的前2020項(xiàng)項(xiàng)ok2.3.4 循環(huán)的嵌套循環(huán)的嵌套【例【例2.16】 打印九九表。打印九九表。嵌套循環(huán):嵌套循環(huán):當(dāng)循環(huán)語句中的循環(huán)體中又有循環(huán)語句時(shí),當(dāng)循環(huán)語句中的循環(huán)體中又有循環(huán)語句時(shí),就構(gòu)成了嵌套循環(huán)。就構(gòu)成了嵌套循環(huán)。嵌套層次一般不超過嵌套層次一般不超過3層,以保證可讀性。層,以保證可讀性?!纠纠?.172.17】打印如下圖形。】打印如下圖形。 * * * * * * * * * * * *

26、 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *ok2.4 轉(zhuǎn)向語句轉(zhuǎn)向語句break語句語句 return語句語句 goto 語句語句 continue語句語句 ok2.4 轉(zhuǎn)向語句轉(zhuǎn)向語句 break語句只能用在switch語句和循環(huán)語句中,用來跳出最近的

27、switch語句或循環(huán),轉(zhuǎn)去執(zhí)行switch語句或循環(huán)語句之后的語句。 在for循環(huán)中可以用break結(jié)束循環(huán):for(; ;) if() break; BreakBreak語句:語句:【例【例2.18】 給定正整數(shù)給定正整數(shù)m,判定其是否為素?cái)?shù)。,判定其是否為素?cái)?shù)。 a=10; y=0; do a+=2; y+=a; couta=a y=y50) break; while(a=14); 寫出下列程序段的運(yùn)行結(jié)果。a=12 y=12a=16 y=28a=16 y=44a=16 y=60 int x=3,y=6,a=0; while(x+!=(y-=1) a+=1; if (yx) break;

28、 coutxyaendl; x=5,y=4,a=1ok2.4 轉(zhuǎn)向語句轉(zhuǎn)向語句 continue continue語句只能用在循環(huán)語句中,用語句只能用在循環(huán)語句中,用來終止本次循環(huán)。當(dāng)程序執(zhí)行到來終止本次循環(huán)。當(dāng)程序執(zhí)行到continuecontinue語語句時(shí),將跳過其后尚未執(zhí)行的循環(huán)體語句,句時(shí),將跳過其后尚未執(zhí)行的循環(huán)體語句,開始下一次循環(huán)。下一次循環(huán)是否執(zhí)行仍然開始下一次循環(huán)。下一次循環(huán)是否執(zhí)行仍然取決于循環(huán)條件的判斷。取決于循環(huán)條件的判斷。 continue continue語句與語句與breakbreak語句的區(qū)別在于,語句的區(qū)別在于,continuecontinue語句結(jié)束的只是

29、本次循環(huán),而語句結(jié)束的只是本次循環(huán),而breakbreak結(jié)束的是整個(gè)循環(huán)。結(jié)束的是整個(gè)循環(huán)。 continuecontinue語句:語句:ok例:輸出例:輸出1100內(nèi)內(nèi)3的倍數(shù)。的倍數(shù)。分析:設(shè)置整型變量分析:設(shè)置整型變量I從從1變化到變化到100,依次,依次測(cè)試測(cè)試I是否是否3的倍數(shù),算法屬于窮舉法。的倍數(shù),算法屬于窮舉法。 for (I=1;I=100;I+) if ( I%3!=0) continue; /I不是不是3的倍數(shù),不輸出,繼續(xù)下一的倍數(shù),不輸出,繼續(xù)下一個(gè)個(gè)I; 輸出輸出I的值;的值;/I是是3的倍數(shù)才輸出的倍數(shù)才輸出 ok2.4 轉(zhuǎn)向語句轉(zhuǎn)向語句 goto goto語句

30、和標(biāo)號(hào)語句一起使用,所謂標(biāo)號(hào)語句語句和標(biāo)號(hào)語句一起使用,所謂標(biāo)號(hào)語句是用標(biāo)識(shí)符標(biāo)識(shí)的語句,它控制程序從是用標(biāo)識(shí)符標(biāo)識(shí)的語句,它控制程序從gotogoto語句所語句所在的地方轉(zhuǎn)移到標(biāo)號(hào)語句處。在的地方轉(zhuǎn)移到標(biāo)號(hào)語句處。gotogoto語句會(huì)導(dǎo)致程序語句會(huì)導(dǎo)致程序結(jié)構(gòu)混亂,可讀性降低,而且它所完成的功能完全結(jié)構(gòu)混亂,可讀性降低,而且它所完成的功能完全可以用算法的三種基本結(jié)構(gòu)實(shí)現(xiàn),因此一般不提倡可以用算法的三種基本結(jié)構(gòu)實(shí)現(xiàn),因此一般不提倡使用使用gotogoto語句。但在某些特定場(chǎng)合下語句。但在某些特定場(chǎng)合下gotogoto語句可能語句可能會(huì)顯出價(jià)值,比如在多層循環(huán)嵌套中,要從深層地會(huì)顯出價(jià)值,比如

31、在多層循環(huán)嵌套中,要從深層地方跳出所有循環(huán),如果用方跳出所有循環(huán),如果用breakbreak語句,不僅要使用多語句,不僅要使用多次,而且可讀性較差,這時(shí)次,而且可讀性較差,這時(shí)gotogoto語句可以發(fā)揮作用。語句可以發(fā)揮作用。 gotogoto語句:語句:ok2.4 轉(zhuǎn)向語句轉(zhuǎn)向語句return語句用于結(jié)束函數(shù)的執(zhí)行,返回調(diào)用者,語句用于結(jié)束函數(shù)的執(zhí)行,返回調(diào)用者,如果是主函數(shù),則返回至操作系統(tǒng)。如果是主函數(shù),則返回至操作系統(tǒng)。利用一個(gè)利用一個(gè)return語句可以將一個(gè)數(shù)據(jù)返回給調(diào)語句可以將一個(gè)數(shù)據(jù)返回給調(diào)用者。通常,當(dāng)函數(shù)的返回類型為用者。通常,當(dāng)函數(shù)的返回類型為void時(shí),時(shí), retu

32、rn語句可以省略,如果使用也僅作為函數(shù)語句可以省略,如果使用也僅作為函數(shù)或程序結(jié)束的標(biāo)志。或程序結(jié)束的標(biāo)志。returnreturn語句:語句: int main() int i, j, x=0; for(i=0; i2; i+) x+; for(j=0; j=3; j+) if(j%2) continue; x+; x+; coutxendl; B int main() int k=0; char c=A; do switch(c+) case A:k+; break; case B:k-; case C:k+=2; break; case D:k=k%2; continue; case E

33、:k=k*10; break; default :k=k/3; k+; while(cG); coutkendl; return 0; k=3 B) k=4 C) k=2 D) k=0 (1) c=Bk=2(2) c=Ck=4(3) c=Dk=7(4) c=Ek=1(5) c=Fk=11(6) c=Gk=4B int main() int i; for(i=1; i5; i+) if(i%2) cout“*”; else continue; cout“#”; cout$endl; return 0;*#*#*# $ B) #*#*#* $ C) *#*# $ D) #*#* $ C 假設(shè)假設(shè)

34、i , j 已定義為已定義為 int 類型,則以下程序段中內(nèi)循環(huán)體類型,則以下程序段中內(nèi)循環(huán)體 總的執(zhí)行次數(shù)是:總的執(zhí)行次數(shù)是: for( i =5; i ; i -) for(j=0; j100) break; C) short k=32765; D) short S=32765; do while(S+%2)|(S%2) k+; k+; S+; while(k0);Cshort :取值范圍取值范圍 -3276832767 327650 1 1 1 1 1 1 1 1 1 1 1 1 1 0 17 7 7 7 532766 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 7

35、7 7 7 6327670 1 1 1 1 1 1 1 1 1 1 1 1 1 1 17 7 7 7 7-327681 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0-327671 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 1-327661 0 0 0 0 0 0 0 0 0 0 0 0 0 1 01 0 0 0 0 2十進(jìn)制二進(jìn)制八進(jìn)制ok2.5 結(jié)構(gòu)化程序設(shè)計(jì)思想選讀)結(jié)構(gòu)化程序設(shè)計(jì)思想選讀)傳統(tǒng)的程序設(shè)計(jì)方法可以歸結(jié)為傳統(tǒng)的程序設(shè)計(jì)方法可以歸結(jié)為“程序程序= =算法算法+ +數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)”,將程序定義為處理數(shù)據(jù),將

36、程序定義為處理數(shù)據(jù)的一系列過程。這種設(shè)計(jì)方法的著眼點(diǎn)是面的一系列過程。這種設(shè)計(jì)方法的著眼點(diǎn)是面向過程的,特點(diǎn)是數(shù)據(jù)與程序分離,即數(shù)據(jù)向過程的,特點(diǎn)是數(shù)據(jù)與程序分離,即數(shù)據(jù)與數(shù)據(jù)處理分離。與數(shù)據(jù)處理分離。 結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是采用自頂向結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是采用自頂向下、逐步細(xì)化的設(shè)計(jì)方法和單入單出的控制下、逐步細(xì)化的設(shè)計(jì)方法和單入單出的控制結(jié)構(gòu)。結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)方法:結(jié)構(gòu)化程序設(shè)計(jì)方法:ok2.5 結(jié)構(gòu)化程序設(shè)計(jì)思想選讀)結(jié)構(gòu)化程序設(shè)計(jì)思想選讀)舉一個(gè)簡(jiǎn)單的例子,要求讀入一組整數(shù),統(tǒng)計(jì)其中舉一個(gè)簡(jiǎn)單的例子,要求讀入一組整數(shù),統(tǒng)計(jì)其中正整數(shù)和負(fù)整數(shù)的個(gè)數(shù)。正整數(shù)和負(fù)整數(shù)的個(gè)數(shù)。該任

37、務(wù)的模塊結(jié)構(gòu)及細(xì)化過程如下:該任務(wù)的模塊結(jié)構(gòu)及細(xì)化過程如下:1.1.讀入數(shù)據(jù)讀入數(shù)據(jù)2.2.統(tǒng)計(jì)正數(shù)、負(fù)數(shù)統(tǒng)計(jì)正數(shù)、負(fù)數(shù)的個(gè)數(shù)的個(gè)數(shù); ; 3. 輸出結(jié)果輸出結(jié)果 2.1 2.1 如數(shù)大于如數(shù)大于0 0,正整數(shù)個(gè)數(shù)加,正整數(shù)個(gè)數(shù)加1 12.2 2.2 如數(shù)小于如數(shù)小于0 0,負(fù)整數(shù)個(gè)數(shù)加,負(fù)整數(shù)個(gè)數(shù)加1 12.3: 2.3: 取下一個(gè)整數(shù)取下一個(gè)整數(shù)正整數(shù)個(gè)數(shù)為正整數(shù)個(gè)數(shù)為0 0;負(fù)整數(shù)個(gè)數(shù);負(fù)整數(shù)個(gè)數(shù)0 0 取第一個(gè)整數(shù)取第一個(gè)整數(shù)反復(fù)反復(fù)至統(tǒng)至統(tǒng)計(jì)完計(jì)完ok2.5 結(jié)構(gòu)化程序設(shè)計(jì)思想選讀)結(jié)構(gòu)化程序設(shè)計(jì)思想選讀)(1 1難以適應(yīng)大型軟件的設(shè)計(jì)。由于數(shù)據(jù)與數(shù)據(jù)處理相難以適應(yīng)大型軟件的設(shè)計(jì)。由

38、于數(shù)據(jù)與數(shù)據(jù)處理相對(duì)獨(dú)立,在大型多文件軟件系統(tǒng)中,隨著數(shù)據(jù)量的增大,對(duì)獨(dú)立,在大型多文件軟件系統(tǒng)中,隨著數(shù)據(jù)量的增大,程序越來越變得難以理解,多個(gè)文件之間的數(shù)據(jù)溝通也程序越來越變得難以理解,多個(gè)文件之間的數(shù)據(jù)溝通也變得困難,還容易產(chǎn)生意想不到的結(jié)果,即所謂副作用。變得困難,還容易產(chǎn)生意想不到的結(jié)果,即所謂副作用。 (2 2程序可重用性差。處理方法的改變或數(shù)據(jù)類型的改程序可重用性差。處理方法的改變或數(shù)據(jù)類型的改變都將導(dǎo)致重新設(shè)計(jì),這種額外開銷與可重用性相左,變都將導(dǎo)致重新設(shè)計(jì),這種額外開銷與可重用性相左,稱為重復(fù)投入稱為重復(fù)投入 結(jié)構(gòu)化程序設(shè)計(jì)缺陷:結(jié)構(gòu)化程序設(shè)計(jì)缺陷: ok2.6 常用算法的應(yīng)

39、用實(shí)例常用算法的應(yīng)用實(shí)例【例【例2.202.20】世界數(shù)學(xué)史上著名的】世界數(shù)學(xué)史上著名的“百雞問題百雞問題”【例【例2.212.21】用歐基里德算法也稱輾轉(zhuǎn)法)】用歐基里德算法也稱輾轉(zhuǎn)法) 求兩個(gè)整數(shù)的最大公約數(shù)求兩個(gè)整數(shù)的最大公約數(shù)【例【例2.232.23】輸入一個(gè)】輸入一個(gè)8 8位二進(jìn)制數(shù),將其轉(zhuǎn)位二進(jìn)制數(shù),將其轉(zhuǎn)換為十進(jìn)制數(shù)輸出。換為十進(jìn)制數(shù)輸出。【例【例2.192.19】 用篩選法求用篩選法求100100之內(nèi)的所有素?cái)?shù)之內(nèi)的所有素?cái)?shù)【例【例2.222.22】輸入一個(gè)小于】輸入一個(gè)小于1 1的數(shù)的數(shù)x x,求,求sinxsinx的的近似值近似值ok2.7 枚舉類型枚舉類型 2.7.1 2

40、.7.1 枚舉類型的定義枚舉類型的定義 2.7.2 2.7.2 枚舉變量的使用枚舉變量的使用 枚舉類型枚舉類型(enumerate)(enumerate)是是c+c+中的一種派生數(shù)據(jù)類中的一種派生數(shù)據(jù)類型,它是用戶定義的若干枚舉常量的集合。型,它是用戶定義的若干枚舉常量的集合。枚舉類型的變量,只能取枚舉常量表中所列的值。枚舉類型的變量,只能取枚舉常量表中所列的值。定義枚舉類型的主要目的是增加程序的可讀性。定義枚舉類型的主要目的是增加程序的可讀性。 ok2.7.1 枚舉類型的定義枚舉類型的定義 枚舉類型定義枚舉類型定義(enumeration)(enumeration):enum enum ;關(guān)

41、鍵字關(guān)鍵字enumenum指明其后的標(biāo)識(shí)符是一個(gè)類型的名指明其后的標(biāo)識(shí)符是一個(gè)類型的名字,枚舉常量表中列出該類型的所有取值,各字,枚舉常量表中列出該類型的所有取值,各枚舉常量之間以枚舉常量之間以“,”間隔。間隔。例:例:enum color_set1 RED, BLUE, WHITE, enum color_set1 RED, BLUE, WHITE, BLACK;BLACK;enum week Sun, Mon, Tue, Wed, Thu, Fri, enum week Sun, Mon, Tue, Wed, Thu, Fri, Sat;Sat;枚舉常量或稱枚舉成員是以標(biāo)識(shí)符形式表枚舉常量

42、或稱枚舉成員是以標(biāo)識(shí)符形式表示的整型量,非法定義實(shí)例:示的整型量,非法定義實(shí)例:e n u m l e t t e r _ s e t a , d , e n u m l e t t e r _ s e t a , d , F, s, T;F, s, T;/枚舉常量只能是標(biāo)識(shí)符枚舉常量只能是標(biāo)識(shí)符enum enum year_set2000,2019,2019,2019,2019,2019;year_set2000,2019,2019,2019,2019,2019; / /改為改為y2000y2000等則正確等則正確ok2.7.1 枚舉類型的定義枚舉類型的定義 枚舉常量:枚舉常量: 枚舉常量代

43、表該枚舉類型的變量可能取的值,枚舉常量代表該枚舉類型的變量可能取的值,編譯系統(tǒng)為每個(gè)枚舉常量指定一個(gè)整數(shù)值,缺省狀編譯系統(tǒng)為每個(gè)枚舉常量指定一個(gè)整數(shù)值,缺省狀態(tài)下,這個(gè)整數(shù)就是所列舉元素的序號(hào),序號(hào)從態(tài)下,這個(gè)整數(shù)就是所列舉元素的序號(hào),序號(hào)從0 0開始。如上例中開始。如上例中REDRED、 BLUE BLUE、 WHITE WHITE、 BLACK BLACK的值的值分別為分別為0 0、1 1、2 2、3 3。 用戶也可以在類型定義時(shí)為部分或全部枚舉常用戶也可以在類型定義時(shí)為部分或全部枚舉常量指定整數(shù)值,在第一個(gè)指定值之前的枚舉常量仍量指定整數(shù)值,在第一個(gè)指定值之前的枚舉常量仍按缺省方式取值,

44、而指定值之后的枚舉常量按依次按缺省方式取值,而指定值之后的枚舉常量按依次加加1 1的原則取值。各枚舉常量的值可以重復(fù),但各的原則取值。各枚舉常量的值可以重復(fù),但各枚舉常量標(biāo)識(shí)符必須不同。枚舉常量標(biāo)識(shí)符必須不同。例:例:enum fruit_set apple, orange, banana=1, enum fruit_set apple, orange, banana=1, peach, grapepeach, grapeenum week Sun=7, Mon=1, Tue, Wed, Thu, Fri, enum week Sun=7, Mon=1, Tue, Wed, Thu, Fri,

45、 Sat;Sat;枚舉常量枚舉常量appleapple、orangeorange、bananabanana、peachpeach、grapegrape的值分別為的值分別為0 0、1 1、1 1、2 2、3 3。枚舉常量。枚舉常量Sun, Mon, Sun, Mon, Tue, Wed, Thu, Fri, SatTue, Wed, Thu, Fri, Sat的值分別為的值分別為7 7、1 1、2 2、3 3、4 4、5 5、6 6。ok2.7.2 枚舉類型的變量的使用枚舉類型的變量的使用 枚舉類型應(yīng)用要點(diǎn):枚舉類型應(yīng)用要點(diǎn):1、定義枚舉類型之后,就可以定義枚舉類型、定義枚舉類型之后,就可以定義

46、枚舉類型的變量;亦可類型與變量同時(shí)定義甚至類型的變量;亦可類型與變量同時(shí)定義甚至類型名可?。好墒。篶olor_set1color1,color2;enumSun,Mon,Tue,Wed,Thu,Fri,Satweekday1,weekday2;2、枚舉變量的取值范圍就是整型數(shù)的一個(gè)子、枚舉變量的取值范圍就是整型數(shù)的一個(gè)子集。枚舉變量占用內(nèi)存的大小與整型數(shù)相同。集。枚舉變量占用內(nèi)存的大小與整型數(shù)相同。3、枚舉變量允許的操作只有賦值和關(guān)系運(yùn)算;、枚舉變量允許的操作只有賦值和關(guān)系運(yùn)算;如:如:color3=color4=BLUE;if(color3=color4)cout”相等相等”;cout

47、color3color1/非法非法coutcolor3/合法,輸出的是合法,輸出的是2從程序的合法性和可讀性出發(fā),枚舉變量的輸入輸出一般從程序的合法性和可讀性出發(fā),枚舉變量的輸入輸出一般都采用都采用switch語句將其轉(zhuǎn)換為字符或字符串。同時(shí),枚舉語句將其轉(zhuǎn)換為字符或字符串。同時(shí),枚舉類型數(shù)據(jù)的其他處理也往往應(yīng)用類型數(shù)據(jù)的其他處理也往往應(yīng)用switch語句。語句。2.7.2 枚舉類型的變量的使用枚舉類型的變量的使用 * *【例【例2.242.24】 口袋中有紅、黃、藍(lán)、白、黑五種口袋中有紅、黃、藍(lán)、白、黑五種顏色的球若干個(gè),每次從口袋中取三個(gè)不同顏色的顏色的球若干個(gè),每次從口袋中取三個(gè)不同顏色

48、的球,統(tǒng)計(jì)并輸出所有的取法。球,統(tǒng)計(jì)并輸出所有的取法。ok2.8 輸入輸出文件簡(jiǎn)介使用文件的步驟如下:使用文件的步驟如下:#include#include(1) (1) 說明一個(gè)文件流對(duì)象內(nèi)部文件)。文件流類說明一個(gè)文件流對(duì)象內(nèi)部文件)。文件流類型型ifstreamifstream支持從輸入文件提取數(shù)據(jù)的操作。而支持從輸入文件提取數(shù)據(jù)的操作。而文件流類型文件流類型ofstreamofstream完成數(shù)據(jù)寫入輸出文件的各完成數(shù)據(jù)寫入輸出文件的各種操作。種操作。ifstream ifile; /ifstream ifile; /定義輸入文件,定義輸入文件,ifileifile為文件名,為文件名,可

49、用任意標(biāo)識(shí)符可用任意標(biāo)識(shí)符ofstream ofile; /ofstream ofile; /定義輸出文件,定義輸出文件,ofileofile為文件名,為文件名,可用任意標(biāo)識(shí)符可用任意標(biāo)識(shí)符(2) (2) 打開文件。打開文件。ifile.open(”d:my_in_file.txt”);ifile.open(”d:my_in_file.txt”);ofile.open(”d:my_out_file.txt”);ofile.open(”d:my_out_file.txt”);引號(hào)中的引號(hào)中的d:my_in_file.txt” d:my_in_file.txt” 和和d:my_out_file.t

50、xtd:my_out_file.txt為磁盤文件路徑名,這樣為磁盤文件路徑名,這樣在文件流對(duì)象和磁盤文件名之間建立了聯(lián)系。在文件流對(duì)象和磁盤文件名之間建立了聯(lián)系。ok(3) 對(duì)文件進(jìn)行讀寫操作。最常見的文件讀寫是順序的,所對(duì)文件進(jìn)行讀寫操作。最常見的文件讀寫是順序的,所謂謂“順序指的是從文件頭開始進(jìn)行讀寫。順序讀寫可用順序指的是從文件頭開始進(jìn)行讀寫。順序讀寫可用C+的提取運(yùn)算符(的提取運(yùn)算符()和插入運(yùn)算符()和插入運(yùn)算符()進(jìn)展。也)進(jìn)展。也可以用讀字符的可以用讀字符的get()和讀字符串的和讀字符串的getline()等函數(shù)。讀寫等函數(shù)。讀寫是在文件緩沖區(qū)中進(jìn)行。是在文件緩沖區(qū)中進(jìn)行。(4

51、) 關(guān)閉文件。當(dāng)打開一個(gè)文件進(jìn)行讀寫后,應(yīng)該顯式地關(guān)關(guān)閉文件。當(dāng)打開一個(gè)文件進(jìn)行讀寫后,應(yīng)該顯式地關(guān)閉該文件。與打開文件相對(duì)應(yīng):閉該文件。與打開文件相對(duì)應(yīng):ifile.close();ofile.close();關(guān)閉文件時(shí),系統(tǒng)把與該文件相關(guān)聯(lián)的文件緩沖區(qū)關(guān)閉文件時(shí),系統(tǒng)把與該文件相關(guān)聯(lián)的文件緩沖區(qū)中的數(shù)據(jù)寫到磁盤文件中,保證文件的完整;同時(shí)把磁盤中的數(shù)據(jù)寫到磁盤文件中,保證文件的完整;同時(shí)把磁盤文件名與文件流對(duì)象之間的關(guān)聯(lián)斷開,可防止誤操作修改文件名與文件流對(duì)象之間的關(guān)聯(lián)斷開,可防止誤操作修改了磁盤文件。了磁盤文件。【例【例2.25】將百雞問題計(jì)算結(jié)果存入文件?!繉匐u問題計(jì)算結(jié)果存入文件。

52、【例【例2.26】讀出存放百雞問題計(jì)算結(jié)果的文件。】讀出存放百雞問題計(jì)算結(jié)果的文件。ok第二章第二章 基本控制結(jié)構(gòu)程序設(shè)計(jì)基本控制結(jié)構(gòu)程序設(shè)計(jì)終了歡迎再來!ok if 語句【例語句【例24】【例【例24】 輸入一個(gè)年份,判斷是否閏年。輸入一個(gè)年份,判斷是否閏年。算法分析:假定年份為算法分析:假定年份為year, 閏年的條件是閏年的條件是 : year%4=0&year%100!=0|year%400=0。int main( )int year;cout輸入年份輸入年份:year;if (year%4=0&year%100!=0|year%400=0)coutyear“年是閏年年

53、是閏年endl;else cout year“年不是閏年年不是閏年endl;return 0; okok分析:讀入三個(gè)數(shù),先求出兩個(gè)數(shù)中較大分析:讀入三個(gè)數(shù),先求出兩個(gè)數(shù)中較大者,再將該大數(shù)與第三個(gè)數(shù)比較,求出最者,再將該大數(shù)與第三個(gè)數(shù)比較,求出最大數(shù)。大數(shù)。int main() int a, b, c, max; coutabc; couta=atb=bt c=cb) max=a; else max=b; i f ( c m a x ) c o u t “ 最 大 數(shù)最 大 數(shù)為為:”cendl; else cout “最大數(shù)為最大數(shù)為:”max=b?max=amax=b否否是是cmax?m

54、ax=c輸出輸出max圖圖2.2 例例2.5流程圖流程圖ok/方法方法1:采用:采用if中嵌套形式中嵌套形式int main()int a, b, c, max;coutabc;couta=atb=b tc=cb) if(ac) max=a; /ab且且ac else max=c; /ab且且ac) max=b; /acelse max=c; /a=b且且bccout最大數(shù)最大數(shù)max=max; return 0; if 語句【例語句【例26】【例【例2.6】用嵌套】用嵌套if語句完成【例語句完成【例2.5】的任務(wù)?!康娜蝿?wù)。okok/方法方法2:采用:采用else中嵌套形式中嵌套形式int

55、main()int a,b,c,max;coutabc;couta=atb=b tc=cb&ac) max=a;else if(ba&bc) max=b; else max=c;cout最大數(shù)為最大數(shù)為:max=max; return 0; if 語句【例語句【例26】okok【例【例2.72.7】 某商場(chǎng)優(yōu)惠活動(dòng)規(guī)定,某種商品單某商場(chǎng)優(yōu)惠活動(dòng)規(guī)定,某種商品單價(jià)為價(jià)為8080元,一次購買元,一次購買5 5件以上包含件以上包含5 5件件1010件以下件以下不包含不包含1010件打件打9 9折,一次購買折,一次購買1010件以上包含件以上包含1010件打件打8 8折。設(shè)計(jì)程序根據(jù)客

56、戶的購買量計(jì)折。設(shè)計(jì)程序根據(jù)客戶的購買量計(jì) 算總價(jià)。算總價(jià)。算法算法1、輸入購買件數(shù)、輸入購買件數(shù)count,設(shè)置單價(jià),設(shè)置單價(jià)price=80(元元) 2、根據(jù)、根據(jù)count值確定折扣值確定折扣discount;3、實(shí)際售價(jià)、實(shí)際售價(jià)amount=price*count*discount;4、輸出、輸出amount的值。的值。算法細(xì)化:算法細(xì)化:2.1、ifcount=5&count=10discount=0.8; if 語句【例27】okint main() float price=80,discount,amount;/單價(jià)單價(jià),折扣折扣,總價(jià)總價(jià) int count;/購買件

57、數(shù)購買件數(shù) cout輸入購買件數(shù)輸入購買件數(shù):count; if(count5) discount=1; else if(count10) discount=0.9; else discount=0.8; amount=price*count*discount; cout購買件數(shù):購買件數(shù):countendl; cout單價(jià):?jiǎn)蝺r(jià):pricet折扣:折扣:“discountendl; cout總價(jià):總價(jià):amount0, 方程有兩個(gè)不同實(shí)根;方程有兩個(gè)不同實(shí)根;* 若若delta0?否否輸出兩個(gè)相輸出兩個(gè)相等實(shí)根等實(shí)根否否是是輸出輸出無實(shí)根無實(shí)根 if 語句【例28】ok#include #i

58、nclude using namespace std;int main()float a,b,c;float delta,x1,x2;const float zero=0.0001; /定義一個(gè)很小的常數(shù)定義一個(gè)很小的常數(shù)cout輸入三個(gè)系數(shù)輸入三個(gè)系數(shù)a(a!=0), b, c:abc;couta=atb=btc=cendl;delta=b*b-4*a*c;求一元二次方程的根源程序求一元二次方程的根源程序 if 語句【例28】okif(fabs(delta)zero) /絕對(duì)值很小的數(shù)即被認(rèn)為是絕對(duì)值很小的數(shù)即被認(rèn)為是0cout方程有兩個(gè)相同實(shí)根方程有兩個(gè)相同實(shí)根:;coutx1=x2=-b

59、/(2*a)0) delta=sqrt(delta);x1=(-b+delta)/(2*a);x2=(-b-delta)/(2*a);cout方程有兩個(gè)不同實(shí)根方程有兩個(gè)不同實(shí)根:;coutx1=x1tx2=“x2endl;else cout方程無實(shí)根方程無實(shí)根!endl; /delta0return 0;請(qǐng)?jiān)谡?qǐng)?jiān)赩C+平臺(tái)上運(yùn)行,輸入不同的系數(shù),使程序所有分支平臺(tái)上運(yùn)行,輸入不同的系數(shù),使程序所有分支都可以被執(zhí)行一次。都可以被執(zhí)行一次。 if 語句【例28】ok不帶不帶breakbreak的開關(guān)語句實(shí)例的開關(guān)語句實(shí)例【例【例2.9】 運(yùn)輸公司對(duì)所運(yùn)貨物實(shí)行分段計(jì)費(fèi)。設(shè)運(yùn)運(yùn)輸公司對(duì)所運(yùn)貨物實(shí)行

60、分段計(jì)費(fèi)。設(shè)運(yùn)輸里程為輸里程為s,則運(yùn)費(fèi)打折情況如下:,則運(yùn)費(fèi)打折情況如下:s250 不打折扣不打折扣250=s500 2%折扣折扣500=s10005%折扣折扣1000=s20008%折扣折扣2000=s300010%折扣折扣3000=s 15%折扣折扣2000=s3000 10%折扣折扣1000=s2000 8%折扣折扣500=s1000 5%折扣折扣250=s500 2%折扣折扣s250 不打折扣不打折扣不帶不帶breakbreak的開關(guān)語句實(shí)例的開關(guān)語句實(shí)例okint main() int c,s;double p,w,d,f; cout輸入運(yùn)輸單價(jià)輸入運(yùn)輸單價(jià)p,重量,重量w和里程和里程s:pws; f=0; c=s/250;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論