第二章基本控制結(jié)構(gòu)程序設(shè)計(jì)_第1頁(yè)
第二章基本控制結(jié)構(gòu)程序設(shè)計(jì)_第2頁(yè)
第二章基本控制結(jié)構(gòu)程序設(shè)計(jì)_第3頁(yè)
第二章基本控制結(jié)構(gòu)程序設(shè)計(jì)_第4頁(yè)
第二章基本控制結(jié)構(gòu)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩125頁(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、第二章 基本控制結(jié)構(gòu)程序設(shè)計(jì),結(jié)構(gòu)化程序設(shè)計(jì)的特點(diǎn)是任何程序都可由三種基本結(jié)構(gòu)及其組合來(lái)描述。 本章將介紹C+分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的設(shè)計(jì)方法。還將介紹一些常用算法。,第二章 基本控制結(jié)構(gòu)程序設(shè)計(jì),2.2 分支結(jié)構(gòu)程序設(shè)計(jì),2.7 枚舉類(lèi)型,2.6 常用算法的應(yīng)用實(shí)例,2.4 轉(zhuǎn)向語(yǔ)句,2.3 循環(huán)結(jié)構(gòu)程序設(shè)計(jì),2.8 輸入輸出文件簡(jiǎn)介,2.5 結(jié)構(gòu)化程序設(shè)計(jì)思想(選讀),2.1 算法的概念與表示方法,2.1 算法的概念與表示方法,2.1.1 算 法 的 概 念,2.1.3 算 法描述的三種基本結(jié)構(gòu),2.1.2 算 法 的 表 示,2.1.1 算 法 的 概 念,算法: 算法是解決問(wèn)題的步驟。 計(jì)

2、算機(jī)算法的特征: 可執(zhí)行性 確定性 有窮性 可輸入輸出信息 算法是程序設(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 cbccmendl; return 0; ,2.1.2算法的表示,流程圖: 流程圖是圖形化的表示方法,比較直觀,基本組成元件包括矩形框、菱形框、箭頭線等。其中矩形框表示要執(zhí)行的指令,在框內(nèi)標(biāo)注指令內(nèi)容;菱形框表示要判斷其中表達(dá)式的值是真還是假;箭頭線則標(biāo)示指令的流程方向。 偽碼: 偽碼是介于自然語(yǔ)言和程序設(shè)計(jì)語(yǔ)

3、言之間的一種類(lèi)自然語(yǔ)言的表示方法,書(shū)寫(xiě)形式自由,容易轉(zhuǎn)換為程序。,2.1.3算法描述的三種基本結(jié)構(gòu),3 循 環(huán) 結(jié) 構(gòu),1 順 序 結(jié) 構(gòu),2 分 支 結(jié) 構(gòu),算法的基本結(jié)構(gòu): 對(duì)算法的理論研究和實(shí)踐表明,任何算法的描述都可以分解為三種基本結(jié)構(gòu)或它們的組合,這三種基本結(jié)構(gòu)是順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。,num115;,2.1.3算法描述的三種基本結(jié)構(gòu),(1) 順序結(jié)構(gòu),【例21】 求兩數(shù)之和。,流程圖,顯示結(jié)果:35,num220;,sumnum1+num2;,演示算法執(zhí)行過(guò)程,輸出sum;,2.1.3算法描述的三種基本結(jié)構(gòu),(2) 分支結(jié)構(gòu),【例22】 輸入三個(gè)數(shù),輸出其中的最大數(shù)。,x7

4、;,y12;,z10;,if(xy) maxx; else max y;,if (zmax) maxz;,輸出max;,顯示結(jié)果:12,流程圖,塊1,塊2,真,假,演示算法執(zhí)行過(guò)程,2.1.3算法描述的三種基本結(jié)構(gòu),【例23】求4個(gè)整數(shù)的和。,顯示結(jié)果:60,演示算法執(zhí)行過(guò)程,12,3,14,26,2,16,42,1,18,60,0,count4; /整數(shù)個(gè)數(shù) sum0; /累加和的初值 while (count0) x輸入一個(gè)整數(shù); sumsum+x; countcount-1; 輸出sum;,2.2 分支結(jié)構(gòu)程序設(shè)計(jì),對(duì)程序的運(yùn)行流程進(jìn)行控制,主要通過(guò)執(zhí)行專(zhuān)門(mén)用來(lái)控制流程的語(yǔ)句來(lái)實(shí)現(xiàn)。 分

5、支語(yǔ)句是基本流程控制語(yǔ)句之一。C+提供三種分支語(yǔ)句。,2.2.1 if語(yǔ)句,2.2.2 if語(yǔ)句的嵌套,2.2.4 swich語(yǔ)句,2.2.3 條件運(yùn)算符“?:”,2.2.1 if 語(yǔ)句,if語(yǔ)句基本格式: 1、if (表達(dá)式) 語(yǔ)句1; 2、if (表達(dá)式) 語(yǔ)句1; else語(yǔ)句2;,【例2.4】 輸入一個(gè)年份,判斷是否閏年。,【例2.5】 從鍵盤(pán)上輸入三個(gè)整數(shù),輸出其中的最大數(shù)。,嵌套if語(yǔ)句: if 語(yǔ)句中,如果內(nèi)嵌語(yǔ)句又是if語(yǔ)句,就構(gòu)成了嵌套if語(yǔ)句。if 語(yǔ)句可實(shí)現(xiàn)二選一分支,而嵌套if語(yǔ)句則可以實(shí)現(xiàn)多選一的多路分支情況。 嵌套有兩種形式,嵌套在else分支中: if (表達(dá)式1

6、) 語(yǔ)句1; else if (表達(dá)式2) 語(yǔ)句2; else if else 語(yǔ)句n; 嵌套在if分支中: if () if () ; else;,2.2.2 if 語(yǔ)句的嵌套,【例2.6】用嵌套if語(yǔ)句完成【例2.5】的任務(wù)。,else和if的配對(duì)關(guān)系: C+規(guī)定了if和else的“就近配對(duì)”原則,即相距最近且還沒(méi)有配對(duì)的一對(duì)if和else首先配對(duì)。按上述規(guī)定,第二種嵌套形式中的else應(yīng)與第二個(gè)if配對(duì)。如果根據(jù)程序的邏輯需要改變配對(duì)關(guān)系,則要將屬于同一層的語(yǔ)句放在一對(duì)“”中。如第二種嵌套形式中,要讓else和第一個(gè)if配對(duì),語(yǔ)句必須寫(xiě)成: if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句1

7、 ; else 語(yǔ)句2 ; 第二種嵌套形式較容易產(chǎn)生邏輯錯(cuò)誤,而第一種形式配對(duì)關(guān)系則非常明確,因此從程序可讀性角度出發(fā),建議盡量使用第一種嵌套形式。,2.2.2 if 語(yǔ)句的嵌套,配對(duì)關(guān)系實(shí)例: /語(yǔ)句1: if(n%3=0) if(n%5=0) coutn是15的倍數(shù)endl; else cout n是3的倍數(shù)但不是5的倍數(shù) endl; /語(yǔ)句2: if(n%3=0) if(n%5=0) coutn是15的倍數(shù)endl; else cout n 不是3的倍數(shù) 兩個(gè)語(yǔ)句的差別只在于一個(gè)“”,但表達(dá)的邏輯關(guān)系卻完全不同。,【例2.7】 某商場(chǎng)購(gòu)物優(yōu)惠活動(dòng)(p.37),【例2.8】 求一元二次方程

8、的根(p.38-39)。,練習(xí):編寫(xiě)程序,輸入x,根據(jù)下面y和x的關(guān)系,計(jì)算y值并輸出,. int main() float x,y; cinx; if(x1) y=x; else if(x10) y=2*x-1; else y=3*x-11; couty; . ,說(shuō)明: 語(yǔ)句中的表達(dá)式可以是任意表達(dá)式: if(x) y=1/x; else y=10000; 一個(gè)if結(jié)構(gòu)不可分割: if(x) y=1/x; z=10; else y=10000; 一個(gè)分支中包含多個(gè)語(yǔ)句時(shí),要用 : if(a0) x=1; y=2; else x=10; y=20;,if(x+y0) x=1; y=2;,/er

9、ror C2181: illegal else without matching if,例:從鍵盤(pán)輸入三個(gè)整數(shù)到變量a,b,c,要求按從大到小的順序輸出。 兩種典型算法: 枚舉法(將各種可能的排列枚舉出來(lái))。 換位法(將a,b,c中的數(shù)據(jù)換位)。,換位法 int main() int a,b,c,t; cinabc; if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(bc) t=b; b=c; c=t; coutatbtcendl; ,3,5,8,5,3,8,5,5,3,a,b,c,課下練習(xí),改正下列代碼,a) if (ival1!=ival2) i

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

11、while(cin.get()!=n) continue; /get rid of the rest of line. cinb; / 輸入 250,課下再上機(jī)練習(xí),2.2.3 條件運(yùn)算符“?:”,三元運(yùn)算符: 三元運(yùn)算符條件運(yùn)算符“?:”可以用來(lái)簡(jiǎn)化if語(yǔ)句表達(dá)。其構(gòu)成的表達(dá)式格式為: 表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3 例如:int a=6,b=7, min=ab?a:b; /min=6 min=ab?+a:+b; /min=7 a=7 b=7 min=ab?a+:b+; /min=6 a=7 b=7,ok,2.2.4 switch語(yǔ)句,開(kāi)關(guān)語(yǔ)句(switch語(yǔ)句) 用來(lái)實(shí)現(xiàn)多選一: s

12、witch (表達(dá)式) /整形值 case 常量表達(dá)式: 語(yǔ)句序列break; case 常量表達(dá)式n:語(yǔ)句序列nbreak; default:語(yǔ)句序列 ,開(kāi)關(guān)語(yǔ)句注意要點(diǎn): (1)各個(gè)case(包括default)分支出現(xiàn)的次序可以任意,通常將default放在最后。 (2)break語(yǔ)句可選,如果沒(méi)有break語(yǔ)句,每一個(gè)case分支都只作為開(kāi)關(guān)語(yǔ)句的執(zhí)行入口,執(zhí)行完該分支后,還將接著執(zhí)行其后的所有分支。因此,為保證邏輯的正確實(shí)現(xiàn),通常每個(gè)case 分支都與break語(yǔ)句聯(lián)用。,2.2.4 switch語(yǔ)句,(3)每個(gè)常量表達(dá)式的取值必須各不相同,否則將引起歧義。 (4)允許多個(gè)常量表達(dá)式

13、對(duì)應(yīng)同一個(gè)語(yǔ)句序列。 例如: char score; cinscore; switch (score) case A: case a: coutexcellent; break; case B: case b: coutgood; break; default: coutfair; ,(5)從形式上看,switch語(yǔ)句的可讀性比嵌套if語(yǔ)句好,但不是所有多選一的問(wèn)題都可由開(kāi)關(guān)語(yǔ)句完成,這是因?yàn)殚_(kāi)關(guān)語(yǔ)句中限定了條件表達(dá)式的取值類(lèi)型。,ok,【例2.9】 運(yùn)輸貨物實(shí)行分段計(jì)費(fèi)。采用不帶break的開(kāi)關(guān)語(yǔ)句實(shí)例,【例2.10】 設(shè)計(jì)一個(gè)計(jì)算器程序, 實(shí)現(xiàn)加、減、乘、除運(yùn)算。,2.2.4 switch

14、語(yǔ)句,循環(huán)控制語(yǔ)句是基本流程控制語(yǔ)句之一。C+提供三種循環(huán)語(yǔ)句:,2.3.1 while語(yǔ)句,2.3.4 循環(huán)的嵌套,2.3.3 for語(yǔ)句,2.3.2 do-while 語(yǔ)句,2.3 循環(huán)結(jié)構(gòu)程序設(shè)計(jì),2.3.1 while 語(yǔ)句,while語(yǔ)句也稱(chēng)為當(dāng)循環(huán)。 語(yǔ)句格式為: while (表達(dá)式) 循環(huán)體語(yǔ)句; ,圖2.5 while語(yǔ)句的執(zhí)行流程圖,求表達(dá)式的值,表達(dá)式值為真?,是,否,執(zhí)行循環(huán)體語(yǔ)句,【例2.11】 求1+2+3 +4+100的值。,2.3.1 while 語(yǔ)句,注意: 在有循環(huán)語(yǔ)句的程序中,通常循環(huán)開(kāi)始前對(duì)循環(huán)條件進(jìn)行初始化;而在循環(huán)體語(yǔ)句中要包含修改循環(huán)條件的語(yǔ)句,否

15、則循環(huán)將不能終止而陷入死循環(huán)。 C+表達(dá)方式靈活,上例中的循環(huán)語(yǔ)句還可以寫(xiě)成: while (i=n) sum+=i+; 或者 while (sum+=i+, i=n) ;/循環(huán)體為空語(yǔ)句 修改程序后在VC+平臺(tái)上運(yùn)行,看是否正確,2.3.2 do-while 語(yǔ)句,do-while語(yǔ)句稱(chēng)為直到循環(huán),格式為: do 循環(huán)體語(yǔ)句 while( 表達(dá)式 );,否,是,表達(dá)式的 值為真?,執(zhí)行循環(huán)體語(yǔ)句,求表達(dá)式的值,圖2.6 do-while語(yǔ)句的執(zhí)行流程圖,2.3.2 do-while 語(yǔ)句,do/while語(yǔ)句和while語(yǔ)句的區(qū)別: do/while語(yǔ)句至少執(zhí)行一次循環(huán)體后再判斷循環(huán)條件是否

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

17、0) ,寫(xiě)出下列程序段的運(yùn)行結(jié)果以 及循環(huán)體中的語(yǔ)句共執(zhí)行了幾次。,2.3.3 for 語(yǔ)句,for循環(huán)語(yǔ)句的格式為: for ( 表達(dá)式1; 表達(dá)式2; 表達(dá)式3 ) 循環(huán)體語(yǔ)句 ,ok,例:用for語(yǔ)句實(shí)現(xiàn)1-10的累加求和算法: s=0; for(i=1;i=10;i+) s+=i; 標(biāo)準(zhǔn)形式,可以理解: 循環(huán)變量i從初值1開(kāi)始到終值10,步長(zhǎng)為1,重復(fù)執(zhí)行循環(huán)體。,表達(dá)式2,表達(dá)式3,表達(dá)式1,循環(huán)體,for語(yǔ)句的常見(jiàn)變化: s=0; i=1; for(;i=10;i+)s+=i; s=0; for(i=1;i=10;)s+=i+; s=0;i=1; for(;i=10;)s+=i+;

18、,省略表達(dá)式1,省略表達(dá)式3,省略表達(dá)式1和3,s=0; i=1; for(;) s+=i+; if(i10) break; s=10;i=10; for(;-i;) s+=i;,省略3個(gè)表達(dá)式,表達(dá)式2是任意表達(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ì)中不要過(guò)分追求它的多變性,力求簡(jiǎn)潔明了,i,j,用逗號(hào)表達(dá)式,通用嗎?,for語(yǔ)句、while語(yǔ)句、do/while語(yǔ)句比較:(如何選擇?),int i=1,sum=0; /循環(huán)初始條件 while(i=4) sum+=i; i+; /修改循環(huán)條件 ,int

19、 i=1,sum=0; /循環(huán)初始條件 do sum+=i; i+;/修改循環(huán)條件 while(i=4);,int i,sum=0; for( i=1; i=4; i+ ) sum+=i; /*習(xí)慣上:表達(dá)式1:循環(huán)初始條件;表達(dá)式2:循環(huán)終止條件;表達(dá)式3:修改循環(huán)條件*/,ok,for 語(yǔ)句的應(yīng)用,for語(yǔ)句的幾點(diǎn)說(shuō)明: 1、是先判斷型的,同while語(yǔ)句; 2、使用更為靈活: 三個(gè)表達(dá)式可以是任意表達(dá)式,因此它們就可以實(shí)現(xiàn)循環(huán)初始化、計(jì)算、修改循環(huán)條件等任務(wù),而不一定非在循環(huán)體中進(jìn)行;,for 語(yǔ)句的應(yīng)用,【例2.14】運(yùn)行結(jié)果: 0 1 1 2 3 5 8 13 21 34 55 89

20、 144 233 377 610 987 1597 2584 4181,【例2.15】 輸入一個(gè)不超過(guò)5位的整數(shù),將其反向后輸出。,【例2.14】 設(shè)計(jì)程序輸出Fibonacii 數(shù)列的前20項(xiàng),2.3.4 循環(huán)的嵌套,【例2.16】 打印九九表。,嵌套循環(huán): 當(dāng)循環(huán)語(yǔ)句中的循環(huán)體中又有循環(huán)語(yǔ)句時(shí),就構(gòu)成了嵌套循環(huán)。 嵌套層次一般不超過(guò)3層,以保證可讀性。,【例2.17】打印如下圖形。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

21、 * *,2.4 轉(zhuǎn)向語(yǔ)句,break語(yǔ)句,return語(yǔ)句,goto 語(yǔ)句,continue語(yǔ)句,2.4 轉(zhuǎn)向語(yǔ)句,break語(yǔ)句只能用在switch語(yǔ)句和循環(huán)語(yǔ)句中,用來(lái)跳出最近的switch語(yǔ)句或循環(huán),轉(zhuǎn)去執(zhí)行switch語(yǔ)句或循環(huán)語(yǔ)句之后的語(yǔ)句。 在for循環(huán)中可以用break結(jié)束循環(huán): for(; ;) if() break; ,Break語(yǔ)句:,【例2.18】 給定正整數(shù)m,判定其是否為素?cái)?shù)。, a=10; y=0; do a+=2; y+=a; cout50) break; while(a=14); ,寫(xiě)出下列程序段的運(yùn)行結(jié)果。,a=12 y=12,a=16 y=28,a=16

22、y=44,a=16 y=60,int x=3,y=6,a=0; while(x+!=(y-=1) a+=1; if (yx) break; coutxyaendl;,x=5,y=4,a=1,2.4 轉(zhuǎn)向語(yǔ)句,continue語(yǔ)句只能用在循環(huán)語(yǔ)句中,用來(lái)終止本次循環(huán)。當(dāng)程序執(zhí)行到continue語(yǔ)句時(shí),將跳過(guò)其后尚未執(zhí)行的循環(huán)體語(yǔ)句,開(kāi)始下一次循環(huán)。下一次循環(huán)是否執(zhí)行仍然取決于循環(huán)條件的判斷。 continue語(yǔ)句與break語(yǔ)句的區(qū)別在于,continue語(yǔ)句結(jié)束的只是本次循環(huán),而break結(jié)束的是整個(gè)循環(huán)。,continue語(yǔ)句:,例:輸出1100內(nèi)3的倍數(shù)。 分析:設(shè)置整型變量I從1變化到

23、100,依次測(cè)試I是否3的倍數(shù),算法屬于窮舉法。 for (I=1;I=100;I+) if ( I%3!=0) continue; /I不是3的倍數(shù),不輸出,繼續(xù)下一個(gè)I; 輸出I的值;/I是3的倍數(shù)才輸出 ,2.4 轉(zhuǎn)向語(yǔ)句,goto語(yǔ)句和標(biāo)號(hào)語(yǔ)句一起使用,所謂標(biāo)號(hào)語(yǔ)句是用標(biāo)識(shí)符標(biāo)識(shí)的語(yǔ)句,它控制程序從goto語(yǔ)句所在的地方轉(zhuǎn)移到標(biāo)號(hào)語(yǔ)句處。goto語(yǔ)句會(huì)導(dǎo)致程序結(jié)構(gòu)混亂,可讀性降低,而且它所完成的功能完全可以用算法的三種基本結(jié)構(gòu)實(shí)現(xiàn),因此一般不提倡使用goto語(yǔ)句。但在某些特定場(chǎng)合下goto語(yǔ)句可能會(huì)顯出價(jià)值,比如在多層循環(huán)嵌套中,要從深層地方跳出所有循環(huán),如果用break語(yǔ)句,不僅要使

24、用多次,而且可讀性較差,這時(shí)goto語(yǔ)句可以發(fā)揮作用。,goto語(yǔ)句:,2.4 轉(zhuǎn)向語(yǔ)句,return語(yǔ)句用于結(jié)束函數(shù)的執(zhí)行,返回調(diào)用者,如果是主函數(shù),則返回至操作系統(tǒng)。 利用一個(gè)return語(yǔ)句可以將一個(gè)數(shù)據(jù)返回給調(diào)用者。通常,當(dāng)函數(shù)的返回類(lèi)型為void時(shí), return語(yǔ)句可以省略,如果使用也僅作為函數(shù)或程序結(jié)束的標(biāo)志。,return語(yǔ)句:,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; ,練習(xí),x=4 B) x=8 x=6 D) x=

25、12,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:k=k*10; break; default :k=k/3; k+; while(cG); coutkendl; return 0; ,練習(xí),k=3 B) k=4 C) k=2 D) k=0,B,int main() int i; for(i=1; i5; i+) if(i%2) cout“*”; else continue; cout“#

26、”; cout$endl; return 0;,練習(xí),*#*#*# $ B) #*#*#* $ C) *#*# $ D) #*#* $,C,若 i , j 已定義為 int 類(lèi)型,則以下程序段中內(nèi)循環(huán)體 總的執(zhí)行次數(shù)是: for( i =5; i ; i -) for(j=0; j4; j+) A) 20 B) 24 C) 25 D) 30,A,1、在下列語(yǔ)句中,哪一個(gè)不為無(wú)限循環(huán) A) i=100; B) for(; ;) while(1) i=i %100; i+; if (i 100) break; C) short k=32765; D) short S=32765; do while

27、(S+%2)|(S%2) k+; k+; S+; while(k0);,C,short :取值范圍 -3276832767,十進(jìn)制,二進(jìn)制,八進(jìn)制,2.5 結(jié)構(gòu)化程序設(shè)計(jì)思想(選讀),傳統(tǒng)的程序設(shè)計(jì)方法可以歸結(jié)為“程序=算法+數(shù)據(jù)結(jié)構(gòu)”,將程序定義為處理數(shù)據(jù)的一系列過(guò)程。這種設(shè)計(jì)方法的著眼點(diǎn)是面向過(guò)程的,特點(diǎn)是數(shù)據(jù)與程序分離,即數(shù)據(jù)與數(shù)據(jù)處理分離。 結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是采用自頂向下、逐步細(xì)化的設(shè)計(jì)方法和單入單出的控制結(jié)構(gòu)。,結(jié)構(gòu)化程序設(shè)計(jì)方法:,2.5 結(jié)構(gòu)化程序設(shè)計(jì)思想(選讀),舉一個(gè)簡(jiǎn)單的例子,要求讀入一組整數(shù),統(tǒng)計(jì)其中正整數(shù)和負(fù)整數(shù)的個(gè)數(shù)。 該任務(wù)的模塊結(jié)構(gòu)及細(xì)化過(guò)程如下:,2.5

28、 結(jié)構(gòu)化程序設(shè)計(jì)思想(選讀),(1)難以適應(yīng)大型軟件的設(shè)計(jì)。由于數(shù)據(jù)與數(shù)據(jù)處理相對(duì)獨(dú)立,在大型多文件軟件系統(tǒng)中,隨著數(shù)據(jù)量的增大,程序越來(lái)越變得難以理解,多個(gè)文件之間的數(shù)據(jù)溝通也變得困難,還容易產(chǎn)生意想不到的結(jié)果,即所謂副作用。 (2)程序可重用性差。處理方法的改變或數(shù)據(jù)類(lèi)型的改變都將導(dǎo)致重新設(shè)計(jì),這種額外開(kāi)銷(xiāo)與可重用性相左,稱(chēng)為重復(fù)投入,結(jié)構(gòu)化程序設(shè)計(jì)缺陷:,2.6 常用算法的應(yīng)用實(shí)例,【例2.20】世界數(shù)學(xué)史上著名的“百雞問(wèn)題”,【例2.21】用歐基里德算法(也稱(chēng)輾轉(zhuǎn)法) 求兩個(gè)整數(shù)的最大公約數(shù),【例2.23】輸入一個(gè)8位二進(jìn)制數(shù),將其轉(zhuǎn)換為十進(jìn)制數(shù)輸出。,【例2.19】 用篩選法求100

29、之內(nèi)的所有素?cái)?shù),【例2.22】輸入一個(gè)小于1的數(shù)x,求sinx的近似值,2.7 枚舉類(lèi)型,2.7.1 枚舉類(lèi)型的定義,2.7.2 枚舉變量的使用,枚舉類(lèi)型(enumerate)是c+中的一種派生數(shù)據(jù)類(lèi)型,它是用戶定義的若干枚舉常量的集合。 枚舉類(lèi)型的變量,只能取枚舉常量表中所列的值。 定義枚舉類(lèi)型的主要目的是增加程序的可讀性。,2.7.1 枚舉類(lèi)型的定義,枚舉類(lèi)型定義(enumeration): enum ; 關(guān)鍵字enum指明其后的標(biāo)識(shí)符是一個(gè)類(lèi)型的名字,枚舉常量表中列出該類(lèi)型的所有取值,各枚舉常量之間以“,”間隔。 例: enum color_set1 RED, BLUE, WHITE,

30、BLACK; enum week Sun, Mon, Tue, Wed, Thu, Fri, Sat; 枚舉常量(或稱(chēng)枚舉成員)是以標(biāo)識(shí)符形式表示的整型量,非法定義實(shí)例: enum letter_set a, d, F, s, T; /枚舉常量只能是標(biāo)識(shí)符 enum year_set2000,2001,2002,2003,2004,2005; /改為y2000等則正確,2.7.1 枚舉類(lèi)型的定義,枚舉常量: 枚舉常量代表該枚舉類(lèi)型的變量可能取的值,編譯系統(tǒng)為每個(gè)枚舉常量指定一個(gè)整數(shù)值,缺省狀態(tài)下,這個(gè)整數(shù)就是所列舉元素的序號(hào),序號(hào)從0開(kāi)始。如上例中RED、 BLUE、 WHITE、 BLACK

31、的值分別為0、1、2、3。 用戶也可以在類(lèi)型定義時(shí)為部分或全部枚舉常量指定整數(shù)值,在第一個(gè)指定值之前的枚舉常量仍按缺省方式取值,而指定值之后的枚舉常量按依次加1的原則取值。各枚舉常量的值可以重復(fù),但各枚舉常量標(biāo)識(shí)符必須不同。 例: enum fruit_set apple, orange, banana=1, peach, grape enum week Sun=7, Mon=1, Tue, Wed, Thu, Fri, Sat; 枚舉常量apple、orange、banana、peach、grape的值分別為0、1、1、2、3。枚舉常量Sun, Mon, Tue, Wed, Thu, Fri

32、, Sat的值分別為7、1、2、3、4、5、6。,2.7.2 枚舉類(lèi)型的變量的使用,枚舉類(lèi)型應(yīng)用要點(diǎn): 1、定義枚舉類(lèi)型之后,就可以定義枚舉類(lèi)型的變量;亦可類(lèi)型與變量同時(shí)定義(甚至類(lèi)型名可省): color_set1 color1, color2; enum Sun, Mon, Tue, Wed, Thu, Fri, Sat weekday1, weekday2; 2、枚舉變量的取值范圍就是整型數(shù)的一個(gè)子集。枚舉變量占用內(nèi)存的大小與整型數(shù)相同。 3、枚舉變量允許的操作只有賦值和關(guān)系運(yùn)算;如: color3=color4=BLUE; if (color3=color4) cout”相等”; co

33、ut color3WHITE; /輸出“真”,即1,4、枚舉變量不能直接輸入,可以直接輸出,但輸出的是變量的整數(shù)值。例如: cincolor1/非法 coutcolor3/合法,輸出的是2 從程序的合法性和可讀性出發(fā),枚舉變量的輸入輸出一般都采用switch語(yǔ)句將其轉(zhuǎn)換為字符或字符串。同時(shí),枚舉類(lèi)型數(shù)據(jù)的其他處理也往往應(yīng)用switch語(yǔ)句。,2.7.2 枚舉類(lèi)型的變量的使用,*【例2.24】 口袋中有紅、黃、藍(lán)、白、黑五種顏色的球若干個(gè),每次從口袋中取三個(gè)不同顏色的球,統(tǒng)計(jì)并輸出所有的取法。,2.8 輸入輸出文件簡(jiǎn)介,使用文件的步驟如下:#include (1) 說(shuō)明一個(gè)文件流對(duì)象(內(nèi)部文件)

34、。文件流類(lèi)型ifstream支持從輸入文件提取數(shù)據(jù)的操作。而文件流類(lèi)型ofstream完成數(shù)據(jù)寫(xiě)入輸出文件的各種操作。 ifstream ifile; /定義輸入文件,ifile為文件名,可用任意標(biāo)識(shí)符 ofstream ofile; /定義輸出文件,ofile為文件名,可用任意標(biāo)識(shí)符 (2) 打開(kāi)文件。 ifile.open(”d:my_in_file.txt”); ofile.open(”d:my_out_file.txt”); 引號(hào)中的”d:my_in_file.txt” 和”d:my_out_file.txt”為磁盤(pán)文件路徑名,這樣在文件流對(duì)象和磁盤(pán)文件名之間建立了聯(lián)系。,(3) 對(duì)文

35、件進(jìn)行讀寫(xiě)操作。最常見(jiàn)的文件讀寫(xiě)是順序的,所謂“順序”指的是從文件頭開(kāi)始進(jìn)行讀寫(xiě)。順序讀寫(xiě)可用C+的提取運(yùn)算符()和插入運(yùn)算符()進(jìn)行。也可以用讀字符的get()和讀字符串的getline()等函數(shù)。讀寫(xiě)是在文件緩沖區(qū)中進(jìn)行。 (4) 關(guān)閉文件。當(dāng)打開(kāi)一個(gè)文件進(jìn)行讀寫(xiě)后,應(yīng)該顯式地關(guān)閉該文件。與打開(kāi)文件相對(duì)應(yīng): ifile.close(); ofile.close(); 關(guān)閉文件時(shí),系統(tǒng)把與該文件相關(guān)聯(lián)的文件緩沖區(qū)中的數(shù)據(jù)寫(xiě)到磁盤(pán)文件中,保證文件的完整;同時(shí)把磁盤(pán)文件名與文件流對(duì)象之間的關(guān)聯(lián)斷開(kāi),可防止誤操作修改了磁盤(pán)文件。,【例2.25】將百雞問(wèn)題計(jì)算結(jié)果存入文件。,【例2.26】讀出存放百

36、雞問(wèn)題計(jì)算結(jié)果的文件。,第二章 基本控制結(jié)構(gòu)程序設(shè)計(jì),結(jié)束,歡迎再來(lái)!,if 語(yǔ)句【例24】,【例24】 輸入一個(gè)年份,判斷是否閏年。 算法分析:假定年份為year, 閏年的條件是 : year%4=0 ,ok,分析:讀入三個(gè)數(shù),先求出兩個(gè)數(shù)中較大者,再將該大數(shù)與第三個(gè)數(shù)比較,求出最大數(shù)。 int main() int a, b, c, max; coutabc; coutb) max=a; else max=b; if(cmax) cout “最大數(shù)為:”cendl; else cout “最大數(shù)為:”maxendl; return 0; ,if 語(yǔ)句【例25】,【例2.5】 從鍵盤(pán)上輸入三

37、個(gè)整數(shù),輸出其中的最大數(shù)。,ok,/方法1:采用if中嵌套形式 int main() int a, b, c, max; coutabc; coutb) if(ac) max=a; /ab且ac else max=c; /ab且ac) max=b; /ac else max=c; /a=b且bc cout最大數(shù)max=max; return 0; ,if 語(yǔ)句【例26】,【例2.6】用嵌套if語(yǔ)句完成【例2.5】的任務(wù)。,ok,/方法2:采用else中嵌套形式 int main() int a,b,c,max; coutabc; coutb ,if 語(yǔ)句【例26】,ok,【例2.7】 某商場(chǎng)優(yōu)

38、惠活動(dòng)規(guī)定,某種商品單 價(jià)為80元,一次購(gòu)買(mǎi)5件以上(包含5件)10件以下(不包含10件)打9折,一次購(gòu)買(mǎi)10件以上(包含10件)打8折。設(shè)計(jì)程序根據(jù)客戶的購(gòu)買(mǎi)量計(jì) 算總價(jià)。,算法 1、輸入購(gòu)買(mǎi)件數(shù)count,設(shè)置單價(jià)price=80(元) 2、根據(jù)count值確定折扣discount; 3、實(shí)際售價(jià)amount=price*count*discount; 4、輸出amount的值。 算法細(xì)化: 2.1、if(count=5/單價(jià),折扣,總價(jià) int count;/購(gòu)買(mǎi)件數(shù) coutcount; if(count5) discount=1; else if(count10) discount=

39、0.9; else discount=0.8; amount=price*count*discount; cout購(gòu)買(mǎi)件數(shù):countendl; cout單價(jià):pricet折扣:“ discountendl; cout總價(jià):amountendl; return 0; 請(qǐng)?jiān)赩C+平臺(tái)上運(yùn)行,輸入不同的件數(shù),使程序所有分支都可以被執(zhí)行一次。,ok,if 語(yǔ)句【例27】,【例2.8】 求一元二次方程 ax2+bx+c=0 的根。 其中系數(shù)a(a0)、b、c的值由鍵盤(pán)輸入。 分析:輸入系數(shù)a(a0)、b、c后,令delta= b24ac,結(jié)果有三種情況: *若delta=0, 方程有兩個(gè)相同實(shí)根; *

40、若delta0, 方程有兩個(gè)不同實(shí)根; * 若delta0,方程無(wú)實(shí)根。,if 語(yǔ)句【例28】,#include #include using namespace std; int main() float a,b,c; float delta,x1,x2; const float zero=0.0001; /定義一個(gè)很小的常數(shù) coutabc; couta=atb=bt c=cendl; delta=b*b-4*a*c;,求一元二次方程的根源程序,if 語(yǔ)句【例28】,if(fabs(delta)0) delta=sqrt(delta); x1=(-b+delta)/(2*a); x2=(-

41、b-delta)/(2*a); cout方程有兩個(gè)不同實(shí)根:; coutx1=x1tx2=“ x2endl; else cout方程無(wú)實(shí)根!endl; /delta0 return 0; 請(qǐng)?jiān)赩C+平臺(tái)上運(yùn)行,輸入不同的系數(shù),使程序所有分支都可以被執(zhí)行一次。,if 語(yǔ)句【例28】,不帶break的開(kāi)關(guān)語(yǔ)句實(shí)例,【例2.9】 運(yùn)輸公司對(duì)所運(yùn)貨物實(shí)行分段計(jì)費(fèi)。設(shè)運(yùn)輸里程為s,則運(yùn)費(fèi)打折情況如下: s250 不打折扣 250=s500 2%折扣 500=s10005%折扣 1000=s20008%折扣 2000=s300010%折扣 3000=s15%折扣 設(shè)每公里每噸的基本運(yùn)費(fèi)為p,貨物重量為w,

42、總運(yùn)輸里程在某段中的里程為s,折扣為d,則該段運(yùn)費(fèi)為:p*w*s*(1-d) 設(shè)計(jì)程序,當(dāng)輸入p、w和s后,計(jì)算運(yùn)費(fèi)f。,算法: 總費(fèi)用為各段費(fèi)用之和,可采用不加break的switch語(yǔ)句。 分析:switch語(yǔ)句要求條件表達(dá)式取值為確定的若干個(gè)開(kāi)關(guān)量,而不能使用關(guān)系表達(dá)式,用里程s進(jìn)行判斷似乎不符合條件。但是分析發(fā)現(xiàn),里程s的分段點(diǎn)均是250的倍數(shù),因此,將里程s除以250,取整數(shù)商c,可得到若干整數(shù)值。因此算法描述如下:,ok,不帶break的開(kāi)關(guān)語(yǔ)句實(shí)例,switch(c) default: d=0.15;f+=p*w*(s-3000)*(1-d);s=3000; case 8: ca

43、se 9: case 10: case 11: d=0.1;f+=p*w*(s-2000)*(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); ,3000=s 15%折扣 2000=s3000 10%折扣 1000=s2000 8%折扣 500

44、=s1000 5%折扣 250=s500 2%折扣 s250 不打折扣,不帶break的開(kāi)關(guān)語(yǔ)句實(shí)例,int main() int c,s;double p,w,d,f; coutpws; f=0; 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-2000)*(1-d);s=2000; case 4: case 5: case 6: case 7: d=0.08;f+=p*w*(s-1000)*(1-d);s=10

45、00; 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)輸單價(jià):pt重量:wt里程:sendl; cout折扣后運(yùn)費(fèi):fendl; return 0; 請(qǐng)?jiān)赩C+平臺(tái)上運(yùn)行,輸入不同的里程。,【例2.10】 設(shè)計(jì)一個(gè)計(jì)算器程序,實(shí)現(xiàn)加、減、乘、除運(yùn)算。 分析:讀入兩個(gè)操作數(shù)和運(yùn)算符,根據(jù)運(yùn)算符完成相應(yīng)運(yùn)算。 #include using namespace std; int main( )

46、float num1,num2; char op; coutnum1opnum2; switch(op) case +: coutnum1opnum2=num1+num2endl; break; case -: coutnum1opnum2=num1-num2endl; break; case *: coutnum1opnum2=num1*num2endl; break; case /: coutnum1opnum2=num1/num2endl; break; default : coutop是無(wú)效運(yùn)算符!; return 0; 常量表達(dá)式采用字符型,上機(jī)運(yùn)行一下。,while 語(yǔ)句【例2.1

47、1】,【例2.11】 求1+2+3+4+100的值。,ok,N個(gè)連續(xù)整數(shù)相加算法 1、設(shè)置變量i用來(lái)放加數(shù),變量sum用來(lái)放被加數(shù)與和值,并初始化; 2、從第一個(gè)數(shù)開(kāi)始,依次將加數(shù)賦給i,并進(jìn)行操作sumsum+i,稱(chēng)為累加; 3、輸出sum; 細(xì)化算法2: while(還有加數(shù)) i=當(dāng)前加數(shù); sum+=i; i準(zhǔn)備接受下一個(gè)加數(shù); ,源程序如下: #include using namespace std; const int n=100; /用常變量利于修改程序 int main( ) int i=1,sum=0;/循環(huán)初始條件 while(i=n) sum+=i; i+;/修改循環(huán)條件

48、 coutsum=sumendl; return 0; 在VC+平臺(tái)上運(yùn)行,試一試是否正確,ok,【例2.12】 用迭代法求a的平方根近似值。求平方根的迭代公式為: 要求前后兩個(gè)迭代根之差小于10- 5。,do-while 語(yǔ)句【例2.12】,迭代法求解:a是已知正數(shù),x 0是迭代初值,給x 0一個(gè)值,假定 x 0 = a/2;則用迭代公式依次計(jì)算: x1=(x0+a/x0)/2;x2=(x1+a/x1)/2; xk+1=(xk+a/xk)/2; 當(dāng)|xk+1 xk|(是一個(gè)較小的正數(shù))時(shí),迭代終止,取xk+1的值為a的平方根近似值。,ok,1、輸入a(a0)及較小正數(shù)delta(也可用常變量

49、); 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時(shí)只需要知道xk的值,所以只需2個(gè)變量 4、取x1的值為a的平方根近似值,輸出。 2、3步驟很適合用do/while語(yǔ)句實(shí)現(xiàn): x 1 = a/2; dox0=x1; x1=(x0+a/x0)/2; while(|x1 x0|=delta);,和迭代法對(duì)應(yīng)的程序算法是遞推算法:,int main( ) float x0,x1,a; couta; if(a0) /有實(shí)數(shù)解的情況 x1=a

50、/2; /x1用于保存結(jié)果 dox0=x1; x1=(x0+a/x0)/2; while (fabs(x1-x0)=1e-5); cout a的平方根為:x1endl; else cout a的平方根為:0endl; return 0; 在VC+平臺(tái)上運(yùn)行,輸入2,3,4,5試一試是否正確,【例2.13】 輸入一段文本,統(tǒng)計(jì)文本的行數(shù)、單詞數(shù)及字符數(shù)。假定單詞之間以空格或跳格或換行符間隔,且文本開(kāi)始沒(méi)有空行。 算法分析: 1、逐個(gè)讀入文本中的字符,直到讀到一個(gè)輸入結(jié)束符EOF為止。 2、如何算行數(shù)?行結(jié)束標(biāo)志為讀到字符n; 3、如何算單詞數(shù)?設(shè)一個(gè)變量isword,讀到字符時(shí)isword=1,

51、讀到間隔符時(shí)isword=0;如果讀到一個(gè)間隔符而此時(shí)isword值為1,則說(shuō)明剛讀完一個(gè)單詞;(如果讀到一個(gè)字符而此時(shí)isword值為0,則說(shuō)明剛開(kāi)始讀一個(gè)單詞;) 4、如何算字符數(shù)?,do-while 語(yǔ)句【例2.13】,ok,Diaoyu Island belongs to China! I like programming in C+.,do-while 語(yǔ)句【例2.13】,算法: 1、設(shè)置變量line、word、ch分別代表行數(shù)、單詞數(shù)、非分隔字符數(shù),并初始化;設(shè)置變量isword來(lái)輔助統(tǒng)計(jì)單詞數(shù); 2、do從鍵盤(pán)讀入一個(gè)字符c; if ( c=n) line+; if (是單詞開(kāi)頭

52、) word+; if (c不是分隔符) ch+; while (c!= EOF ); 3、輸出統(tǒng)計(jì)結(jié)果。,Diaoyu Island belongs to China! I like programming in C+.,int main( ) char c; int line=0, word=0, ch=0; bool isword=false; cout輸入一段文本(無(wú)空行):endl; do c=cin.get(); if (c= n) line+; /遇換行符行數(shù)+1 if (c!= ,Diaoyu Island belongs to China! I like programmin

53、g in C+.,【例2.14】 設(shè)計(jì)程序輸出Fibonacii數(shù)列的前20項(xiàng),要求每行輸出5個(gè)數(shù)據(jù)。 Fibonacii數(shù)列定義如下:,算法分析:除了第0項(xiàng)和第1項(xiàng)外,每一項(xiàng)都是由類(lèi)似方法產(chǎn)生,即前兩項(xiàng)之和;所以求當(dāng)前項(xiàng)時(shí),只需要記住前兩項(xiàng);程序不需要為每一項(xiàng)設(shè)置專(zhuān)用變量; 屬遞推算法。,for 語(yǔ)句的應(yīng)用【例2.14】,算法: 1、設(shè)置變量n表示第幾項(xiàng),變量 f 1和 f 2用來(lái)記住當(dāng)前項(xiàng)f 3之前的兩項(xiàng) ;變量初始化n=0; 2、while (當(dāng)前項(xiàng)不到第20項(xiàng)) if (當(dāng)前項(xiàng)是第0項(xiàng)) f 1=0; if (當(dāng)前項(xiàng)是第1項(xiàng)) f 2=1; if (當(dāng)前項(xiàng)是第2項(xiàng)或更高項(xiàng))f 3=f

54、1+f 2; 按要求輸出 f 3 ; f 1=f 2; f 2=f 3; /記住最近兩項(xiàng) 當(dāng)前項(xiàng)后移一位; ,程序如下: /文件名:Ex2_14.cpp int main() int fib0=0,fib1=1,fib2; coutsetw(5)fib0setw(5)fib1 endl; for(int n=3;n=20;n+) fib2=fib0+fib1; coutsetw(5)fib2; if(n%5=0) coutendl; /控制每行5個(gè)數(shù)據(jù) fib0=fib1; fib1=fib2; return 0; ,for 語(yǔ)句的應(yīng)用【例2.14】,【例2.15】 輸入一個(gè)不超過(guò)5位的整數(shù),

55、將其反向后輸出。例如輸入247,變成742輸出。 算法分析: 1、將整數(shù)的各個(gè)數(shù)位逐個(gè)位分開(kāi),用一個(gè)數(shù)組保存各個(gè)位的值,然后反向組成新的整數(shù)。 2、將整數(shù)各位數(shù)字分開(kāi)的方法是,通過(guò)求余得到個(gè)位數(shù),然后將整數(shù)縮小十倍,再求余,并重復(fù)上述過(guò)程,分別得到十位、百位,直到整數(shù)的值變成0為止。,for 語(yǔ)句的應(yīng)用【例2.15】,ok,數(shù)據(jù)處理: 1、設(shè)置變量num表示輸入的整數(shù),整型數(shù)組digit5用來(lái)存放num 的各個(gè)位;變量i用來(lái)表示數(shù)組的當(dāng)前下標(biāo); 算法: 1、輸入num; 變量初始化:i=0; 2、while (num!=0) num對(duì)10取余,得num的當(dāng)前個(gè)位數(shù)digiti; num整除10

56、,即去掉個(gè)位數(shù),十位變個(gè)位,百位變十位,; i+;數(shù)組digit準(zhǔn)備記錄下一位; 3、將數(shù)組元素按下標(biāo)從低到高的順序輸出;,程序如下: int main() int i,num,subscript; int digit5; coutnum; cout0); for(i=0;isubscript;i+) /整數(shù)的反向組合 num=num*10+digiti; cout反向后整數(shù)為:numendl; return 0; 在VC+平臺(tái)上運(yùn)行,試一試是否正確,循環(huán)的嵌套【例2.16】,分析: 1、計(jì)算機(jī)的輸出是按行進(jìn)行的,因此可以先用一個(gè)循環(huán)語(yǔ)句輸出第一行表頭。 2、表中各行數(shù)據(jù)的輸出可以用下面的算法描述: for (i=1; i10; i+) c

溫馨提示

  • 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)論