C++講解-文檔資料_第1頁
C++講解-文檔資料_第2頁
C++講解-文檔資料_第3頁
C++講解-文檔資料_第4頁
C++講解-文檔資料_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1一、基本概念數(shù)據(jù)結構數(shù)據(jù)結構 + + 算法算法 = = 程序程序1 1、算法:、算法:是對特定問題求解步驟的一種描述是對特定問題求解步驟的一種描述2 2、數(shù)據(jù)結構:數(shù)據(jù)的組織形式及其相互關系、數(shù)據(jù)結構:數(shù)據(jù)的組織形式及其相互關系2二、算法舉例1 1、求、求1 1* *2 2* *3 3* *4 4* *5 5的值。的值。2 2、判斷一個數(shù)、判斷一個數(shù)n n是否為素數(shù)。(是否為素數(shù)。(n2n2)3四、算法的表示四、算法的表示1 1、自然語言、自然語言2 2、流程圖、流程圖3 3、偽代碼、偽代碼4 4、計算機語言、計算機語言4五、結構化程序設計方法五、結構化程序設計方法1 1、含義:規(guī)范程序設計

2、風格和程序結構。、含義:規(guī)范程序設計風格和程序結構。2 2、思路:將復雜的問題分階段處理、思路:將復雜的問題分階段處理3 3、方法:自頂向下、逐步細化、模塊化、方法:自頂向下、逐步細化、模塊化設計、結構化編碼設計、結構化編碼5S1:求:求1 2,得到結果,得到結果2.S2:將第:將第1步所得結果步所得結果2乘以乘以3,得到結果,得到結果6.S3:將:將6乘以乘以4,得,得24.S4: 將將24乘以乘以5,得,得120.求求1 1* *2 2* *3 3* *4 4* *5 5的值。的值。( (思路一思路一) )6設設p p為被乘數(shù),為被乘數(shù),i i為乘數(shù)為乘數(shù)S1S1:使:使p=1.p=1.S

3、2S2:使:使i=2.i=2.S3S3:使:使p p i, i,乘積賦給乘積賦給p.p.S4: S4: 使使i i的值加的值加1.1.S5: S5: 若若i=5,i=5,執(zhí)行執(zhí)行S3S3;否則程序結束;否則程序結束. .求求1 1* *2 2* *3 3* *4 4* *5 5的值。的值。( (思路二思路二) )7S1:輸入:輸入n的值的值.S2:置變量:置變量i的值為的值為2.S3:求解:求解m=n%i ;若若m=0,轉向轉向S6,否則執(zhí)行否則執(zhí)行S4.S4: 變量變量i的值自加的值自加1.S5: 判斷判斷in是否成立是否成立;若為真則轉向若為真則轉向S3,否則執(zhí)行否則執(zhí)行S6.S6: 判斷

4、判斷i2n2)8棋盤上的麥粒棋盤上的麥粒 在國際象棋棋盤上第在國際象棋棋盤上第1 1格放格放1 1粒麥粒,粒麥粒,第第2 2格放格放2 2粒麥粒,第粒麥粒,第3 3格放格放4 4粒麥粒,第粒麥粒,第4 4格放格放8 8粒麥粒,如此直到放滿棋盤的粒麥粒,如此直到放滿棋盤的6464格為止。請計算共需要多少麥粒?格為止。請計算共需要多少麥粒?18,446,744,073,709,551,61598 8皇后互不攻擊皇后互不攻擊 在國際象棋棋盤上放在國際象棋棋盤上放8 8個皇后,要求個皇后,要求任何任何1 1個皇后都不會攻擊其他皇后。請個皇后都不會攻擊其他皇后。請問有多少種放法?問有多少種放法?10漢諾

5、塔漢諾塔 在古代有一座塔,塔里有在古代有一座塔,塔里有3 3個座個座A A、B B、C C,A A座上有座上有6464個大小不等的盤子,大盤在個大小不等的盤子,大盤在下,小盤在上。要求把下,小盤在上。要求把A A座上座上6464個盤子移到個盤子移到C C座,但每次只能移動座,但每次只能移動1 1個盤,且要始終保個盤,且要始終保持大盤在下,小盤在上,在移動過程中可持大盤在下,小盤在上,在移動過程中可以利用以利用B B座。問如何移動?座。問如何移動?11N-SN-S流程圖流程圖AB順序結構順序結構P成立成立不成立不成立AB選擇結構選擇結構當當P P成立成立A循環(huán)結構循環(huán)結構12打印打印x x的絕對

6、值(偽代碼)的絕對值(偽代碼)If x is positive thenIf x is positive thenPrint xPrint xElse Else Print -xPrint -x13打印打印x x的絕對值(的絕對值(C C源程序段)源程序段)if ( x 0 )if ( x 0 )printf( |x|=%d , x );printf( |x|=%d , x );else else printf( |x|=%d , -x );printf( |x|=%d , -x );14l:用:用 括起來的一組語句括起來的一組語句一般形式:一般形式: 數(shù)據(jù)說明部分;數(shù)據(jù)說明部分; 執(zhí)行語句部

7、分;執(zhí)行語句部分; 說明:說明:l“”后不加分號后不加分號l語法上和單一語句相同語法上和單一語句相同l復合語句可嵌套復合語句可嵌套復合語句復合語句15算法的基本控制結構算法的基本控制結構問題的提出問題的提出: (1) -1 (x0)(2)統(tǒng)計任意一個人群的平均身高統(tǒng)計任意一個人群的平均身高算法算法算法的基本控制結構:算法的基本控制結構:順序結構順序結構分支結構分支結構循環(huán)結構循環(huán)結構程序流程圖程序流程圖16結構化程序設計l基本思想:任何程序都可以用三種基本結構表示,限制使用無條件轉移語句(goto)l結構化程序:由三種基本結構反復嵌套構成的程序叫l(wèi)優(yōu)點:結構清晰,易讀,提高程序設計質量和效率三

8、種基本結構l順序結構ABAB流程圖N-S圖程序的三種基本結構程序的三種基本結構17PAB真假PBA真假A1A2AiAnk=k2k=k1k=knk=ki.l二分支選擇結構二分支選擇結構l多分支選擇結構多分支選擇結構18l當型循環(huán)結構l直到型循環(huán)結構PA假真當P為真AAP真假A直到P為真注:A,B,A1.An可以是一個簡單語句,也可以是一個基本結構循環(huán)結構循環(huán)結構19l格式:賦值表達式;l賦值語句與賦值表達式的區(qū)別: 賦值表達式可以包含在其它表達式中,而賦值語句不可。例:if (a=b)0) t=a;不可寫為:if (a=b;)0) t=a;20這是這是C中新加的非常簡單易用的輸入、輸出方式,中新

9、加的非常簡單易用的輸入、輸出方式,C+中沒有專門的輸入輸出語句,是用中沒有專門的輸入輸出語句,是用I/O流類來實現(xiàn)。流類來實現(xiàn)。在程序的開頭增加一行:在程序的開頭增加一行:#include 1)用插入操作符用插入操作符“”向標準輸出流向標準輸出流cout中插入字符。中插入字符。n向標準輸出設備(顯示器)輸出向標準輸出設備(顯示器)輸出例:例:int x; cout“x=“”從標準輸入流從標準輸入流cin中抽取字符中抽取字符n從標準輸入設備(鍵盤)輸入從標準輸入設備(鍵盤)輸入例:例:int x; cinx; int a,b; cinab;) 使用控制符使用控制符 有時缺省輸出格式不能滿足要求,

10、這時可以用控制符控制輸出的格有時缺省輸出格式不能滿足要求,這時可以用控制符控制輸出的格式。式。 在程序的開頭增加一行:在程序的開頭增加一行:#include22例:例:#include#includevoid main()coutsetw(5)setprecision(3)3.1415endl; 3.1423u C語言無語言無I/O語句,語句,I/O操作由函數(shù)實現(xiàn)操作由函數(shù)實現(xiàn) u #include C語言中的輸入輸出語言中的輸入輸出24printf和和scanfprintf函數(shù)函數(shù)l(1)printf函數(shù)的一般格式為:函數(shù)的一般格式為:printf(格式控制字符串,輸出項格式控制字符串,輸出

11、項1,輸出項,輸出項2,)括號中的格式控制字符串和輸出項都是函數(shù)參數(shù)。括號中的格式控制字符串和輸出項都是函數(shù)參數(shù)。printf()函數(shù)的功能是將后面函數(shù)的功能是將后面的參數(shù)按給定的格式輸出。的參數(shù)按給定的格式輸出。l格式控制字符串中有格式說明,也有普通字符。格式說明由格式控制字符串中有格式說明,也有普通字符。格式說明由”%”和格式字符組和格式字符組成,如成,如%d, %f 等。它的作用是將輸出的數(shù)據(jù)轉換成指定的格式輸出。普通字等。它的作用是將輸出的數(shù)據(jù)轉換成指定的格式輸出。普通字符按原樣輸出,如:符按原樣輸出,如:#include stdio.hvoid main()int a = 10, b

12、 = 20;printf(%d, %d, a, b);輸出結果為:輸出結果為:10,2025(2)%d 格式符格式符用來輸出用來輸出10進制整數(shù),可以有長度修飾。如:進制整數(shù),可以有長度修飾。如:#include stdio.hvoid main()int a = 28, b = 38;long c = 123456;printf(%5d, %5dn%ldn, a, b, c);printf(%3ldn%7ldn%dn, c, c, c);輸出結果為:輸出結果為: 28, 38123456123456 123456123456%5d表示輸出寬度為表示輸出寬度為5,%ld表示輸出為長整型表示輸出

13、為長整型如果整數(shù)的位數(shù)多于指定寬度,則按實際位數(shù)輸出如果整數(shù)的位數(shù)多于指定寬度,則按實際位數(shù)輸出26(3)%o和和%x格式符格式符用來輸出用來輸出8進制、進制、16進制整數(shù)。進制整數(shù)。8進制和進制和16進制都是無符號整數(shù),進制都是無符號整數(shù),輸出時不帶符號。如:輸出時不帶符號。如:#include stdio.hvoid main()int a = 1200;printf(%d, %o, %x, %X, %6xn, a, a, a, a, a);輸出結果為:輸出結果為: 1200, 2260, 4b0, 4B0, 4b027(4)%u 格式符格式符用來輸出無符號用來輸出無符號10進制整數(shù)。進制

14、整數(shù)。(5)%c 格式符格式符用來輸出一個字符。如果一個整數(shù),其值在用來輸出一個字符。如果一個整數(shù),其值在0255之間,也可以字之間,也可以字符方式輸出。它們都可以指定格式寬度。例如:符方式輸出。它們都可以指定格式寬度。例如:char ch = a;int a = 65;printf(%c, %d, %3cn, ch, ch, ch);printf(%c, %d, %3dn, a , a, a);輸出結果為:輸出結果為:a, 97, aA, 65, 6528(6)%s 格式符格式符用來輸出字符串??梢灾付ǜ袷綄挾龋绻址L小于指定的寬度時,用來輸出字符串??梢灾付ǜ袷綄挾?,如果字符串長小于

15、指定的寬度時,可以選擇左對齊或右對齊。另外,還可以選擇輸出字符中的前可以選擇左對齊或右對齊。另外,還可以選擇輸出字符中的前n個字符。個字符。例如:例如:printf(%s, Hellon);printf(Hellon);printf(%3s, %-5.3s, %5.2sn, Hello, Hello, Hello);輸出結果為:輸出結果為:HelloHelloHello, Hel , He如果輸出的只有一個字符串,可以省略格式參數(shù),因為格式參數(shù)本身可以如果輸出的只有一個字符串,可以省略格式參數(shù),因為格式參數(shù)本身可以是原樣輸出的普通字符串。是原樣輸出的普通字符串?!?-5.3s”中的負號表示左對

16、齊,如果沒有負號,則默認為右對齊。中的負號表示左對齊,如果沒有負號,則默認為右對齊。5表示表示格式寬度,格式寬度,3表示截取字符串中表示截取字符串中3個字符。個字符。29(7)%f 格式符格式符用來以小數(shù)方式輸出??芍付ǜ袷綄挾龋部梢灾付ㄐ?shù)位數(shù),還用來以小數(shù)方式輸出??芍付ǜ袷綄挾龋部梢灾付ㄐ?shù)位數(shù),還可以規(guī)定左對齊或右對齊。如:可以規(guī)定左對齊或右對齊。如:float x = 123.456;double y = 321.654321;printf(%f, %-7.2f, %10.4fn, x, x, x);printf(%lf, %-7.2lf, %10.4lfn, y, y, y);

17、輸出結果為:輸出結果為:123.456001, 123.46 , 123.4560321.654321, 321.65 , 321.6543以以%f 格式輸出時,默認的小數(shù)位數(shù)是格式輸出時,默認的小數(shù)位數(shù)是6位。位。%-7.2f表示左對齊,總表示左對齊,總長度為長度為7位,小數(shù)位數(shù)為位,小數(shù)位數(shù)為2位。位。30(8)%e,%E,%g,%G 格式符格式符用來以指數(shù)方式輸出浮點數(shù)。默認的小數(shù)位數(shù)為用來以指數(shù)方式輸出浮點數(shù)。默認的小數(shù)位數(shù)為6, 指數(shù)位數(shù)為指數(shù)位數(shù)為3(不包括不包括e+和和e-):float x = 123.456;double y = 321.654321;printf(%e, %

18、-7.2e, %10.4en, x, x, x);printf(%e, %-7.2e, %10.4en, y, y, y);輸出結果為:輸出結果為:1.234560e+002, 1.23e+002, 1.2346e+0023.216543e+002, 3.22e+002, 3.2165e+002%E 格式同格式同%e ,只是將輸出的小寫,只是將輸出的小寫 e 改為大寫改為大寫 E 。%g根據(jù)數(shù)值的大小,自動選取根據(jù)數(shù)值的大小,自動選取f格式或格式或e格式。格式。31(9)注意事項注意事項l除除X, E, G格式外,其他格式必須用小寫字母,例如格式外,其他格式必須用小寫字母,例如%d不能寫不能寫

19、成成%Dl可以在可以在printf函數(shù)中的函數(shù)中的“格式控制格式控制”字符串內(nèi)使用字符串內(nèi)使用“轉義字符轉義字符”。l“格式控制格式控制”字符串中,在字符串中,在%后的后的d、o、x、u、c、s、f、e、g做為格式符做為格式符,否則做為普通字符,如:否則做為普通字符,如:printf(“c=%c, f=%f, s=%s”, c, f, s);l如果想輸出字符如果想輸出字符%,則應該在,則應該在“格式控制格式控制”字符串中連續(xù)用兩字符串中連續(xù)用兩個個%表示表示,如:如:printf(“%f%”, 1.0/3);32int i, j;scanf(“%3d%3d”, &i, &j);

20、/輸入輸入123456scanf(“%2d_%*3d_%2d”, &i, &j); /輸入輸入12_345_67scanf(“%d,%d”, &i, &j);/輸入輸入3,433(3)注意事項注意事項lscanf函數(shù)中的函數(shù)中的“格式控制格式控制”后面應當是變量地址,而不是變量名。后面應當是變量地址,而不是變量名。l如果在如果在“格式控制格式控制”字符串中除了格式說明以外還有其他字符,則字符串中除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時在對應位置應輸入與這些字符相同的字符。在輸入數(shù)據(jù)時在對應位置應輸入與這些字符相同的字符。l在使用在使用%c格式輸入字符時,空格

21、字符和格式輸入字符時,空格字符和“轉義字符轉義字符”都作為有效都作為有效字符輸入字符輸入l在輸入數(shù)據(jù)時,遇以下情況時該數(shù)據(jù)認為結束在輸入數(shù)據(jù)時,遇以下情況時該數(shù)據(jù)認為結束遇空格,或按遇空格,或按“回車回車”,或,或”Tab”鍵鍵按指定的寬度結束,如按指定的寬度結束,如%3d,只取,只取3列列遇非法輸入。遇非法輸入。34/*ch3_12.c*/#include #include main() float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c

22、); printf(a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn,a,b,c,s); printf(area=%7.2fn,area);輸入:3,4,6 輸出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33)()()()(21csbsassareacbas文件包含預處理命令變量定義輸入數(shù)據(jù)輸出數(shù)據(jù)例例 輸入三角形邊長,求面積輸入三角形邊長,求面積35字符輸出格式格式: putchar( c ): putchar( c )參數(shù)參數(shù): c: c為字符常量、變量或表達式為字符常量、變量或表達式功能:把字符功能:把字符c c輸出到顯示

23、器上輸出到顯示器上返值:正常,為顯示的代碼值;出錯,為返值:正常,為顯示的代碼值;出錯,為EOF(-1)EOF(-1)字符輸出函數(shù)字符輸出函數(shù)36/*ch3_13.c*/#include stdio.hmain() char c1,c2; c1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2);輸入:A 輸出:A,65 a,97例例 從鍵盤輸入大寫字母,用小寫字母輸出從鍵盤輸入大寫字母,用小寫字母輸出37第三章第三章 程序設計初步程序設計初步選擇結構設計選擇結構設計38l一般形式:一般形式:表達式表達式1 1?表達式

24、?表達式2 2:表達式:表達式3 3表達式表達式1 1 必須是必須是 bool bool 類型類型l執(zhí)行順序:執(zhí)行順序:先求解先求解表達式表達式1 1,若表達式若表達式1 1的值為的值為truetrue,則求解,則求解表達式表達式2 2,表達式,表達式2 2的的值為最終結果值為最終結果若表達式若表達式1 1的值為的值為falsefalse,則求解,則求解表達式表達式3 3,表達式表達式3 3的的值為最終結果值為最終結果例例 x=ab?a:b 該例是該例是IFELSE語句的一個替代語句的一個替代 if (ab)?a:b+1 (2)條件運算符的結合性為條件運算符的結合性為“自右向左自右向左” 例例

25、ab?a:cd?c:d 即即 ab?a:(cd?c:d) (3) 條件表達式與一般條件表達式與一般if的語句的關系的語句的關系 coutb?a:b;()表達式()表達式2 2、3 3的類型可以不同,條件表達式的最終類型為的類型可以不同,條件表達式的最終類型為 2 2 和和 3 3 中較高的類型。中較高的類型。40if (表達式表達式) 語句語句例:例:if (xy) couty) coutx; else couty;if (表達式表達式1) 語句語句1else if (表達式表達式2) 語句語句2else if (表達式表達式3) 語句語句3 else 語句語句 n41 (條件表達式)(條件表

26、達式)語句;語句; 或(條件表達式)或(條件表達式) 語句;語句;或(條件表達式);空語句作中的語句或(條件表達式);空語句作中的語句語句語句; ;0表達式語句142例(判輸入是否合理)例(判輸入是否合理) #include #include void main( )void main( ) unsigned int age; unsigned int age; cout What is the students age.; cout age; cin age; if (age10) if (age10) cout The age may be wrong; cout =0) if(x50) cout“x is okn”; else cout“x is not okn”;If 語句的嵌套二義性語句的嵌套二義性因為因為 if 可以嵌套,所有在嵌套時有時會出可以嵌套,所有在嵌套時有時會出 歧義,例如上例中,歧義,例如上例中,else 是與第一個是與第一個 if 配對,配對,還

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論