C++電子(上)第二章_第1頁
C++電子(上)第二章_第2頁
C++電子(上)第二章_第3頁
C++電子(上)第二章_第4頁
C++電子(上)第二章_第5頁
已閱讀5頁,還剩110頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、ok整理課件第二章第二章 基本控制結(jié)構(gòu)程序設(shè)計基本控制結(jié)構(gòu)程序設(shè)計結(jié)構(gòu)化程序設(shè)計的特點(diǎn)是任何程序都可由結(jié)構(gòu)化程序設(shè)計的特點(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è)計方法。還將介紹一些計方法。還將介紹一些常用算法常用算法。ok整理課件第二章第二章 基本控制結(jié)構(gòu)程序設(shè)計基本控制結(jié)構(gòu)程序設(shè)計ok整理課件2.1.1 算算 法法 的的 概概 念念 2.1.3 算算 法描述的三種基本結(jié)構(gòu)法描述的三種基本結(jié)構(gòu)2.1.2 算算 法法 的的 表表 示示ok整理課件2.1.1 算算 法法 的的 概概 念念 算法:算

2、法:算法是解決問題的步驟。算法是解決問題的步驟。計算機(jī)算法的特征:計算機(jī)算法的特征: 可執(zhí)行性可執(zhí)行性 確定性確定性 有窮性有窮性 可輸入輸出信息可輸入輸出信息(1)(1)算法是程序設(shè)計學(xué)習(xí)的重點(diǎn)。算法是程序設(shè)計學(xué)習(xí)的重點(diǎn)。ok整理課件流程圖:流程圖:流程圖是圖形化的表示方法,比較直觀,基本流程圖是圖形化的表示方法,比較直觀,基本組成元件包括矩形框、菱形框、箭頭線等。其組成元件包括矩形框、菱形框、箭頭線等。其中矩形框表示要執(zhí)行的指令,在框內(nèi)標(biāo)注指令中矩形框表示要執(zhí)行的指令,在框內(nèi)標(biāo)注指令內(nèi)容;菱形框表示要判斷其中表達(dá)式的值是真內(nèi)容;菱形框表示要判斷其中表達(dá)式的值是真還是假;箭頭線則標(biāo)示指令的流

3、程方向。還是假;箭頭線則標(biāo)示指令的流程方向。偽碼:偽碼:偽碼是介于自然語言和程序設(shè)計語言之間的一偽碼是介于自然語言和程序設(shè)計語言之間的一種類自然語言的表示方法,書寫形式自由,容種類自然語言的表示方法,書寫形式自由,容易轉(zhuǎn)換為程序。易轉(zhuǎn)換為程序。 ok整理課件活動圖:活動圖:UMLUML活動圖(活動圖(activity diagramactivity diagram)用于計算流程和工作)用于計算流程和工作流程建模。通常使用活動圖來表達(dá)順序程序的流程,這流程建模。通常使用活動圖來表達(dá)順序程序的流程,這點(diǎn)與傳統(tǒng)的流程圖很相似,僅僅圖示方法上有所不同。點(diǎn)與傳統(tǒng)的流程圖很相似,僅僅圖示方法上有所不同。活

4、動圖要素:活動圖要素:1 1)活動(活動(activityactivity):用一個上下為直線兩側(cè)為圓弧:用一個上下為直線兩側(cè)為圓弧的框表示,并在框內(nèi)寫明活動的名稱。的框表示,并在框內(nèi)寫明活動的名稱。2 2)轉(zhuǎn)移(轉(zhuǎn)移(transitiontransition):采用箭頭表示。:采用箭頭表示。3 3)分支(分支(branchbranch):采用菱形符號。:采用菱形符號。4 4)注解(注解(notenote):采用右上角折疊的矩形表示,說明:采用右上角折疊的矩形表示,說明UMLUML圖中符號的意義,它與被說明的符號間用虛線連接。圖中符號的意義,它與被說明的符號間用虛線連接。5 5)起點(diǎn):起點(diǎn):起

5、始標(biāo)志,采用黑色實(shí)心圓點(diǎn)表示。起始標(biāo)志,采用黑色實(shí)心圓點(diǎn)表示。6 6)終點(diǎn):終點(diǎn):結(jié)束標(biāo)志,采用實(shí)心的小同心圓表示。結(jié)束標(biāo)志,采用實(shí)心的小同心圓表示。ok整理課件3 循循 環(huán)環(huán) 結(jié)結(jié) 構(gòu)構(gòu)1 順順 序序 結(jié)結(jié) 構(gòu)構(gòu)2 分分 支支 結(jié)結(jié) 構(gòu)構(gòu)算法的基本結(jié)構(gòu):算法的基本結(jié)構(gòu):對算法的理論研究和實(shí)踐表明,任何算法的描述對算法的理論研究和實(shí)踐表明,任何算法的描述都可以分解為三種基本結(jié)構(gòu)或它們的組合,這三都可以分解為三種基本結(jié)構(gòu)或它們的組合,這三種基本結(jié)構(gòu)是種基本結(jié)構(gòu)是順序結(jié)構(gòu)順序結(jié)構(gòu)、分支結(jié)構(gòu)分支結(jié)構(gòu)和和循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)。ok整理課件num115;(1) 順序結(jié)構(gòu)順序結(jié)構(gòu)【例【例2 21 1】 求兩求

6、兩數(shù)之和。數(shù)之和。 寄存器35顯示結(jié)果:顯示結(jié)果:35 num115 num220 sum35num220;sumnum1+num2; 演示算法執(zhí)行過程演示算法執(zhí)行過程輸出輸出sum;活動圖ok整理課件(2) 分支結(jié)構(gòu)分支結(jié)構(gòu)【例【例22】 輸入三個數(shù),輸出其中的輸入三個數(shù),輸出其中的最大數(shù)。最大數(shù)。 x7;y12;z10;if(xy) maxx;else max y;if (zmax) maxz;輸出輸出max;x7y12z10CPUmax12比較比較比較比較顯示結(jié)果:顯示結(jié)果:12演示算法執(zhí)行過程演示算法執(zhí)行過程ok整理課件【例【例2 23 3】求】求4 4個整數(shù)的和。個整數(shù)的和。 0su

7、m4count12x顯示結(jié)果:顯示結(jié)果:60演示算法執(zhí)行過程演示算法執(zhí)行過程123142621642118600count4; /整數(shù)個數(shù)整數(shù)個數(shù)sum0; /累加和的初值累加和的初值while (count0) x輸入一個整數(shù)輸入一個整數(shù); s u m s u m + x ; countcount-1;輸出輸出sum;ok整理課件2.2 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計 對程序的運(yùn)行流程進(jìn)行控制,主要通過執(zhí)行對程序的運(yùn)行流程進(jìn)行控制,主要通過執(zhí)行專門用來控制流程的語句來實(shí)現(xiàn)。專門用來控制流程的語句來實(shí)現(xiàn)。 分支語句分支語句是基本流程控制語句之一。是基本流程控制語句之一。C+C+提供提供三種分

8、支語句。三種分支語句。2.2.1 if語句語句 2.2.2 if語句的嵌套語句的嵌套 2.2.4 swich語句語句 2.2.3 條件運(yùn)算符條件運(yùn)算符“?:”?:” ok整理課件2.2.1 if 語句語句ifif語句基本格式:語句基本格式:1、if (表達(dá)式表達(dá)式) 語句語句1;2、if (表達(dá)式表達(dá)式) 語句語句1; else語句語句2;【】【】 輸入一個年份,判斷是否閏年。輸入一個年份,判斷是否閏年?!纠纠?.5】 從鍵盤上輸入三個整數(shù),輸出從鍵盤上輸入三個整數(shù),輸出其中的最大數(shù)。其中的最大數(shù)。ok整理課件嵌套嵌套ifif語句:語句:if if 語句中,如果內(nèi)嵌語句又是語句中,如果內(nèi)嵌語

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

10、用嵌套if語句完成【例語句完成【例2.5】的任務(wù)?!康娜蝿?wù)。ok整理課件elseelse和和ifif的配對關(guān)系:的配對關(guān)系: C+C+規(guī)定了規(guī)定了ifif和和elseelse的的“就近配對就近配對”原則,即相距最近原則,即相距最近且還沒有配對的一對且還沒有配對的一對ifif和和elseelse首先配對。按上述規(guī)定,第首先配對。按上述規(guī)定,第二種嵌套形式中的二種嵌套形式中的elseelse應(yīng)與第二個應(yīng)與第二個ifif配對。如果根據(jù)程序配對。如果根據(jù)程序的邏輯需要改變配對關(guān)系,則要將屬于同一層的語句放在的邏輯需要改變配對關(guān)系,則要將屬于同一層的語句放在一對一對“”中。如第二種嵌套形式中,要讓中。如

11、第二種嵌套形式中,要讓elseelse和第一個和第一個ifif配對,語句必須寫成:配對,語句必須寫成:ifif( (表達(dá)式表達(dá)式1)1)if if ( (表達(dá)式表達(dá)式2) 2) 語句語句1;1; else else 語句語句2 ;2 ; 第二種嵌套形式較容易產(chǎn)生邏輯錯誤,而第一種形式第二種嵌套形式較容易產(chǎn)生邏輯錯誤,而第一種形式配對關(guān)系則非常明確,因此從程序可讀性角度出發(fā),配對關(guān)系則非常明確,因此從程序可讀性角度出發(fā),建議建議盡量使用第一種嵌套形式。盡量使用第一種嵌套形式。 2.2.2 if 語句的嵌套語句的嵌套o(hù)k整理課件配對關(guān)系實(shí)例:配對關(guān)系實(shí)例:/語句語句1 1:ifif(n%3=0)(

12、n%3=0)ifif(n%5=0) coutn(n%5=0) coutn是是1515的倍數(shù)的倍數(shù)endl;endl;else else cout n cout n是是3 3的倍數(shù)但不是的倍數(shù)但不是5 5的倍數(shù)的倍數(shù) endl; endl;/語句語句2 2:ifif(n%3=0)(n%3=0) ifif(n%5=0) coutn(n%5=0) coutn是是1515的倍數(shù)的倍數(shù)endl;endl; elseelse cout n cout n 不是不是3 3的倍數(shù)的倍數(shù)兩個語句的差別只在于一個兩個語句的差別只在于一個“”,但表達(dá)的邏輯關(guān)系卻,但表達(dá)的邏輯關(guān)系卻完全不同。完全不同。 【例【例2.7

13、2.7】 某商場購物優(yōu)惠活動某商場購物優(yōu)惠活動【例【例2.82.8】 求一元二次方程的根。求一元二次方程的根。ok整理課件2.2.3 條件運(yùn)算符條件運(yùn)算符“?:” 三元運(yùn)算符:三元運(yùn)算符:三元運(yùn)算符條件運(yùn)算符三元運(yùn)算符條件運(yùn)算符“?:”?:”可以用來簡化可以用來簡化ifif語句表達(dá)。其語句表達(dá)。其構(gòu)成的表達(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; int a=6,b=7; min=ab?a:b; /min=6/min=6 min=ab?+a:+b; min=ab?+a:+

14、b; /min=7 a=7 b=7/min=7 a=7 b=7 min=ab?a+:b+; min=ascore; switch (score) case A: case a: coutexcellent; break;case B: case b:coutgood; break;default: coutfair; ok整理課件ok【例【例2.9】 運(yùn)輸貨物實(shí)行運(yùn)輸貨物實(shí)行分段計費(fèi)分段計費(fèi)。采用不采用不帶帶breakbreak的的開關(guān)語句實(shí)例開關(guān)語句實(shí)例【例【例2.10】 設(shè)計一個計算器程序,設(shè)計一個計算器程序,實(shí)現(xiàn)加、減、乘、除運(yùn)算。實(shí)現(xiàn)加、減、乘、除運(yùn)算。 2.2.4 switch語句語

15、句ok整理課件循環(huán)控制語句循環(huán)控制語句是基本流程控制語句之一。是基本流程控制語句之一。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è)計循環(huán)結(jié)構(gòu)程序設(shè)計ok整理課件2.3.1 while 語句語句whilewhile語句也稱為當(dāng)循環(huán)。語句也稱為當(dāng)循環(huán)。語句格式為:語句格式為:while (while (表達(dá)式表達(dá)式) )循環(huán)體語句;循環(huán)體語句; 【例【例2.11】 求求1+2+3+4+100的值。的值。ok整理課件2.3.1 while 語句語

16、句注意:注意:在有循環(huán)語句的程序中,通常循環(huán)開始前對循環(huán)條件進(jìn)在有循環(huán)語句的程序中,通常循環(huán)開始前對循環(huán)條件進(jìn)行初始化;而在循環(huán)體語句中要包含修改循環(huán)條件的行初始化;而在循環(huán)體語句中要包含修改循環(huán)條件的語句,否則循環(huán)將不能終止而陷入死循環(huán)。語句,否則循環(huán)將不能終止而陷入死循環(huán)。C+表達(dá)方式靈活,例表達(dá)方式靈活,例2.11中的循環(huán)語句還可以寫成:中的循環(huán)語句還可以寫成:while (i=n) sum+=i+;或者或者while (sum+=i+, i=n) ;/循環(huán)體為空語句循環(huán)體為空語句這兩種表達(dá)方式與例這兩種表達(dá)方式與例2.11中的循環(huán)語句從執(zhí)行結(jié)果看是完中的循環(huán)語句從執(zhí)行結(jié)果看是完全等價的

17、。需要說明的是,雖然全等價的。需要說明的是,雖然C+可以讓代碼最大可以讓代碼最大限度優(yōu)化,但往往造成可讀性降低,因此程序設(shè)計者限度優(yōu)化,但往往造成可讀性降低,因此程序設(shè)計者只需理解這種表達(dá)方法的意義,而設(shè)計時主要追求的只需理解這種表達(dá)方法的意義,而設(shè)計時主要追求的目標(biāo)應(yīng)是目標(biāo)應(yīng)是可讀性可讀性。ok整理課件2.3.2 do-while 語句語句 do-while語句稱為語句稱為直到直到循環(huán)循環(huán),格式為:,格式為: do 循環(huán)體語句循環(huán)體語句 while( 表達(dá)式表達(dá)式 ) ok整理課件2.3.2 do-while 語句語句 do/while語句和語句和while語句的區(qū)別:語句的區(qū)別:do/wh

18、ile語句至少執(zhí)行一次循環(huán)體后再判斷語句至少執(zhí)行一次循環(huán)體后再判斷循環(huán)條件是否滿足;循環(huán)條件是否滿足;while語句先判斷條件是否滿足,然后才執(zhí)行語句先判斷條件是否滿足,然后才執(zhí)行循環(huán)體??赡芤淮我膊粓?zhí)行。循環(huán)體。可能一次也不執(zhí)行。多數(shù)情況下可以互相替代。多數(shù)情況下可以互相替代。【例【例2.12】 用迭代法求用迭代法求a的平方根近似值。的平方根近似值?!纠纠?.13】 輸入一段文本,統(tǒng)計文本的輸入一段文本,統(tǒng)計文本的行數(shù)、單詞數(shù)及字符數(shù)。行數(shù)、單詞數(shù)及字符數(shù)。ok整理課件2.3.3 for 語句語句 for循環(huán)語句的格式:循環(huán)語句的格式:for ( 表達(dá)式表達(dá)式1; 表達(dá)式表達(dá)式2; 表達(dá)式

19、表達(dá)式3 ) 循環(huán)體語句循環(huán)體語句 ok執(zhí)行過程為:先求表達(dá)式1的值,再求表達(dá)式2的值,判斷表達(dá)式2的值,如果為真,則執(zhí)行循環(huán)體語句,之后求表達(dá)式3的值,然后再計算表達(dá)式2的值,再判斷表達(dá)式2的值,決定是否執(zhí)行循環(huán)體,如此重復(fù),直到表達(dá)式2的值為假,結(jié)束該循環(huán)語句。 ok整理課件for語句、語句、while語句、語句、do/while語句比較:語句比較:int i=1,sum=0; /循環(huán)初始條件循環(huán)初始條件while(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)條件 wh

20、ile(i=4);int i,sum=0;for( i=1; i=4; i+ )sum+=i; / /* *習(xí)慣上:表達(dá)式習(xí)慣上:表達(dá)式1 1:循環(huán)初始條件;表達(dá)式:循環(huán)初始條件;表達(dá)式2 2:循環(huán):循環(huán)終止條件;表達(dá)式終止條件;表達(dá)式3 3:修改循環(huán)條件:修改循環(huán)條件* */ /okok整理課件for 語句的應(yīng)用語句的應(yīng)用forfor語句的幾點(diǎn)說明:語句的幾點(diǎn)說明:(1) for語句屬于先判斷型,與語句屬于先判斷型,與while語句完全等同。語句完全等同。(2) for語句中的三個表達(dá)式都是包含逗號表達(dá)式在內(nèi)的語句中的三個表達(dá)式都是包含逗號表達(dá)式在內(nèi)的任意表達(dá)式。任意表達(dá)式。 如【例如【例2

21、.11】中的循環(huán)部分用】中的循環(huán)部分用for語句可描述為:語句可描述為: for (i=1, sum=0; i=100; i+) sum+=i;(3) for語句中的三個表達(dá)式可部分或全部省略,但兩個語句中的三個表達(dá)式可部分或全部省略,但兩個分號不能省略。如上述語句還可寫為:分號不能省略。如上述語句還可寫為:i=1; sum=0;for ( ;i=100; ) sum+=i; i+; 實(shí)際上,表達(dá)式實(shí)際上,表達(dá)式2也可省略,形如也可省略,形如for (; ;) 這種情況下,約定表達(dá)式這種情況下,約定表達(dá)式2的值為的值為1,即等同,即等同for (; 1;) 死循環(huán),用死循環(huán),用break跳出。

22、跳出。ok整理課件for 語句的應(yīng)用語句的應(yīng)用【例【例2.142.14】運(yùn)行結(jié)果:】運(yùn)行結(jié)果:0 1 1 2 35 8 13 21 3455 89 144 233 377610 987 1597 2584 4181那么怎樣才能從兔子問題推導(dǎo)出那么怎樣才能從兔子問題推導(dǎo)出Fibonacci數(shù)列呢?數(shù)列呢?設(shè)本月底兔子數(shù)為設(shè)本月底兔子數(shù)為a,上月底兔子數(shù),上月底兔子數(shù)b,兩月前月底兔子數(shù)為,兩月前月底兔子數(shù)為c。那么兩月前的所有兔子,包括老兔子和當(dāng)月新生的兔子本月那么兩月前的所有兔子,包括老兔子和當(dāng)月新生的兔子本月都可以生小兔子,即本月新生兔子總數(shù)是兩月前的兔子數(shù)都可以生小兔子,即本月新生兔子總數(shù)

23、是兩月前的兔子數(shù)c,所以本月兔子總數(shù)所以本月兔子總數(shù)a等于上月兔子數(shù)等于上月兔子數(shù)b與兩月前兔子數(shù)與兩月前兔子數(shù)c(即本即本月新生兔子數(shù)月新生兔子數(shù))之和,即:之和,即:a=b+c; 這就是這就是Fibonacci數(shù)列。數(shù)列?!纠纠?.142.14】 設(shè)計程序輸出設(shè)計程序輸出FibonacciFibonacci數(shù)列的前數(shù)列的前2020項項ok整理課件for 語句的應(yīng)用語句的應(yīng)用也可以另設(shè)計一個算法:安排四個變量:兔子總數(shù)也可以另設(shè)計一個算法:安排四個變量:兔子總數(shù)s,成年,成年兔數(shù)量兔數(shù)量a,一月兔數(shù)量,一月兔數(shù)量b,初生兔數(shù)量,初生兔數(shù)量c;a=a+b; /本月成年兔為上月一月兔與成年兔之

24、和本月成年兔為上月一月兔與成年兔之和b=c; /本月一月兔數(shù)量為上月初生兔本月一月兔數(shù)量為上月初生兔c=a; /本月底初生兔數(shù)量為本月成年兔數(shù)量本月底初生兔數(shù)量為本月成年兔數(shù)量s=a+b+c; /本月底兔總數(shù)本月底兔總數(shù)代入初值:代入初值:a=0; b=0; c=1; 就可以進(jìn)行遞推。就可以進(jìn)行遞推?!纠纠?.152.15】 輸入一個不超過輸入一個不超過9 9位的整數(shù),將其反向位的整數(shù),將其反向后輸出。后輸出。ok整理課件 循環(huán)的嵌套循環(huán)的嵌套【例【例2.16】 打印九九表。打印九九表。嵌套循環(huán):嵌套循環(huán):當(dāng)循環(huán)語句中的循環(huán)體中又有循環(huán)語句時,就構(gòu)成了嵌套當(dāng)循環(huán)語句中的循環(huán)體中又有循環(huán)語句時

25、,就構(gòu)成了嵌套循環(huán)。循環(huán)。嵌套層次一般不超過嵌套層次一般不超過3層,以保證可讀性。層,以保證可讀性?!纠纠?.172.17】打印如下圖形?!看蛴∪缦聢D形。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *ok整理課件 轉(zhuǎn)向語句轉(zhuǎn)向語句break語句語句 return語句語句 goto 語句語句 continue語句語句 ok整理課件 轉(zhuǎn)向語句轉(zhuǎn)向語句 break語句只能用在語句只能用在switch語句語句和和循環(huán)語句循環(huán)語句中,

26、中,用來跳出用來跳出switch語句或提前終止循環(huán),轉(zhuǎn)去執(zhí)行語句或提前終止循環(huán),轉(zhuǎn)去執(zhí)行switch語句或循環(huán)語句之后的語句。語句或循環(huán)語句之后的語句。 在在for循環(huán)中可以用循環(huán)中可以用break結(jié)束循環(huán):結(jié)束循環(huán):for(; ;) if() break; 在多重循環(huán)中,在多重循環(huán)中,break語句只能終止其所在的循環(huán)語句。語句只能終止其所在的循環(huán)語句。BreakBreak語句:語句:【例【例2.18】 給定正整數(shù)給定正整數(shù)m,判定其是否為素數(shù)。,判定其是否為素數(shù)。ok整理課件 轉(zhuǎn)向語句轉(zhuǎn)向語句 continue continue語句只能用在語句只能用在循環(huán)語句循環(huán)語句中,用中,用來來終止本

27、次循環(huán)終止本次循環(huán)。當(dāng)程序執(zhí)行到。當(dāng)程序執(zhí)行到continuecontinue語語句時,將跳過其后尚未執(zhí)行的循環(huán)體語句,句時,將跳過其后尚未執(zhí)行的循環(huán)體語句,開始下一次循環(huán)開始下一次循環(huán)。下一次循環(huán)是否執(zhí)行仍然。下一次循環(huán)是否執(zhí)行仍然取決于循環(huán)條件的判斷。取決于循環(huán)條件的判斷。 continuecontinue語句與語句與breakbreak語句的區(qū)別在于,語句的區(qū)別在于,continuecontinue語句結(jié)束的只是語句結(jié)束的只是本次循環(huán)本次循環(huán),而,而breakbreak結(jié)束的是結(jié)束的是整個循環(huán)整個循環(huán)。 continuecontinue語句:語句:ok整理課件例:例:輸出輸出1100內(nèi)內(nèi)

28、3的倍數(shù)。的倍數(shù)。分析:設(shè)置整型變量分析:設(shè)置整型變量I從從1變化到變化到100,依次測試,依次測試I是否是否3的倍數(shù),算法屬于窮舉法。的倍數(shù),算法屬于窮舉法。 for (I=1;I=100;I+) if ( I%3!=0) continue; /I不是不是3的倍數(shù),不輸出,繼續(xù)下一個的倍數(shù),不輸出,繼續(xù)下一個I; 輸出輸出I的值;的值;/I是是3的倍數(shù)才輸出的倍數(shù)才輸出 ok整理課件 轉(zhuǎn)向語句轉(zhuǎn)向語句 goto goto語句和標(biāo)號語句一起使用,所謂標(biāo)號語句語句和標(biāo)號語句一起使用,所謂標(biāo)號語句是用標(biāo)識符標(biāo)識的語句,它控制程序從是用標(biāo)識符標(biāo)識的語句,它控制程序從gotogoto語句所語句所在的地

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

30、,這時gotogoto語句可以發(fā)揮作用。語句可以發(fā)揮作用。 gotogoto語句:語句:ok整理課件 轉(zhuǎn)向語句轉(zhuǎn)向語句return語句用于結(jié)束函數(shù)的執(zhí)行,返回調(diào)用者,語句用于結(jié)束函數(shù)的執(zhí)行,返回調(diào)用者,如果是主函數(shù),則返回至操作系統(tǒng)。如果是主函數(shù),則返回至操作系統(tǒng)。利用一個利用一個return語句可以將一個數(shù)據(jù)返回給調(diào)語句可以將一個數(shù)據(jù)返回給調(diào)用者。通常,當(dāng)函數(shù)的返回類型為用者。通常,當(dāng)函數(shù)的返回類型為void時,時, return語句可以省略,如果使用也僅作為函數(shù)語句可以省略,如果使用也僅作為函數(shù)或程序結(jié)束的標(biāo)志。或程序結(jié)束的標(biāo)志。return語句:語句:ok整理課件2.5 結(jié)構(gòu)化程序設(shè)計思

31、想(選讀)結(jié)構(gòu)化程序設(shè)計思想(選讀)傳統(tǒng)的程序設(shè)計方法可以歸結(jié)為,將程序定義為處理數(shù)據(jù)的一系列過程。這種設(shè)計方法的著眼點(diǎn)是,特點(diǎn)是數(shù)據(jù)與程序分離,即數(shù)據(jù)與數(shù)據(jù)處理分離。 結(jié)構(gòu)化程序設(shè)計的基本思想是采用的設(shè)計方法和的控制結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計方法:結(jié)構(gòu)化程序設(shè)計方法:ok整理課件2.5 結(jié)構(gòu)化程序設(shè)計思想(選讀)結(jié)構(gòu)化程序設(shè)計思想(選讀)舉一個簡單的例子,要求讀入一組整數(shù),統(tǒng)計其中舉一個簡單的例子,要求讀入一組整數(shù),統(tǒng)計其中正整數(shù)和負(fù)整數(shù)的個數(shù)。正整數(shù)和負(fù)整數(shù)的個數(shù)。該任務(wù)的模塊結(jié)構(gòu)及細(xì)化過程如下:該任務(wù)的模塊結(jié)構(gòu)及細(xì)化過程如下:1.1.讀入數(shù)據(jù)讀入數(shù)據(jù)2.2.統(tǒng)計正數(shù)、負(fù)數(shù)統(tǒng)計正數(shù)、負(fù)數(shù)的個數(shù)的

32、個數(shù); ; 3. 輸出結(jié)果輸出結(jié)果 2.1 2.1 如數(shù)大于如數(shù)大于0 0,正整數(shù)個數(shù)加,正整數(shù)個數(shù)加1 12.2 2.2 如數(shù)小于如數(shù)小于0 0,負(fù)整數(shù)個數(shù)加,負(fù)整數(shù)個數(shù)加1 12.3: 2.3: 取下一個整數(shù)取下一個整數(shù)正整數(shù)個數(shù)為正整數(shù)個數(shù)為0 0;負(fù)整數(shù)個數(shù);負(fù)整數(shù)個數(shù)0 0 取第一個整數(shù)取第一個整數(shù)重復(fù)重復(fù)至統(tǒng)至統(tǒng)計完計完ok整理課件2.5 結(jié)構(gòu)化程序設(shè)計思想(選讀)結(jié)構(gòu)化程序設(shè)計思想(選讀)(1 1)難以適應(yīng)大型軟件的設(shè)計。由于數(shù)據(jù)與數(shù)據(jù)處理相)難以適應(yīng)大型軟件的設(shè)計。由于數(shù)據(jù)與數(shù)據(jù)處理相對獨(dú)立,在大型多文件軟件系統(tǒng)中,隨著數(shù)據(jù)量的增大,對獨(dú)立,在大型多文件軟件系統(tǒng)中,隨著數(shù)據(jù)量的

33、增大,程序越來越變得難以理解,多個文件之間的數(shù)據(jù)溝通也程序越來越變得難以理解,多個文件之間的數(shù)據(jù)溝通也變得困難,還容易產(chǎn)生意想不到的結(jié)果,即所謂副作用。變得困難,還容易產(chǎn)生意想不到的結(jié)果,即所謂副作用。 (2 2)程序可重用性差。處理方法的改變或數(shù)據(jù)類型的改)程序可重用性差。處理方法的改變或數(shù)據(jù)類型的改變都將導(dǎo)致重新設(shè)計,這種額外開銷與可重用性相左,變都將導(dǎo)致重新設(shè)計,這種額外開銷與可重用性相左,稱為重復(fù)投入稱為重復(fù)投入 結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計缺陷:缺陷: ok整理課件 常用算法的應(yīng)用實(shí)例常用算法的應(yīng)用實(shí)例【例【例2.202.20】中國】中國古代數(shù)學(xué)史上著名的古代數(shù)學(xué)史上著名的“百雞問題

34、百雞問題”【例【例2.212.21】用歐基里德算法(也稱輾轉(zhuǎn)法)用歐基里德算法(也稱輾轉(zhuǎn)法) 求兩個整數(shù)的最大公約數(shù)求兩個整數(shù)的最大公約數(shù)【例【例2.232.23】輸入一個輸入一個8 8位二進(jìn)制數(shù),將其轉(zhuǎn)位二進(jìn)制數(shù),將其轉(zhuǎn)換為十進(jìn)制數(shù)輸出。換為十進(jìn)制數(shù)輸出。【例【例2.192.19】 用篩選法求用篩選法求100100之內(nèi)的所有素數(shù)之內(nèi)的所有素數(shù)【例【例2.222.22】輸入一個小于輸入一個小于1 1的數(shù)的數(shù)x x,求,求sinxsinx的的近似值近似值ok整理課件2.7 枚舉類型枚舉類型 2.7.1 2.7.1 枚舉類型的定義枚舉類型的定義 2.7.2 2.7.2 枚舉變量的使用枚舉變量的使用

35、 枚舉類型枚舉類型(enumerate)(enumerate)是是c+c+中的一種派生數(shù)據(jù)類中的一種派生數(shù)據(jù)類型,它是用戶定義的若干枚舉常量的集合。型,它是用戶定義的若干枚舉常量的集合。枚舉類型的變量,只能取枚舉常量表中所列的值。枚舉類型的變量,只能取枚舉常量表中所列的值。定義枚舉類型的主要定義枚舉類型的主要目的是增加程序的可讀性目的是增加程序的可讀性。 ok整理課件2.7.1 枚舉類型的定義枚舉類型的定義 枚舉類型定義:枚舉類型定義:enum ;關(guān)鍵字關(guān)鍵字enum指明其后的標(biāo)識符是一個類型的名字,枚舉常量指明其后的標(biāo)識符是一個類型的名字,枚舉常量表中列出該類型的所有取值,各枚舉常量之間以表

36、中列出該類型的所有取值,各枚舉常量之間以“,”間隔。間隔。例:例:enum color_set1 RED, BLUE, WHITE, BLACK;enum week Sun, Mon, Tue, Wed, Thu, Fri, Sat;枚舉常量(或稱枚舉成員)是以標(biāo)識符形式表示的整型量,枚舉常量(或稱枚舉成員)是以標(biāo)識符形式表示的整型量,非法定義實(shí)例:非法定義實(shí)例:enum letter_set a, d, F, s, T;/枚舉常量只能是標(biāo)識符枚舉常量只能是標(biāo)識符enum year_set2000,2001,2002,2003,2004,2005; /改為改為y2000等則正確等則正確ok整理

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

38、值之前的枚舉常量仍按缺省方式取值,而指定值之后的枚舉常量按依次加而指定值之后的枚舉常量按依次加1的原則取值。各枚舉常的原則取值。各枚舉常量的值可以重復(fù),但各枚舉常量標(biāo)識符必須不同。量的值可以重復(fù),但各枚舉常量標(biāo)識符必須不同。例:例:enum fruit_set apple, orange, banana=1, peach, grapeenum week Sun=7, Mon=1, Tue, Wed, Thu, Fri, Sat;枚舉常量枚舉常量apple、orange、banana、peach、grape的值分的值分別為別為0、1、1、2、3。枚舉常量。枚舉常量Sun, Mon, Tue, W

39、ed, Thu, Fri, Sat的值分別為的值分別為7、1、2、3、4、5、6。ok整理課件2.7.1 枚舉類型的定義枚舉類型的定義 枚舉型變量定義:枚舉型變量定義:定義枚舉類型之后,就可以定義枚舉類型的變量;定義枚舉類型之后,就可以定義枚舉類型的變量;亦可類型與變量同時定義(甚至類型名可?。阂嗫深愋团c變量同時定義(甚至類型名可?。篶olor_set1 color1, color2;enum Sun, Mon, Tue, Wed, Thu, Fri, Sat weekday1, weekday2;枚舉變量的取值范圍就是整型數(shù)的一個子集。枚舉枚舉變量的取值范圍就是整型數(shù)的一個子集。枚舉變量

40、占用內(nèi)存的大小與整型數(shù)相同。變量占用內(nèi)存的大小與整型數(shù)相同。ok整理課件2.7.2 枚舉類型的變量的使用枚舉類型的變量的使用 枚舉類型應(yīng)用要點(diǎn):枚舉類型應(yīng)用要點(diǎn):1、賦值包括將枚舉常量值賦給枚舉變量和兩個同類型變量之賦值包括將枚舉常量值賦給枚舉變量和兩個同類型變量之間賦值。不能直接將整型量賦給枚舉變量,兩個不同類型的間賦值。不能直接將整型量賦給枚舉變量,兩個不同類型的枚舉變量之間也不能相互賦值。例如:枚舉變量之間也不能相互賦值。例如:enum color_set2 GREEN, RED, YELLOW, WHITE;color_set2 color3, color4;color3=RED;/合

41、法合法color4=color3;/合法,合法,color4的值為的值為REDcolor1=1;/非法,不能直接將整性常量賦給枚舉變量非法,不能直接將整性常量賦給枚舉變量color2=color3; /非法,非法,color2類型是類型是color_set1, /color3類型是類型是color_set2 ,不能相互賦值,不能相互賦值ok整理課件2.7.2 枚舉類型的變量的使用枚舉類型的變量的使用 枚舉類型應(yīng)用要點(diǎn):枚舉類型應(yīng)用要點(diǎn):2 2、由于枚舉常量本身是一個整數(shù)值,因此也允許將一個枚舉、由于枚舉常量本身是一個整數(shù)值,因此也允許將一個枚舉量賦給整型變量。但量賦給整型變量。但不允許將一個整

42、型變量賦給枚舉量不允許將一個整型變量賦給枚舉量,即,即使整型變量取值合適,也必須將整型變量強(qiáng)制轉(zhuǎn)換為枚舉型使整型變量取值合適,也必須將整型變量強(qiáng)制轉(zhuǎn)換為枚舉型 。例如:例如:int i, j;i=color3;/合法,合法,i的值為的值為1j=GREEN;/合法,合法,j的值為的值為0color3= i; /非法非法3、關(guān)系運(yùn)算可以是同一枚舉類型的兩個枚舉變量之間或一個、關(guān)系運(yùn)算可以是同一枚舉類型的兩個枚舉變量之間或一個枚舉變量和一個枚舉常量之間,用它們所取的值(序號)比枚舉變量和一個枚舉常量之間,用它們所取的值(序號)比較。例如:較。例如:if (color3=color4) cout”相等

43、相等”;if (color3!=WHITE) coutcolor1/非法非法 cout)和插入運(yùn)算符()和插入運(yùn)算符()進(jìn)行。也)進(jìn)行。也可以用讀字符的可以用讀字符的get()和讀字符串的和讀字符串的getling()等函數(shù)。讀等函數(shù)。讀寫是在文件緩沖區(qū)中進(jìn)行。寫是在文件緩沖區(qū)中進(jìn)行。(4) 關(guān)閉文件。當(dāng)打開一個文件進(jìn)行讀寫后,應(yīng)該顯式地關(guān)關(guān)閉文件。當(dāng)打開一個文件進(jìn)行讀寫后,應(yīng)該顯式地關(guān)閉該文件。與打開文件相對應(yīng):閉該文件。與打開文件相對應(yīng):ifile.close();ofile.close();關(guān)閉文件時,系統(tǒng)把與該文件相關(guān)聯(lián)的文件緩沖區(qū)關(guān)閉文件時,系統(tǒng)把與該文件相關(guān)聯(lián)的文件緩沖區(qū)中的數(shù)據(jù)寫

44、到磁盤文件中,保證文件的完整;同時把磁盤中的數(shù)據(jù)寫到磁盤文件中,保證文件的完整;同時把磁盤文件名與文件流對象之間的關(guān)聯(lián)斷開,可防止誤操作修改文件名與文件流對象之間的關(guān)聯(lián)斷開,可防止誤操作修改了磁盤文件。了磁盤文件?!纠纠?.25】將百雞問題計算結(jié)果存入文件。將百雞問題計算結(jié)果存入文件。【例【例2.26】讀出存放百雞問題計算結(jié)果的文件。讀出存放百雞問題計算結(jié)果的文件。ok整理課件第二章第二章 基本控制結(jié)構(gòu)程序設(shè)計基本控制結(jié)構(gòu)程序設(shè)計結(jié)束歡迎再來!ok整理課件 if 語句【例語句【例2 24 4】【例【例24】 輸入一個年份,判斷是否閏年。輸入一個年份,判斷是否閏年。算法分析算法分析:假定年份為

45、假定年份為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年是閏年年是閏年endl;else cout year年不是閏年年不是閏年endl;return 0; okok整理課件分析:讀入三個數(shù),先求出兩個數(shù)中分析:讀入三個數(shù),先求出兩個數(shù)中較大者,再將該大數(shù)與第三個數(shù)比較,較大者,再將該大數(shù)與第三個數(shù)比較,求出最大數(shù)。求出最大數(shù)。int main() int

46、 a, b, c, max; coutabc; couta=atb=b tc=c=b) max=a; else max=b; if(cmax) max=c; cout “最大數(shù)為最大數(shù)為:”maxendl; return 0;if 語句【例語句【例2 25 5】 【例【例2.5】 從鍵盤上輸入三個整數(shù),輸出其中的最大數(shù)。從鍵盤上輸入三個整數(shù),輸出其中的最大數(shù)。okok整理課件/方法方法1:采用:采用if中嵌套形式中嵌套形式int main()int a, b, c, max;coutabc;couta=atb=b tc=cb) if(ac) max=a; /ab且且ac else max=c;

47、 /ab且且ac) max=b; /acelse max=c; /a=b且且bccout最大數(shù)最大數(shù)max=max; return 0; if 語句【例語句【例2 26 6】【例【例2.6】用嵌套】用嵌套if語句完成【例語句完成【例2.5】的任務(wù)。】的任務(wù)。okok整理課件/方法方法2:采用:采用else中嵌套形式中嵌套形式int 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 語

48、句【例語句【例2 26 6】okok整理課件【例【例2.72.7】 某商場優(yōu)惠活動規(guī)定,某種商品單某商場優(yōu)惠活動規(guī)定,某種商品單價為價為8080元,一次購買元,一次購買5 5件以上件以上(包含5件)1010件以下件以下(不包含10件)打打9 9折,一次購買折,一次購買1010件以上件以上(包含10件)打打8 8折。設(shè)計程序根據(jù)客戶的購買量計折。設(shè)計程序根據(jù)客戶的購買量計 算總價。算總價。算法算法1、輸入購買件數(shù)、輸入購買件數(shù)count,設(shè)置單價,設(shè)置單價price=80(元元) 2、根據(jù)、根據(jù)count值確定折扣率值確定折扣率discount;3、實(shí)際售價、實(shí)際售價amount=price*c

49、ount*discount;4、輸出、輸出amount的值。的值。算法細(xì)化:算法細(xì)化:2.1、if(count=5&count=10)discount=0.8; if if 語句【例語句【例2 27 7】ok整理課件int main() float price,discount,amount;/單價單價,折扣折扣,總價總價 int count;/購買件數(shù)購買件數(shù) cout輸入單價輸入單價:price; cout輸入購買件數(shù)輸入購買件數(shù):count; if(count5) discount=1; else if(count10) discount=0.9; else discount=0

50、.8; amount=price*count*discount; cout 單價:單價:price endl; cout 購買件數(shù):購買件數(shù):count t折扣:折扣:“discountendl; cout總價:總價:amount0, 方程有兩個不同實(shí)根;方程有兩個不同實(shí)根;*若若delta0,方程無實(shí)根。,方程無實(shí)根。 if if 語句【例語句【例2 28 8】ok整理課件#include #include using namespace std;int main()float a,b,c;float delta,x1,x2;cout輸入三個系數(shù)輸入三個系數(shù)a(a!=0), b, c:abc

51、;couta=atb=btc=cendl;delta=b*b-4*a*c;求一元二次方程的根源程序求一元二次方程的根源程序 if if 語句【例語句【例2 28 8】ok整理課件if(delta=0) cout方程有兩個相同實(shí)根方程有兩個相同實(shí)根:;coutx1=x2=-b/(2*a)0) delta=sqrt(delta);x1=(-b+delta)/(2*a);x2=(-b-delta)/(2*a);cout方程有兩個不同實(shí)根方程有兩個不同實(shí)根:;coutx1=x1tx2=“x2endl;else cout方程無實(shí)根方程無實(shí)根!endl; /delta0return 0;請在請在VC+VC

52、+平臺上運(yùn)行,輸入不同的系數(shù),使程序所有分支都平臺上運(yùn)行,輸入不同的系數(shù),使程序所有分支都可以被執(zhí)行一次??梢员粓?zhí)行一次。 if if 語句【例語句【例2 28 8】ok整理課件不帶不帶breakbreak的開關(guān)語句實(shí)例的開關(guān)語句實(shí)例【例【例2.9】 運(yùn)輸公司對所運(yùn)貨物實(shí)行運(yùn)輸公司對所運(yùn)貨物實(shí)行分段計費(fèi)分段計費(fèi)。設(shè)運(yùn)。設(shè)運(yùn)輸里程為輸里程為s,則運(yùn)費(fèi)打折情況如下:,則運(yùn)費(fèi)打折情況如下:s250 不打折扣不打折扣250=s500 2%折扣折扣500=s1000 5%折扣折扣1000=s20008%折扣折扣2000=s300010%折扣折扣3000=s 15%折扣折扣2000=s3000 10%折扣

53、折扣1000=s2000 8%折扣折扣500=s1000 5%折扣折扣250=s500 2%折扣折扣s250 不打折扣不打折扣不帶不帶breakbreak的開關(guān)語句實(shí)例的開關(guān)語句實(shí)例ok整理課件int main() int c,s,s1;double p,w,d,f; cout輸入運(yùn)輸單價輸入運(yùn)輸單價p,重量,重量w和里程和里程s:pws; f=0;s1=s; c=s/250; switch(c) default: d=0.15;f+=p*w*(s-3000)*(1-d);s=3000; case 8: case 9: case 10: case 11: d=0.1;f+=p*w*(s-200

54、0)*(1-d);s=2000; case 4: case 5: case 6: case 7: d=0.08;f+=p*w*(s-1000)*(1-d);s=1000; case 2: case 3: d=0.05;f+=p*w*(s-500)*(1-d);s=500; case 1: d=0.02;f+=p*w*(s-250)*(1-d);s=250; case 0: d=0;f+=p*w*s*(1-d); cout運(yùn)輸單價運(yùn)輸單價:pt重量重量:wt里程里程:s1endl; cout折扣后運(yùn)費(fèi)折扣后運(yùn)費(fèi):fendl; return 0;請在請在VC+平臺上運(yùn)行,輸入不同的里程。平臺上運(yùn)行

55、,輸入不同的里程。ok整理課件【例【例2.10】 設(shè)計一個計算器程序,實(shí)現(xiàn)加、減、乘、除運(yùn)算。設(shè)計一個計算器程序,實(shí)現(xiàn)加、減、乘、除運(yùn)算。分析:分析:讀入兩個操作數(shù)和運(yùn)算符,根據(jù)運(yùn)算符完成相應(yīng)運(yùn)算。讀入兩個操作數(shù)和運(yùn)算符,根據(jù)運(yùn)算符完成相應(yīng)運(yùn)算。#include using namespace std;int main( )float num1,num2;char op;cout輸入操作數(shù)輸入操作數(shù)1,運(yùn)算符,操作數(shù),運(yùn)算符,操作數(shù)2:num1opnum2; switch(op) case +: coutnum1opnum2=num1+num2endl; break; case -: cout

56、num1opnum2=num1-num2endl; break; case *: coutnum1opnum2=num1*num2endl; break; case /: coutnum1opnum2=num1/num2endl; break; default : coutop是無效運(yùn)算符是無效運(yùn)算符!; return 0; 常量表達(dá)式采用字符型,上機(jī)運(yùn)行一下。常量表達(dá)式采用字符型,上機(jī)運(yùn)行一下。ok整理課件 while 語句語句【例【例2.11】 【例【例2.11】 求求1+2+3+4+100的值。的值。okN N個連續(xù)整數(shù)相加算法個連續(xù)整數(shù)相加算法1 1、設(shè)置變量、設(shè)置變量i i用來放加數(shù)

57、,變量用來放加數(shù),變量sumsum用來放被加數(shù)與用來放被加數(shù)與和值和值, ,并初始化并初始化; ;2 2、從第一個數(shù)開始,依次將加數(shù)賦給、從第一個數(shù)開始,依次將加數(shù)賦給i i,并進(jìn)行操,并進(jìn)行操作作sumsumsum+isum+i,稱為累加;,稱為累加;3 3、輸出、輸出sumsum;細(xì)化算法細(xì)化算法2 2: whilewhile( (還有加數(shù)還有加數(shù)) ) i=i=當(dāng)前加數(shù);當(dāng)前加數(shù); sum+=i;sum+=i; i i準(zhǔn)備接受下一個加數(shù);準(zhǔn)備接受下一個加數(shù); ok整理課件源程序如下:源程序如下:#include using namespace std;const int n=100; /

58、用常變量利于修改程序用常變量利于修改程序int main( ) int i=1,sum=0;/循環(huán)初始條件循環(huán)初始條件 while(i=n) sum+=i; i+;/修改循環(huán)條件修改循環(huán)條件 coutsum=sumendl; return 0; 在在VC+VC+平臺上運(yùn)行,試一試是否正確平臺上運(yùn)行,試一試是否正確okok整理課件【例【例2.12】 用迭代法求用迭代法求a的平方根近似值。的平方根近似值。求平方根的迭代公式為:求平方根的迭代公式為: 要求前后兩個迭代根之差小于要求前后兩個迭代根之差小于10- 5。 do-while 語句語句【例【例2.12】 迭代法求解:迭代法求解:a是已知正數(shù),

59、是已知正數(shù),x 0是迭代初值,給是迭代初值,給x 0一個一個值,假定值,假定 x 0 = a/2;則用迭代公式依次計算:;則用迭代公式依次計算:x1=(x0+a/x0)/2;x2=(x1+a/x1)/2;xk+1=(xk+a/xk)/2;當(dāng)當(dāng)|xk+1 xk|0)及較小正數(shù)及較小正數(shù)delta(也可用常變量也可用常變量);2、x 0 = a/2; 用迭代公式算用迭代公式算 x1=(x0+a/x0)/2;3、while(|x1 x0|=delta) x 0 = x 1 ;/把最近的值給把最近的值給x 0 x1=(x0+a/x0)/2; /求求xk+1時只需要知道時只需要知道xk的值,所以只需的值

60、,所以只需2個變量個變量4、取、取x1的值為的值為a的平方根近似值,輸出。的平方根近似值,輸出。2、3步驟很適合用步驟很適合用do/while語句實(shí)現(xiàn):語句實(shí)現(xiàn): x 1 = a/2; dox0=x1;x1=(x0+a/x0)/2; while(|x1 x0|=delta);和迭代法對應(yīng)的程序算法是和迭代法對應(yīng)的程序算法是遞推算法:遞推算法:ok整理課件int main( ) float x0,x1,a; couta; if(a0)couta不能開平方不能開平方!=1e-5); cout a的平方根為:的平方根為:x1endl; return 0;在在VC+VC+平臺上運(yùn)行,輸入平臺上運(yùn)行,輸入2 2,3 3,4 4,5 5試一試是否正確試一試

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論