程序結(jié)構(gòu)和流程控制語句_第1頁
程序結(jié)構(gòu)和流程控制語句_第2頁
程序結(jié)構(gòu)和流程控制語句_第3頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C+勺語句類型C+程序的組成:一個C+程序可以由若干個源程序文件組成,一個源程序文件可以有 若干個函數(shù)和編譯預(yù)處理命令組成,一個函數(shù)由函數(shù)說明部分和函數(shù)執(zhí)行部分組成,函數(shù) 執(zhí)行部分由數(shù)據(jù)定義和若干個執(zhí)行語句組成。語句是組成程序的基本單元。C+語言的語句可以分成以下六大類:(1)說明語句:對變量、符號常量、數(shù)據(jù)類型的定義性說例如:int-ba,b,c;if ()else else if () con ti nu|一般格式為: (實參:e . _1 m=max(a,b);該語句實現(xiàn)將 Max(a,b)句n的返回值賦給變量melse 語for() while () do while ()【例2】 輸

2、入兩個整數(shù)a和b,用單選條件語句實現(xiàn)輸出其中較大的一個數(shù)程序流程圖如右圖所示。程序如下:#i nclude using n amespace std;int mai n()int a,b,max;cout ab;max=a;if (bmax) max=b;coutmax=maxe ndl;system(pause);CD1 rreturn 0;程序執(zhí)行后屏幕顯示:In put a,b: 3 8CDmax=8【例3】 輸入兩個整數(shù)a和b,用兩選條件語句實現(xiàn)輸出其中較大的一個數(shù)程序流程圖如右圖所示,程序代碼如下:#i nclude using n amespace std;int mai n()i

3、nt a,b,max;cout ab;if (ab) max=a;else max=b;coutmax=maxe ndl;system(pause);return 0;程序執(zhí)行后提示:Input a, b: 38max=8【例4】已知下列分段函數(shù),要求編一程序,輸入 x,輸出相應(yīng)的y的值分段函數(shù)y程序流程圖如右圖所示。程序代碼如下:#in elude using n amespace std;int mai n()float x,y;cout請輸入一個實數(shù)x=;cin x;if (x0) y=x+1;else if (x10)y=x*x-5;else y=x*x*x;coutvy=vvyve

4、ndl;system(pause);return 0;程序執(zhí)行后提示:請輸入一個實數(shù)x=3y=42. if語句的嵌套在if語句中又包含一個或多個if語句稱為if語句的嵌套。其一般格式為:if ()if ()elseelseif ()注意:else總是與其前面最近的語句 3else語句 4【例5】使用if語句嵌套的方法實現(xiàn)【例4】程序流程圖及程序代碼如下:#i nclude using n amespace std;int main()float x,y;cout請輸入一個實數(shù)x=;cin x;if (x=0)if (x=10)y=x*x*x;elsey=x*x-5;elsey=x+1;cout

5、vy=vvyve ndl;system(pause);return 0;程序執(zhí)行后提示:請輸入一個實數(shù)x= -3y=-2注意:在該程序中,內(nèi)層的if語句嵌套在外層的if語句的if部分。C+規(guī)定if嵌套使 一的配對關(guān)系是:ese總是與其前面最近 if ()配對。例如:( 表達式if ()2)if ()如果要改變這種約定,則應(yīng)該用花括號構(gòu)成復(fù)合語句。例如:elseelseif (else if ( 表達式2)語句1 elseelse與第一個配對【例6】 求三個整數(shù)a、b、c中的最大者,a、b、c由鍵盤輸入。(自行完成)#i nclude 程序執(zhí)行后提示:using n amespace std;i

6、nt mai n()int a,b,c,max;cout請輸入三個整數(shù)a,b,c:;cin abc;if (ab)if (ac) max=a;else max=c;elseif (bc) max=b;else max=c;couta,b,c中最大的數(shù) max=maxendl;system(pause);return 0;2. switch語句(開關(guān)語句):實現(xiàn)多路分支程序語句格式switch ()執(zhí)行過程:將條件表達 式的值與case后常量 值比較,若相等就執(zhí)行 此case后語句,完后case : case : case : defaults 語句 n說明:(1) 條件表達式與常量表達式只能是

7、整型或字符型表達式;(2) 每個case后面的常量表達式的值必須互不相同;3)一個 case 后可有多個語句(不必用花括號) ,也可以沒有任何語句注意 :在執(zhí)行 switch 語句的過程中,每當執(zhí)行完一個 case 后面的語句后,程序會不 加判斷地自動執(zhí)行下一個 case 后面的語句。每個 case 后面的常量表達式只起語句標號的 作用,是 switch 語句中執(zhí)行各語句的入口,并不在此進行條件判斷【例7】 輸入06的整數(shù),將其轉(zhuǎn)換成對應(yīng)的星期幾。程序代碼如下:#include using namespace std;int main() int a;couta;switch (a)case

8、0:coutSundayn;case 1:coutMondayn;case 2:coutTuesdayn;case 3:coutWednesdayn;case 4:coutThursdayn;case 5:coutFridayn;在本例中,若運行程序case 6:coutSaturdayn;default:cout In puterror. n;system(pause);return 0;data時輸入4,則執(zhí)行結(jié)果為:ThursdayFridaySaturdayIn put data error程序執(zhí)行后發(fā)現(xiàn)結(jié)果并不是我們希望的,而要想實現(xiàn)我們的要 求,就應(yīng)該在執(zhí)行完指定的一個 case分

9、支后,使程序跳出switch語句, 即終止switch語句的執(zhí)行,而這操作可用 break語句來實現(xiàn)。3. break語句:中止當前語句的執(zhí)行,并跳轉(zhuǎn)到下一條語句處執(zhí)行。語句格式:break;若將上例程序中switch語句的內(nèi)嵌代碼改寫如下,請分析結(jié)果;case 0:cout Today is Sun dayn;break;case 1:cout Today is Mondayn;break;case 2:cout Today is Tuesdayn;break;case 3:cout Today is Wednesdayn;break;case 4:cout Today is Thursda

10、yn;break;case 5:cout Today is Fridayn;break;case 6:cout Today is Saturdayn;break;default:coutInput data error.n;注意:從開關(guān)語句的執(zhí)行過程可知,任一開關(guān)語句均可用條件語句來實現(xiàn),但并不是 任何條件語句均可用開關(guān)語句來實現(xiàn),這是由于開關(guān)語句限定了表達式的取值類型,而條 件語句中的條件表達式可取任意類型的值。【例8】商店打折售貨。購貨金額數(shù)量越大,折扣越大。具體標準如下( m購貨金額,d:m250(元)250W m500 500 m1000 1000 m 2000d=0%d=5%d=%d

11、=10%d=15%折扣率)。要 求從鍵盤上 輸入購貨金 額,計算并輸 出實付的金#in elude using n amespace std;int main()分析:首先找出購貨金額與折扣率之間對應(yīng)關(guān)系變化的規(guī) int m,c;律。從題意知,當購貨金額 mfloat d,f;coutm;if (m=2000)c=8;else c=m/250;switch (c) case 0:d=0;break;case 1:d=5;break;case 2:case 3:d=;break;case 5:mc=m/250dm25000%250 m50015%500 m10002,3%1000 m 20008

12、15%case 4:case 6:case 7:d=10;break;case 8:d=15;break; f=m*(1-d/; coutvf=vvfve ndl;system(pause);程序執(zhí)行后提示:return 0;例 9】 2005 年修改后的中華人民共和國個人所得稅法規(guī)定,個人所得,應(yīng)納個人所 得稅。具體辦法是,每月收入總和扣除 1600 元后的金額為應(yīng)繳納所得稅額,應(yīng)納稅所 得額不超過 500 元的稅率為 5%,超過 500 元至 2000 元的部分稅率為 10%,超過 2000 元至 5000元的部分稅率為 15%, 超過 5000元至 20000元的部分稅率為 20%超過

13、20000 元至 40000 元的部分稅率為 25%,超過 40000 元至 60000 元的部分稅率為 30%,超過 60000 元至 80000 元的部分稅率為 35%,超過 80000元至 100000 元的部分稅率為 40%, 超過 100000元的部分稅率為 45%。現(xiàn)要求編寫程序, 從鍵盤上輸入某人本月的總收入, 輸出應(yīng)繳納的稅額。要求學(xué)生自行完成)循環(huán)語句(共三種,即 while , dowhile和for )在人們所要處理的問題中常常遇到需要反復(fù)執(zhí)行某一操作的情況。被重復(fù)執(zhí)行的程序段為循環(huán)程序,實現(xiàn)循環(huán)結(jié)構(gòu)的語句稱為循環(huán)語句。在C+中,循環(huán)語句有while語句、dowhile

14、語句和for語句。1. while語句(1) 作用:實現(xiàn)“當型”循環(huán)結(jié)構(gòu)。即當條件成立時沖復(fù)執(zhí)行 while語句中的內(nèi)嵌語句。(2) 格式:while ( 表達式)語句執(zhí)行流程圖如右圖所示相關(guān)說明: 上述格式中的 表達式 稱為循環(huán)條件表達式,一般為關(guān)系表達式或邏輯表達式,必須用“()”括起來; 語句稱為循環(huán)體,也稱 While的內(nèi)嵌語句,可以是單個或復(fù)合語句。(3) 執(zhí)行過程:先計算表達式的值,當表達式值非0時重復(fù)執(zhí)行指定的語句;當表達式值為0時結(jié)束循環(huán)【例10】:求從鍵盤上輸入一個正整數(shù) n,計算S=1+2+3+4+n,并輸出到屏幕上分析:由于n可能是不斷變化的,因而計算 S值的程序不可能依

15、次列出完成以上的累加求和運算,可設(shè)兩個整型變量sum和i,sum存放累加的和,1n個數(shù),要i從1變化到n,并按下列步驟進行操作:(1)給sum賦值0, i賦值1;#in elude for(i=11i=203i+) 5 6 7 8 9inlsma in()couta isnot a prime nu mber.n;system(pause);return 0;6. continue 語句: 在while 或do while 語句中執(zhí)行到continue語句時,程序不執(zhí)行continue后的語句,而轉(zhuǎn)向條件表達式處,開始下一次循環(huán)。即所謂短路語句lt=ti*(i+1);sum=srm=0sum=

16、02 2un4=sum+t;sum=sum+3 3 6 9sum=sum*sum=sum+4 4 8 12 165 5 10 15 20 256 6 12 18 24 30 367 7 14 21 28 35 42 498 8 16 24 32 40 48 56 649 9 18 27 36 45 54 63 72 81for 語句中的第 3 表達式處,開始下一次循環(huán)。語句格式: continue;例 20 】輸入 10 個整數(shù),統(tǒng)計其中正數(shù)的和及正數(shù)的個數(shù)#include using namespace std;int main() int a,i,k=0,s=0;/k 存放正數(shù)的個數(shù), s

17、 存放正數(shù)和coutInput 10 integer:;for(i=1;ia;/ 輸入整數(shù)到變量 aif(a=0)k+;continue; / 若 a 為負數(shù)則轉(zhuǎn) for 語句中表達式 3 處執(zhí)行/ 若 a 為正數(shù)則 k 加 1,將 a 累加到 s 中s=s+a;coutk=kts=sn;system(pause); return 0;注意: continue 語句只能用于循環(huán)語句中,且在嵌套循環(huán)語句中,只對當前循環(huán)起作用。continue 語句和 break 語句的區(qū)別是: continue 語句只結(jié)束本次循環(huán), 而不是結(jié)束整 個循環(huán)的執(zhí)行;而 break 語句則是結(jié)束循環(huán),不管循環(huán)條件是否

18、成立。C+語句都是根據(jù)其在程序中的先后次序,從主函數(shù)開始,依次執(zhí)行各個語句。而 continue 語句和 break 語句能夠改變程序的執(zhí)行順序,即不依次執(zhí)行緊跟其后的語句,而 跳到另一個語句處接著執(zhí)行。從表面上看循環(huán)語句或條件語句改變了程序的執(zhí)行順序,但 由于整個循環(huán)只是一個語句(條件語句也一樣) ,因此它們也仍然是順序執(zhí)行的。6exit( ) 和 abort( ) 函數(shù)exit()函數(shù)和abort()函數(shù)都是C +的庫函數(shù),其功能都是終止程序的執(zhí)行,將控制返回給操作系統(tǒng)。當使用這兩個函數(shù)中的任一個函數(shù)時,都應(yīng)包含頭文件。(1) exit() 函數(shù): 無條件正常終止程序的執(zhí)行,并將控制返回給操作系統(tǒng)。格式: exit();通常表達式的取值為 0 表示正常退出,而其他整數(shù)為異常退出。當執(zhí)行 exit( ) 函數(shù)時,系統(tǒng)要做終止程序執(zhí)行前的收尾工作,如關(guān)閉該程序打開的文件。釋放變量所占用的存儲空間(不包括動態(tài)分配的存儲空間)等。(2) abort()函數(shù):用于異常終止程序的執(zhí)行格式:abort();調(diào)用該函數(shù)時,括號內(nèi)不能有任何參數(shù)。執(zhí)行該函數(shù)時,系統(tǒng)不做結(jié)束程序前的收尾工作,直接終止程序的執(zhí)行。故通常使用exit()函數(shù)來終止程序的執(zhí)行。【例21】編寫程序,求一元

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論