語(yǔ)言程序設(shè)計(jì)9期末復(fù)習(xí)課_第1頁(yè)
語(yǔ)言程序設(shè)計(jì)9期末復(fù)習(xí)課_第2頁(yè)
語(yǔ)言程序設(shè)計(jì)9期末復(fù)習(xí)課_第3頁(yè)
語(yǔ)言程序設(shè)計(jì)9期末復(fù)習(xí)課_第4頁(yè)
語(yǔ)言程序設(shè)計(jì)9期末復(fù)習(xí)課_第5頁(yè)
已閱讀5頁(yè),還剩87頁(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、CC語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)中山大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院中山大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院馮馮 偉偉2013-1-82013-1-8 本課程內(nèi)容概況本課程內(nèi)容概況一、程序設(shè)計(jì)初步一、程序設(shè)計(jì)初步二、基本數(shù)據(jù)類型與基本操作二、基本數(shù)據(jù)類型與基本操作三、結(jié)構(gòu)化的流程設(shè)計(jì)三、結(jié)構(gòu)化的流程設(shè)計(jì)四、模塊化的函數(shù)設(shè)計(jì)四、模塊化的函數(shù)設(shè)計(jì)五、復(fù)雜數(shù)據(jù)類型及其操作五、復(fù)雜數(shù)據(jù)類型及其操作六、程序開(kāi)發(fā)與調(diào)試六、程序開(kāi)發(fā)與調(diào)試本課程目的本課程目的1 1、掌握、掌握CC語(yǔ)言的語(yǔ)法、語(yǔ)義、語(yǔ)用。語(yǔ)言的語(yǔ)法、語(yǔ)義、語(yǔ)用。2 2、掌握結(jié)構(gòu)化程序設(shè)計(jì)的思想、方法。、掌握結(jié)構(gòu)化程序設(shè)計(jì)的思想、方法。3 3、掌握小規(guī)模程序的設(shè)計(jì)、編寫、

2、調(diào)試。、掌握小規(guī)模程序的設(shè)計(jì)、編寫、調(diào)試。4 4、掌握程序設(shè)計(jì)中一些常規(guī)算法。、掌握程序設(shè)計(jì)中一些常規(guī)算法。學(xué)好學(xué)好CC語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)1 1、記憶力、記憶力( (前提條件前提條件) ): 牢記牢記CC語(yǔ)法規(guī)則及其用法語(yǔ)法規(guī)則及其用法( (語(yǔ)法語(yǔ)法, ,語(yǔ)義語(yǔ)義, ,語(yǔ)語(yǔ)用用) )。2 2、邏輯分析能力、邏輯分析能力( (內(nèi)在基礎(chǔ)內(nèi)在基礎(chǔ)) ): 習(xí)慣用習(xí)慣用CC語(yǔ)言思考和表達(dá)解題詳細(xì)步驟語(yǔ)言思考和表達(dá)解題詳細(xì)步驟( (算法算法) )。3 3、上機(jī)實(shí)踐、上機(jī)實(shí)踐( (關(guān)鍵所在關(guān)鍵所在- -實(shí)踐出真知實(shí)踐出真知) ): 加深理解,熟練掌握并靈活運(yùn)用加深理解,熟練掌握并靈活運(yùn)用CC程序程序

3、設(shè)計(jì)。設(shè)計(jì)。CC語(yǔ)言源程序的上機(jī)建立和運(yùn)行的基本過(guò)程語(yǔ)言源程序的上機(jī)建立和運(yùn)行的基本過(guò)程 靜態(tài)檢查靜態(tài)檢查 目標(biāo)程序目標(biāo)程序 可執(zhí)行程序可執(zhí)行程序 編輯編輯 編譯編譯 連接連接 執(zhí)行執(zhí)行 結(jié)果結(jié)果 源程序源程序 動(dòng)態(tài)檢查動(dòng)態(tài)檢查 有錯(cuò)F.cF.objF.exe有錯(cuò)有錯(cuò)有錯(cuò)結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法(1).(1).自頂向下:有序性自頂向下:有序性(2).(2).逐步細(xì)化:由粗到細(xì)的層次性逐步細(xì)化:由粗到細(xì)的層次性(3).(3).模塊化設(shè)計(jì):按功能化分為模模塊化設(shè)計(jì):按功能化分為模塊塊函數(shù)函數(shù)(4).(4).結(jié)構(gòu)化編碼:三種基本結(jié)構(gòu)結(jié)構(gòu)化編碼:三種基本結(jié)構(gòu)基本數(shù)據(jù)類型與基

4、本操作基本數(shù)據(jù)類型與基本操作1 1、基本數(shù)據(jù)類型、基本數(shù)據(jù)類型2 2、運(yùn)算符和表達(dá)式、運(yùn)算符和表達(dá)式3 3、數(shù)據(jù)輸入和輸出、數(shù)據(jù)輸入和輸出CC語(yǔ)言的數(shù)據(jù)類型語(yǔ)言的數(shù)據(jù)類型數(shù)數(shù)據(jù)據(jù)類類型型基本類型基本類型構(gòu)造類型構(gòu)造類型指針類型指針類型空類型空類型字符類型字符類型枚舉類型枚舉類型數(shù)組類型數(shù)組類型結(jié)構(gòu)體類型結(jié)構(gòu)體類型共同體類型共同體類型文件類型文件類型單精度型單精度型雙精度型雙精度型整型整型實(shí)型實(shí)型數(shù)值類型數(shù)值類型基本數(shù)據(jù)類型的存儲(chǔ)空間長(zhǎng)度及取值范圍基本數(shù)據(jù)類型的存儲(chǔ)空間長(zhǎng)度及取值范圍signed charsigned charunsigned charunsigned char -27 -27(

5、27-1)(27-1)0 0(28-1) ASCII(28-1) ASCII碼碼025502558 88 8signed intsigned intunsigned intunsigned int-215-215(215-1)(215-1)0 0(216-1) (216-1) 32323232floatfloatdoubledouble-3.4-3.410-3810-383.43.41038 f F1038 f F-1.7-1.710-30810-3081.71.710308 10308 32326464取值范圍取值范圍長(zhǎng)度長(zhǎng)度類型類型 注意:注意:1. 1. 長(zhǎng)度是比特長(zhǎng)度是比特( (位位)

6、 )數(shù),數(shù),8 8個(gè)比特是個(gè)比特是1 1個(gè)字節(jié)。個(gè)字節(jié)。 2. 2. 存儲(chǔ)長(zhǎng)度和取值范圍可能因具體機(jī)器和編譯系統(tǒng)而異,存儲(chǔ)長(zhǎng)度和取值范圍可能因具體機(jī)器和編譯系統(tǒng)而異, 用運(yùn)算符用運(yùn)算符sizeofsizeof求字節(jié)數(shù)。求字節(jié)數(shù)。強(qiáng)調(diào)說(shuō)明強(qiáng)調(diào)說(shuō)明1 1、在、在CC語(yǔ)言中,在使用變量前必須先對(duì)其進(jìn)語(yǔ)言中,在使用變量前必須先對(duì)其進(jìn)行定義行定義 ( (先定義后使用先定義后使用) ),以申請(qǐng)存儲(chǔ)空間。變量,以申請(qǐng)存儲(chǔ)空間。變量名必須名必須 符合標(biāo)識(shí)符的命名規(guī)則。變量的數(shù)據(jù)類符合標(biāo)識(shí)符的命名規(guī)則。變量的數(shù)據(jù)類型決定了型決定了 變量占用的內(nèi)存空間的大小。變量占用的內(nèi)存空間的大小。2 2、變量值的改變可由賦值

7、語(yǔ)句、變量值的改變可由賦值語(yǔ)句( (表達(dá)式表達(dá)式) )、鍵、鍵盤輸入盤輸入 等實(shí)現(xiàn)。變量在任一時(shí)該只能保存一個(gè)等實(shí)現(xiàn)。變量在任一時(shí)該只能保存一個(gè)值,而且值,而且 該值只與最后一次賦值有關(guān)該值只與最后一次賦值有關(guān)( (當(dāng)前值當(dāng)前值) )。3 3、CC語(yǔ)言規(guī)定:在函數(shù)體內(nèi)部,只能在第一語(yǔ)言規(guī)定:在函數(shù)體內(nèi)部,只能在第一個(gè)可執(zhí)個(gè)可執(zhí) 行語(yǔ)句前定義變量。因此,一般在函數(shù)行語(yǔ)句前定義變量。因此,一般在函數(shù)開(kāi)頭聲明開(kāi)頭聲明 部分進(jìn)行變量定義。部分進(jìn)行變量定義。關(guān)于變量的其它說(shuō)明關(guān)于變量的其它說(shuō)明1) 1) 循環(huán)變量用簡(jiǎn)單寫法,如循環(huán)變量用簡(jiǎn)單寫法,如 i, j, k i, j, k 等等2) 2) 變量名

8、要有意義,見(jiàn)名知意:變量名要有意義,見(jiàn)名知意:scorescore分?jǐn)?shù),分?jǐn)?shù),ageage年齡年齡3) 3) 變量名不要太長(zhǎng),書寫麻煩,記憶麻煩變量名不要太長(zhǎng),書寫麻煩,記憶麻煩4) 4) 不允許兩個(gè)全局變量同名,否則編譯程序時(shí)不允許兩個(gè)全局變量同名,否則編譯程序時(shí)出錯(cuò)出錯(cuò)5) 5) 同一個(gè)函數(shù)內(nèi)不能定義兩個(gè)同名的局部變量,同一個(gè)函數(shù)內(nèi)不能定義兩個(gè)同名的局部變量,但不同函數(shù)內(nèi)的局部變量可以重名但不同函數(shù)內(nèi)的局部變量可以重名 普通常量與符號(hào)常量普通常量與符號(hào)常量1) 1) 常量可以是任何的基本數(shù)據(jù)類型,表示方法由其常量可以是任何的基本數(shù)據(jù)類型,表示方法由其類型決定。類型決定。2) 2) 普通普通

9、( (直接、字面直接、字面) )常量常量: : 一般的常量。一般的常量。 如整數(shù)、實(shí)數(shù)、字符、轉(zhuǎn)義字符、字符串等。如整數(shù)、實(shí)數(shù)、字符、轉(zhuǎn)義字符、字符串等。3) 3) 符號(hào)常量:在程序中指定用標(biāo)識(shí)符名字代表的常符號(hào)常量:在程序中指定用標(biāo)識(shí)符名字代表的常量。量。 符號(hào)常量有兩種定義方法:符號(hào)常量有兩種定義方法: a. a.宏常量,在程序文件首部定義:宏常量,在程序文件首部定義:# define PI # define PI 3.14593.1459 b. b.變量常量,按變量說(shuō)明定義:變量常量,按變量說(shuō)明定義:const float const float PI=3.14159f;PI=3.141

10、59f; 使用符號(hào)常量含義清楚,見(jiàn)名知意,且易修改,使用符號(hào)常量含義清楚,見(jiàn)名知意,且易修改,一改全一改全 改。習(xí)慣上,符號(hào)常量名用大寫改。習(xí)慣上,符號(hào)常量名用大寫( (區(qū)別變量名用區(qū)別變量名用小寫小寫) )。1 1字符常量:用一對(duì)單撇號(hào)括起來(lái)的一個(gè)字符字符常量:用一對(duì)單撇號(hào)括起來(lái)的一個(gè)字符 注意注意: : 不能用雙撇號(hào)代替單撇號(hào)。不能用雙撇號(hào)代替單撇號(hào)。2 2轉(zhuǎn)義字符:將反斜杠后面字符轉(zhuǎn)成別的意思轉(zhuǎn)義字符:將反斜杠后面字符轉(zhuǎn)成別的意思 (1) (1) 用反斜杠開(kāi)頭后面跟一個(gè)字母代表一個(gè)特殊字符用反斜杠開(kāi)頭后面跟一個(gè)字母代表一個(gè)特殊字符 (2) (2) 用用代表字符代表字符“”“”,用,用 和

11、和”代表字符單和雙撇代表字符單和雙撇號(hào)號(hào) (3) (3) 用用 后跟后跟1 1到到3 3個(gè)八進(jìn)制數(shù)代表相應(yīng)的個(gè)八進(jìn)制數(shù)代表相應(yīng)的ASCIIASCII的字符的字符 (4) (4) 用用xx后跟后跟1 1到到2 2個(gè)十六進(jìn)制數(shù)代表相應(yīng)的個(gè)十六進(jìn)制數(shù)代表相應(yīng)的ASCIIASCII的字符的字符3 3字符串常量:用一對(duì)雙撇號(hào)括起來(lái)的字符序列字符串常量:用一對(duì)雙撇號(hào)括起來(lái)的字符序列 注意注意: : 存儲(chǔ)時(shí)多占存儲(chǔ)時(shí)多占1 1個(gè)字節(jié),以存儲(chǔ)結(jié)束標(biāo)志個(gè)字節(jié),以存儲(chǔ)結(jié)束標(biāo)志0(0(空字空字符符) )0101算術(shù)運(yùn)算符算術(shù)運(yùn)算符 (+ - + - * * / % + - / % + -)0202關(guān)系運(yùn)算符關(guān)系運(yùn)算

12、符 ( = = = !=)0303邏輯運(yùn)算符邏輯運(yùn)算符 (!(! & | & |)0404位運(yùn)算符位運(yùn)算符 ( | & | &)0505賦值運(yùn)算符賦值運(yùn)算符 (= = 復(fù)合賦值運(yùn)算符)復(fù)合賦值運(yùn)算符)0606條件運(yùn)算符條件運(yùn)算符 (?(?: :)0707逗號(hào)運(yùn)算符逗號(hào)運(yùn)算符 (,)(,)0808指針運(yùn)算符指針運(yùn)算符 (* *)0909地址和引用運(yùn)算符地址和引用運(yùn)算符 (& &)1010求字節(jié)數(shù)運(yùn)算符求字節(jié)數(shù)運(yùn)算符 (sizeofsizeof)1111強(qiáng)制類型轉(zhuǎn)換運(yùn)算符強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 ( ( (類型類型) ) 或類型或類型( ) ( ) )12

13、12分量運(yùn)算符分量運(yùn)算符 (成員運(yùn)算符指向成員運(yùn)算賦(成員運(yùn)算符指向成員運(yùn)算賦 )1313下標(biāo)運(yùn)算符下標(biāo)運(yùn)算符 ( )1414其它其它 (如函數(shù)調(diào)用運(yùn)算符(如函數(shù)調(diào)用運(yùn)算符() ())運(yùn)算符運(yùn)算符( (優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí)和結(jié)合性) )printfprintf函數(shù)函數(shù)該函數(shù)是最常用的有格式的輸出函數(shù)。用法如下:該函數(shù)是最常用的有格式的輸出函數(shù)。用法如下: printf(“ printf(“格式控制字符串格式控制字符串”,”,輸出表列輸出表列); );注意:注意: 1) “ 1) “格式控制字符串格式控制字符串”是用雙撇號(hào)括起來(lái)的字符是用雙撇號(hào)括起來(lái)的字符串,包括串,包括格式說(shuō)明和普通字符。格式

14、說(shuō)明和普通字符。 2) 2) 格式說(shuō)明由格式說(shuō)明由“%”“%”和格式字符組成,作用是將和格式字符組成,作用是將輸出數(shù)據(jù)轉(zhuǎn)輸出數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出換為指定的格式輸出( (提倡類型匹配一致提倡類型匹配一致, ,避免隱式避免隱式轉(zhuǎn)換轉(zhuǎn)換) ),即,即說(shuō)明對(duì)應(yīng)輸出項(xiàng)在輸出時(shí)的位置寬度及相應(yīng)的數(shù)據(jù)說(shuō)明對(duì)應(yīng)輸出項(xiàng)在輸出時(shí)的位置寬度及相應(yīng)的數(shù)據(jù)類型。類型。 3) 3) 普通字符是需要原樣輸出的字符,目的是提示普通字符是需要原樣輸出的字符,目的是提示說(shuō)明,說(shuō)明,增加輸出數(shù)據(jù)的可讀性。增加輸出數(shù)據(jù)的可讀性。 4) “ 4) “輸出表列輸出表列”可以是表達(dá)式、變量、常量等列可以是表達(dá)式、變量、常量等列表表(

15、(建議輸建議輸出表列不要實(shí)現(xiàn)計(jì)算功能出表列不要實(shí)現(xiàn)計(jì)算功能) ),每項(xiàng)之間用逗號(hào),每項(xiàng)之間用逗號(hào)“,”“,”隔開(kāi)。隔開(kāi)。 5) 5) 在使用時(shí),建議嚴(yán)格按照格式要求,提倡個(gè)數(shù)在使用時(shí),建議嚴(yán)格按照格式要求,提倡個(gè)數(shù)對(duì)應(yīng)、對(duì)應(yīng)、類型匹配,即格式符的個(gè)數(shù)應(yīng)該與輸出項(xiàng)的個(gè)數(shù)相類型匹配,即格式符的個(gè)數(shù)應(yīng)該與輸出項(xiàng)的個(gè)數(shù)相同,并且同,并且對(duì)應(yīng)的數(shù)據(jù)類型應(yīng)該一致。對(duì)應(yīng)的數(shù)據(jù)類型應(yīng)該一致。格式符格式符1 1、格式符的標(biāo)準(zhǔn)寫法:、格式符的標(biāo)準(zhǔn)寫法: %-m.n %-m.n字母字母 關(guān)于附加格式字符或修飾符的說(shuō)明:關(guān)于附加格式字符或修飾符的說(shuō)明: a) a) 正負(fù)號(hào):用以指定輸出項(xiàng)左右對(duì)齊方式,正負(fù)號(hào):用以指定

16、輸出項(xiàng)左右對(duì)齊方式,負(fù)號(hào)是左負(fù)號(hào)是左對(duì)齊,缺省正號(hào)()為右對(duì)齊,剩余位置補(bǔ)對(duì)齊,缺省正號(hào)()為右對(duì)齊,剩余位置補(bǔ)空格??崭?。 b) b) 域?qū)捈熬让枋龇驅(qū)捈熬让枋龇鹠.nm.n:mm是最小域?qū)?,是最小域?qū)?,即輸出?shù)即輸出數(shù)據(jù)所占最小位數(shù)據(jù)所占最小位數(shù)( (包括可能的小數(shù)點(diǎn)所占的一包括可能的小數(shù)點(diǎn)所占的一位位) ),若超,若超出該位數(shù),則按實(shí)際位數(shù)輸出;出該位數(shù),則按實(shí)際位數(shù)輸出;n n是精度,輸出是精度,輸出實(shí)數(shù)時(shí)實(shí)數(shù)時(shí)是小數(shù)位數(shù),輸出字符串時(shí)是自左端截取的字是小數(shù)位數(shù),輸出字符串時(shí)是自左端截取的字符個(gè)數(shù)。符個(gè)數(shù)。2 2、常用格式符:、常用格式符:符號(hào)符號(hào)數(shù)據(jù)類型數(shù)據(jù)類型符號(hào)符號(hào)數(shù)據(jù)類型

17、數(shù)據(jù)類型符號(hào)符號(hào)數(shù)據(jù)類型數(shù)據(jù)類型%dint%cchar%o8進(jìn)制數(shù)進(jìn)制數(shù)%ldlong %s字符串字符串%號(hào)號(hào)%ffloat%u無(wú)符號(hào)無(wú)符號(hào)%e指數(shù)指數(shù)%lfdouble%x16進(jìn)制進(jìn)制 注意:輸出實(shí)數(shù)時(shí),若不指定精度,默認(rèn)輸出注意:輸出實(shí)數(shù)時(shí),若不指定精度,默認(rèn)輸出6 6位小數(shù),但輸出的數(shù)字并非都是有效數(shù)字,位小數(shù),但輸出的數(shù)字并非都是有效數(shù)字,floatfloat和和doubledouble型實(shí)數(shù)的有效位數(shù)分別是型實(shí)數(shù)的有效位數(shù)分別是7 7位和位和1616位,最后位,最后一位都采取一位都采取4 4舍舍5 5入。規(guī)范化指數(shù)形式輸出位數(shù)規(guī)定。入。規(guī)范化指數(shù)形式輸出位數(shù)規(guī)定。scanfscanf

18、函數(shù)函數(shù)該函數(shù)是標(biāo)準(zhǔn)輸入函數(shù),用法如下:該函數(shù)是標(biāo)準(zhǔn)輸入函數(shù),用法如下: scanf(“ scanf(“格式控制字符串格式控制字符串”,”,內(nèi)存地址表列內(nèi)存地址表列); );注意:注意:1) “1) “格式串格式串”中中“格式符格式符”的含義與的含義與printfprintf說(shuō)明說(shuō)明基本一致?;疽恢?。 格式符的標(biāo)準(zhǔn)寫法:格式符的標(biāo)準(zhǔn)寫法:%* *mm格式字符格式字符2) “2) “內(nèi)存地址表列內(nèi)存地址表列”指的是用逗號(hào)分隔的內(nèi)存地指的是用逗號(hào)分隔的內(nèi)存地址,可以址,可以 是變量地址或字符串的首地址,是變量地址或字符串的首地址,& &是取變量地址符。是取變量地址符。3) 3)

19、格式串中的格式符與內(nèi)存地址列表個(gè)數(shù)必須相格式串中的格式符與內(nèi)存地址列表個(gè)數(shù)必須相同,對(duì)應(yīng)的數(shù)據(jù)類型必須一致,類型匹配,一同,對(duì)應(yīng)的數(shù)據(jù)類型必須一致,類型匹配,一一對(duì)應(yīng)。一對(duì)應(yīng)。4) 4) 在鍵盤上讀入一個(gè)字符串,可利用在鍵盤上讀入一個(gè)字符串,可利用scanfscanf函數(shù)函數(shù)的的“%s” “%s” 格式,但遇空格或回車時(shí)結(jié)束。若格式,但遇空格或回車時(shí)結(jié)束。若輸入帶空格字符串,可以使用輸入帶空格字符串,可以使用string.hstring.h中的函中的函數(shù)數(shù)gets(str)gets(str),遇回車時(shí)結(jié)束。,遇回車時(shí)結(jié)束。應(yīng)用中應(yīng)該強(qiáng)調(diào)的問(wèn)題應(yīng)用中應(yīng)該強(qiáng)調(diào)的問(wèn)題1) 1) 建議建議“格式串格式

20、串”中只出現(xiàn)中只出現(xiàn)“格式符格式符”,除非必要的提示,除非必要的提示說(shuō)明,其它符號(hào)最多只出現(xiàn)逗號(hào)說(shuō)明,其它符號(hào)最多只出現(xiàn)逗號(hào)“,”“,”或空格。如:或空格。如: scanf(“%d,%d,%f”,&a,&b,&c); / scanf(“%d,%d,%f”,&a,&b,&c); / 逗號(hào)分隔逗號(hào)分隔 scanf(“%d%d%f”,&a,&b,&c); / scanf(“%d%d%f”,&a,&b,&c); / 空格回車跳格分隔空格回車跳格分隔 2) 2) 如果如果“格式串格式串%”%”中出現(xiàn)其它非中出

21、現(xiàn)其它非“格式符格式符”,則從鍵盤,則從鍵盤上上 輸入數(shù)據(jù)時(shí),必須按順序原樣輸入相應(yīng)字符。如:輸入數(shù)據(jù)時(shí),必須按順序原樣輸入相應(yīng)字符。如: scanf(a=%d,b=%d,%f,&a,&b,&c); scanf(a=%d,b=%d,%f,&a,&b,&c); 3) 3) 輸入數(shù)據(jù)時(shí)不能規(guī)定精度,這與輸入數(shù)據(jù)時(shí)不能規(guī)定精度,這與printf()printf()函數(shù)不同。函數(shù)不同。4) “4) “域?qū)捰驅(qū)挕敝付ㄝ斎霐?shù)據(jù)所占列數(shù),系統(tǒng)按照域?qū)捊厝∠嘀付ㄝ斎霐?shù)據(jù)所占列數(shù),系統(tǒng)按照域?qū)捊厝∠?應(yīng)位數(shù);抑制字符應(yīng)位數(shù);抑制字符“* *”表示本輸入項(xiàng)在按格式說(shuō)

22、明讀入表示本輸入項(xiàng)在按格式說(shuō)明讀入數(shù)據(jù)后不賦給任何變量,即跳過(guò)該輸入項(xiàng)。數(shù)據(jù)后不賦給任何變量,即跳過(guò)該輸入項(xiàng)。結(jié)構(gòu)化的流程設(shè)計(jì)結(jié)構(gòu)化的流程設(shè)計(jì)3.1 3.1 順序結(jié)構(gòu)順序結(jié)構(gòu)3.2 3.2 選擇結(jié)構(gòu)選擇結(jié)構(gòu)3.3 3.3 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)3.4 3.4 限定轉(zhuǎn)向限定轉(zhuǎn)向CC語(yǔ)言語(yǔ)句概括語(yǔ)言語(yǔ)句概括 C C語(yǔ)言基本語(yǔ)句語(yǔ)言基本語(yǔ)句表表達(dá)達(dá)式式語(yǔ)語(yǔ)句句控控制制語(yǔ)語(yǔ)句句復(fù)合表達(dá)式語(yǔ)句復(fù)合表達(dá)式語(yǔ)句簡(jiǎn)單表達(dá)式語(yǔ)句簡(jiǎn)單表達(dá)式語(yǔ)句函數(shù)調(diào)用語(yǔ)句函數(shù)調(diào)用語(yǔ)句( (數(shù)據(jù)聲明數(shù)據(jù)聲明& &執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句) )賦值語(yǔ)句賦值語(yǔ)句空語(yǔ)句空語(yǔ)句流程控制語(yǔ)句流程控制語(yǔ)句限定轉(zhuǎn)向語(yǔ)句限定轉(zhuǎn)向語(yǔ)句限定轉(zhuǎn)向限定

23、轉(zhuǎn)向(break;continue;return)(break;continue;return)無(wú)限定轉(zhuǎn)向和退出無(wú)限定轉(zhuǎn)向和退出(goto;exit()(goto;exit()選擇結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)while;dowhilewhile;dowhileforfor多分支多分支二分支二分支(ifelse)(ifelse)else ifelse ifswitchswitchif if 選擇結(jié)構(gòu)選擇結(jié)構(gòu)1 1)選擇基本結(jié)構(gòu)雙分支選擇結(jié)構(gòu))選擇基本結(jié)構(gòu)雙分支選擇結(jié)構(gòu) if( if(表達(dá)式表達(dá)式) ) 語(yǔ)句塊語(yǔ)句塊1;1; else else 語(yǔ)句塊語(yǔ)句塊2; 2; 2 2)缺?。┤笔lsee

24、lse的選擇型結(jié)構(gòu)單分支選擇結(jié)構(gòu)的選擇型結(jié)構(gòu)單分支選擇結(jié)構(gòu) if( if(表達(dá)式表達(dá)式) ) 語(yǔ)句塊語(yǔ)句塊; ; 3 3) if if條件語(yǔ)句的嵌套復(fù)合分支選擇結(jié)構(gòu)條件語(yǔ)句的嵌套復(fù)合分支選擇結(jié)構(gòu) if( if(表達(dá)式表達(dá)式1) 1) if( if(表達(dá)式表達(dá)式2)2) 語(yǔ)句塊語(yǔ)句塊1;1; else else 語(yǔ)句塊語(yǔ)句塊2 2; else else 語(yǔ)句語(yǔ)句3; 3; 4 4) if-else-if if-else-if結(jié)構(gòu)多分支選擇結(jié)構(gòu)結(jié)構(gòu)多分支選擇結(jié)構(gòu) if( if(表達(dá)式表達(dá)式1) 1) 語(yǔ)句塊語(yǔ)句塊1; 1; else if( else if(表達(dá)式表達(dá)式2)2) 語(yǔ)句塊語(yǔ)句塊2;

25、2; else else 語(yǔ)句塊語(yǔ)句塊3 3; switchswitch選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu) switch ( switch (表達(dá)式表達(dá)式) ) case case 常量表達(dá)式常量表達(dá)式1: 1: 語(yǔ)句塊語(yǔ)句塊1; break;1; break; case case 常量表達(dá)式常量表達(dá)式n: n: 語(yǔ)句塊語(yǔ)句塊n; break;n; break; default: default: 語(yǔ)句塊語(yǔ)句塊n+1n+1; 1) switch1) switch后的表達(dá)式只能是整型、字符型或枚舉型表達(dá)式后的表達(dá)式只能是整型、字符型或枚舉型表達(dá)式;casecase后的常量表達(dá)式結(jié)果只能

26、是常量值;而語(yǔ)句塊后的常量表達(dá)式結(jié)果只能是常量值;而語(yǔ)句塊ii可以簡(jiǎn)單語(yǔ)句、空語(yǔ)句、復(fù)合語(yǔ)句塊,也可以省略。可以簡(jiǎn)單語(yǔ)句、空語(yǔ)句、復(fù)合語(yǔ)句塊,也可以省略。2) 2) 先計(jì)算表達(dá)式的值,若值等于某個(gè)常量表達(dá)式值,則選先計(jì)算表達(dá)式的值,若值等于某個(gè)常量表達(dá)式值,則選擇執(zhí)行其對(duì)應(yīng)語(yǔ)句塊擇執(zhí)行其對(duì)應(yīng)語(yǔ)句塊ii;否則,執(zhí)行;否則,執(zhí)行defaultdefault對(duì)應(yīng)語(yǔ)句塊對(duì)應(yīng)語(yǔ)句塊n+1n+1。對(duì)表達(dá)式和常量表達(dá)式是否值一致只作一次判斷。對(duì)表達(dá)式和常量表達(dá)式是否值一致只作一次判斷,當(dāng)選擇執(zhí)行語(yǔ)句塊,當(dāng)選擇執(zhí)行語(yǔ)句塊ii后,如果未碰到語(yǔ)句后,如果未碰到語(yǔ)句breakbreak,則會(huì),則會(huì)繼續(xù)順序執(zhí)行語(yǔ)句塊

27、繼續(xù)順序執(zhí)行語(yǔ)句塊ii后面的語(yǔ)句,直到碰到后面的語(yǔ)句,直到碰到breakbreak或到或到switchswitch最后語(yǔ)句為止。最后語(yǔ)句為止。whilewhile循環(huán)循環(huán)( (先判斷后執(zhí)行的當(dāng)型循環(huán)先判斷后執(zhí)行的當(dāng)型循環(huán)) )while(while(條件表達(dá)式條件表達(dá)式) / “) / “真真”為循環(huán)執(zhí)行條件為循環(huán)執(zhí)行條件 循環(huán)體語(yǔ)句循環(huán)體語(yǔ)句; ; 當(dāng)條件為真時(shí)執(zhí)行語(yǔ)句,直到條件為假才結(jié)束循環(huán)。當(dāng)條件為真時(shí)執(zhí)行語(yǔ)句,直到條件為假才結(jié)束循環(huán)。 首先要對(duì)條件表達(dá)式進(jìn)行計(jì)算和判斷,若其值為真,首先要對(duì)條件表達(dá)式進(jìn)行計(jì)算和判斷,若其值為真, 則執(zhí)行循環(huán)體中的語(yǔ)句,并進(jìn)行下一次的條件判斷;則執(zhí)行循環(huán)體

28、中的語(yǔ)句,并進(jìn)行下一次的條件判斷; 否則立即跳過(guò)循環(huán)體,即一次也不執(zhí)行循環(huán)。否則立即跳過(guò)循環(huán)體,即一次也不執(zhí)行循環(huán)。 do-whiledo-while循環(huán)循環(huán)( (先執(zhí)行后判斷的當(dāng)型循環(huán)先執(zhí)行后判斷的當(dāng)型循環(huán)) ) do do 循環(huán)體語(yǔ)句循環(huán)體語(yǔ)句; ; while( while(條件表達(dá)式條件表達(dá)式); / “); / “真真”為循環(huán)執(zhí)行條件為循環(huán)執(zhí)行條件 1) 1) 先執(zhí)行循環(huán)體語(yǔ)句,直到條件為假時(shí)結(jié)束循環(huán)。先執(zhí)行循環(huán)體語(yǔ)句,直到條件為假時(shí)結(jié)束循環(huán)。 2) 2) 首先要執(zhí)行一次循環(huán),然后才對(duì)條件表達(dá)式進(jìn)行首先要執(zhí)行一次循環(huán),然后才對(duì)條件表達(dá)式進(jìn)行計(jì)算和判斷,若其值為真,則執(zhí)行下一次循環(huán)體中

29、的語(yǔ)計(jì)算和判斷,若其值為真,則執(zhí)行下一次循環(huán)體中的語(yǔ)句,并進(jìn)行隨后的條件判斷;否則立即退出循環(huán)體,即句,并進(jìn)行隨后的條件判斷;否則立即退出循環(huán)體,即僅僅執(zhí)行一次循環(huán)。僅僅執(zhí)行一次循環(huán)。 3) while 3) while循環(huán)和循環(huán)和do-whiledo-while循環(huán)都是當(dāng)型循環(huán),因此循環(huán)都是當(dāng)型循環(huán),因此兩者的條件表達(dá)式的涵義是一致的,真則執(zhí)行循環(huán),假兩者的條件表達(dá)式的涵義是一致的,真則執(zhí)行循環(huán),假則退出循環(huán)。但由于后者至少執(zhí)行一次,因此前者可以則退出循環(huán)。但由于后者至少執(zhí)行一次,因此前者可以涵蓋后者,應(yīng)用更廣。除此外,兩者等價(jià)。涵蓋后者,應(yīng)用更廣。除此外,兩者等價(jià)。forfor循環(huán)循環(huán)(

30、(先判斷后執(zhí)行的當(dāng)型循環(huán)先判斷后執(zhí)行的當(dāng)型循環(huán)) )for(for(表達(dá)式表達(dá)式1;1;表達(dá)式表達(dá)式2;2;表達(dá)式表達(dá)式3)3) 循環(huán)體語(yǔ)句循環(huán)體語(yǔ)句; ; forfor循環(huán)的簡(jiǎn)單理解:循環(huán)的簡(jiǎn)單理解:for(for(初始化表達(dá)式初始化表達(dá)式; ;條件表達(dá)式條件表達(dá)式; ;修正表達(dá)式修正表達(dá)式) ) 循環(huán)體語(yǔ)句循環(huán)體語(yǔ)句; ; 當(dāng)條件為真時(shí)執(zhí)行語(yǔ)句;直到條件為假才結(jié)束循環(huán)。當(dāng)條件為真時(shí)執(zhí)行語(yǔ)句;直到條件為假才結(jié)束循環(huán)。 forfor循環(huán)的真正涵義循環(huán)的真正涵義表達(dá)式表達(dá)式1;1;for(;for(;表達(dá)式表達(dá)式2;) / while(2;) / while(表達(dá)式表達(dá)式2)2) 循環(huán)體語(yǔ)句循環(huán)

31、體語(yǔ)句; ; 表達(dá)式表達(dá)式3;3; 表達(dá)式表達(dá)式1 1執(zhí)行且執(zhí)行一次。執(zhí)行且執(zhí)行一次。表達(dá)式表達(dá)式2 2是條件或邏輯表達(dá)式,值只能是邏輯真或假。是條件或邏輯表達(dá)式,值只能是邏輯真或假。循環(huán)體語(yǔ)句和表達(dá)式循環(huán)體語(yǔ)句和表達(dá)式3 3共同構(gòu)成共同構(gòu)成forfor循環(huán)的循環(huán)體語(yǔ)句。循環(huán)的循環(huán)體語(yǔ)句。注意:如果缺少注意:如果缺少e2e2,循環(huán)條件恒為真,切忌死循環(huán)!,循環(huán)條件恒為真,切忌死循環(huán)!一、一、breakbreak語(yǔ)句語(yǔ)句: : 在在switchswitch語(yǔ)句中中止執(zhí)行選擇;語(yǔ)句中中止執(zhí)行選擇; 在循環(huán)語(yǔ)句中直接退出所在層循環(huán)。在循環(huán)語(yǔ)句中直接退出所在層循環(huán)。二、二、continuecontin

32、ue語(yǔ)句:在循環(huán)語(yǔ)句中,不執(zhí)行該語(yǔ)句后的語(yǔ)句,語(yǔ)句:在循環(huán)語(yǔ)句中,不執(zhí)行該語(yǔ)句后的語(yǔ)句, 但繼續(xù)下次是否執(zhí)行循環(huán)的判定。但繼續(xù)下次是否執(zhí)行循環(huán)的判定。限定轉(zhuǎn)向語(yǔ)句限定轉(zhuǎn)向語(yǔ)句1 1、把結(jié)構(gòu)作為一個(gè)整體(一塊)、把結(jié)構(gòu)作為一個(gè)整體(一塊) 用用 開(kāi)始開(kāi)始, ,用用 結(jié)束。結(jié)束。 如:如: 2 2、結(jié)構(gòu)之前或之后空一行,如:、結(jié)構(gòu)之前或之后空一行,如: / / for(i=0;in;i+) for(i=0;in;i+) / /3 3、若結(jié)構(gòu)有嵌套,則內(nèi)層結(jié)構(gòu)、若結(jié)構(gòu)有嵌套,則內(nèi)層結(jié)構(gòu) 一定要縮進(jìn),編輯器有標(biāo)準(zhǔn)一定要縮進(jìn),編輯器有標(biāo)準(zhǔn) 縮進(jìn),邏輯層次清晰。如:縮進(jìn),邏輯層次清晰。如: for() f

33、or() for() for() 4 4、當(dāng)有多層嵌套時(shí),最好每層、當(dāng)有多層嵌套時(shí),最好每層 開(kāi)始和結(jié)束作適當(dāng)注釋,以開(kāi)始和結(jié)束作適當(dāng)注釋,以 便知道結(jié)構(gòu)開(kāi)始點(diǎn)和結(jié)束點(diǎn)。便知道結(jié)構(gòu)開(kāi)始點(diǎn)和結(jié)束點(diǎn)。作作 業(yè)業(yè) 題題( (用結(jié)構(gòu)化流程設(shè)計(jì)寫用結(jié)構(gòu)化流程設(shè)計(jì)寫CC程序程序) )(1). (1). 打印出打印出1 120122012中的閏年,并統(tǒng)計(jì)閏年中的閏年,并統(tǒng)計(jì)閏年的個(gè)數(shù)。的個(gè)數(shù)。 (2). (2). 打印出打印出1 120122012中的素?cái)?shù),并統(tǒng)計(jì)素?cái)?shù)中的素?cái)?shù),并統(tǒng)計(jì)素?cái)?shù)的個(gè)數(shù)。的個(gè)數(shù)。(3). (3). 輸入兩個(gè)正整數(shù)輸入兩個(gè)正整數(shù)mm和和n n,求最大公約數(shù),求最大公約數(shù)和最小公倍數(shù)。和

34、最小公倍數(shù)。(4). (4). 打印出所有的水仙花數(shù)。打印出所有的水仙花數(shù)。(5). (5). 求方程求方程 a a* *x x* *x+bx+b* *x+c=0 x+c=0 的根。的根。(6). (6). 輸入輸入3 3個(gè)二維點(diǎn)的坐標(biāo),求它們圍成的個(gè)二維點(diǎn)的坐標(biāo),求它們圍成的面積。面積。復(fù)雜數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型1 1 數(shù)組數(shù)組2 2 指針指針3 3 結(jié)構(gòu)體與共同體結(jié)構(gòu)體與共同體4 4 文件文件數(shù)組數(shù)組定義:數(shù)組是指一組相同類型數(shù)據(jù)組成的定義:數(shù)組是指一組相同類型數(shù)據(jù)組成的序列。序列。 表示:表示: 1) 1) 用一個(gè)統(tǒng)一的數(shù)組名稱來(lái)標(biāo)識(shí)這一用一個(gè)統(tǒng)一的數(shù)組名稱來(lái)標(biāo)識(shí)這一組數(shù)據(jù);組數(shù)據(jù); 2)

35、 2) 用下標(biāo)來(lái)指示數(shù)組中元素的序號(hào)。用下標(biāo)來(lái)指示數(shù)組中元素的序號(hào)。 概括:把一批相同數(shù)據(jù)類型的變量,概括:把一批相同數(shù)據(jù)類型的變量,用一個(gè)相同用一個(gè)相同名字來(lái)表示,這就是數(shù)組。當(dāng)要用其中某名字來(lái)表示,這就是數(shù)組。當(dāng)要用其中某個(gè)變量時(shí),個(gè)變量時(shí),只需用該名字與相應(yīng)變量在數(shù)組中序號(hào)表只需用該名字與相應(yīng)變量在數(shù)組中序號(hào)表示即可。示即可。 注意:同一數(shù)組中所有元素必須屬于注意:同一數(shù)組中所有元素必須屬于同一數(shù)據(jù)類同一數(shù)據(jù)類型。在實(shí)際程序設(shè)計(jì)中,很少不用數(shù)組的型。在實(shí)際程序設(shè)計(jì)中,很少不用數(shù)組的程序。將數(shù)程序。將數(shù)組與循環(huán)結(jié)合起來(lái),可方便和高效處理大組與循環(huán)結(jié)合起來(lái),可方便和高效處理大批量數(shù)據(jù)。批量數(shù)

36、據(jù)。一維數(shù)組一維數(shù)組1 1、數(shù)組定義:、數(shù)組定義: 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名 正整數(shù)常量表達(dá)正整數(shù)常量表達(dá)式式 ; 數(shù)組的定義與普通變量的定義類似,數(shù)組的定義與普通變量的定義類似,只需在數(shù)只需在數(shù)組名后加上一對(duì)方括號(hào)和正整數(shù)常量表達(dá)組名后加上一對(duì)方括號(hào)和正整數(shù)常量表達(dá)式式( (包括包括符號(hào)常量符號(hào)常量) )以表示元素個(gè)數(shù)或數(shù)組長(zhǎng)度以表示元素個(gè)數(shù)或數(shù)組長(zhǎng)度( (大大小小) )即可。即可。2 2、數(shù)組元素的表示、數(shù)組元素的表示 數(shù)組名數(shù)組名 元素序號(hào)元素序號(hào) / /數(shù)組元素等同數(shù)組元素等同于變量于變量括號(hào)括號(hào) 及其中的值又稱為下標(biāo)。及其中的值又稱為下標(biāo)。1)1)若若N N為數(shù)組長(zhǎng)度,則下標(biāo)從

37、為數(shù)組長(zhǎng)度,則下標(biāo)從0 0 開(kāi)始,最開(kāi)始,最大為大為N-1N-1。2) C2) C語(yǔ)言不允許數(shù)組的大小為變量。語(yǔ)言不允許數(shù)組的大小為變量。3) C3) C編譯不檢查下標(biāo)是否編譯不檢查下標(biāo)是否“越界越界”。數(shù)組初始化方法數(shù)組初始化方法1 1: 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名 數(shù)組元素?cái)?shù)組元素=常量數(shù)據(jù)列表常量數(shù)據(jù)列表; ;數(shù)組初始化方法數(shù)組初始化方法2:2: 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名 = =常量數(shù)據(jù)列表常量數(shù)據(jù)列表; ; 方法方法2 2中,數(shù)組的中,數(shù)組的“元素個(gè)數(shù)元素個(gè)數(shù)”可以省略,此時(shí),可以省略,此時(shí),數(shù)組元素的個(gè)數(shù)數(shù)組元素的個(gè)數(shù)=“=“常量數(shù)據(jù)列表常量數(shù)據(jù)列表”中常量的個(gè)數(shù)。中常量的

38、個(gè)數(shù)。但若元素個(gè)數(shù)與初值表中數(shù)據(jù)個(gè)數(shù)不相同時(shí),則必須但若元素個(gè)數(shù)與初值表中數(shù)據(jù)個(gè)數(shù)不相同時(shí),則必須在數(shù)組名后給出元素個(gè)數(shù)。在數(shù)組名后給出元素個(gè)數(shù)。/花括弧中初值個(gè)數(shù)不能大于數(shù)組長(zhǎng)度花括弧中初值個(gè)數(shù)不能大于數(shù)組長(zhǎng)度, ,否則語(yǔ)法錯(cuò)誤否則語(yǔ)法錯(cuò)誤int a10=1,2,3,4,5,6,7,8,9,10;int a10=1,2,3,4,5,6,7,8,9,10;int b =1,2,3,4; /bint b =1,2,3,4; /b中的元素個(gè)數(shù)為中的元素個(gè)數(shù)為4 4int c20=1,2,3; int c20=1,2,3; /把把1,2,31,2,3分別賦給分別賦給c c前前3 3個(gè)元素個(gè)元素,c,

39、c其余元素被賦其余元素被賦0 0值值二維數(shù)組二維數(shù)組1 1、定義、定義( (兩對(duì)方括號(hào)內(nèi)都是正整數(shù)常量表達(dá)式兩對(duì)方括號(hào)內(nèi)都是正整數(shù)常量表達(dá)式) ) 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名 行數(shù)行數(shù) 每行元素個(gè)數(shù)或列數(shù)每行元素個(gè)數(shù)或列數(shù) 2 2、元素的下標(biāo)表示法:、元素的下標(biāo)表示法: 數(shù)組名數(shù)組名 行下標(biāo)行下標(biāo) 列下標(biāo)列下標(biāo) 其中:行下標(biāo)其中:行下標(biāo)( (慢維慢維) )表示該元素所在的行,表示該元素所在的行, 列下標(biāo)列下標(biāo)( (快維快維) )表示該數(shù)組元素所在的列。表示該數(shù)組元素所在的列。CC語(yǔ)言規(guī)定:二維數(shù)組在內(nèi)存中存儲(chǔ)是按行存儲(chǔ),語(yǔ)言規(guī)定:二維數(shù)組在內(nèi)存中存儲(chǔ)是按行存儲(chǔ),即先行后列:先存儲(chǔ)第即先行后

40、列:先存儲(chǔ)第0 0行,再存第行,再存第1 1行,行,二維數(shù)組的初始化二維數(shù)組的初始化int a33=1,2,3,1,2,5;int b33=1,2,3,1,2,5;int c3=1,2,3,4,5,5,6,7; /列數(shù)不能省列數(shù)不能省在定義二維數(shù)組時(shí)也可以給數(shù)組初始化或賦初值:在定義二維數(shù)組時(shí)也可以給數(shù)組初始化或賦初值:數(shù)組初始化方法數(shù)組初始化方法1(1(提倡按行賦初值提倡按行賦初值, , 界限清楚界限清楚) ): 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名 行數(shù)行數(shù) 每行元素個(gè)數(shù)每行元素個(gè)數(shù)= 第第0 0行常量列表行常量列表,第第1 1行常量列表行常量列表 ,.;.;數(shù)組初始化方法數(shù)組初始化方法2 2:

41、 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名 行數(shù)行數(shù) 每行元素個(gè)數(shù)每行元素個(gè)數(shù)= 常量列表常量列表 ;字符數(shù)組與字符串字符數(shù)組與字符串1) 1) 字符串是數(shù)據(jù)處理中重要的數(shù)據(jù)類型,但字符串是數(shù)據(jù)處理中重要的數(shù)據(jù)類型,但CC語(yǔ)言中語(yǔ)言中沒(méi)有專門的字符串類型。字符串是指若干有效字符的序沒(méi)有專門的字符串類型。字符串是指若干有效字符的序列,而有效字符是指系統(tǒng)允許使用的字符,包括字母、列,而有效字符是指系統(tǒng)允許使用的字符,包括字母、數(shù)字、專用字符、轉(zhuǎn)義字符等。在數(shù)字、專用字符、轉(zhuǎn)義字符等。在CC語(yǔ)言中字符串用定界語(yǔ)言中字符串用定界符雙撇號(hào)來(lái)表示,如:符雙撇號(hào)來(lái)表示,如:“China”, “a+b=c”, “Chi

42、na”, “a+b=c”, “%dn” “%dn” 。 2) 2) 在在CC語(yǔ)言中,字符串是存放在一個(gè)字符型數(shù)組中。語(yǔ)言中,字符串是存放在一個(gè)字符型數(shù)組中。字符數(shù)組就是用來(lái)存放字符數(shù)據(jù)的數(shù)組。字符數(shù)組就是用來(lái)存放字符數(shù)據(jù)的數(shù)組。CC語(yǔ)言中字符串語(yǔ)言中字符串使用字符數(shù)組來(lái)表示和存儲(chǔ)。使用字符數(shù)組來(lái)表示和存儲(chǔ)。 3) 3) 字符串中的每個(gè)字符按次序順序存儲(chǔ)在內(nèi)存中,每字符串中的每個(gè)字符按次序順序存儲(chǔ)在內(nèi)存中,每個(gè)字符串都以個(gè)字符串都以00結(jié)束,該字符的結(jié)束,該字符的ASCIIASCII值為值為0 0。注意:字符串一定是字符數(shù)組,字符數(shù)組不一定字符串注意:字符串一定是字符數(shù)組,字符數(shù)組不一定字符串!

43、 !字符串的初始化字符串的初始化char a=“I like C programming”; / 推薦的初始化方法推薦的初始化方法char a30=I, ,l,i,k,e, ,C,p,r,o,g,r,a,m,m, i,n,g,0; 初始化:可逐個(gè)地為數(shù)組中各元素指定初值字符初始化:可逐個(gè)地為數(shù)組中各元素指定初值字符(繁瑣繁瑣),也可用字符串整體賦初值也可用字符串整體賦初值(方便方便),即指定一個(gè)字符串初值。,即指定一個(gè)字符串初值。 注意:賦值語(yǔ)句不支持字符數(shù)組或字符串的整體賦值,注意:賦值語(yǔ)句不支持字符數(shù)組或字符串的整體賦值,而只能逐個(gè)賦值。而只能逐個(gè)賦值。 char a30; a=I lik

44、e C programming; / Error數(shù)組名表示一個(gè)地址常量,而賦值運(yùn)算符左邊必須是變量。數(shù)組名表示一個(gè)地址常量,而賦值運(yùn)算符左邊必須是變量。 char Name230=Zhang San , Li Si;字符串的輸入與輸出字符串的輸入與輸出 1 1、scanfscanf函數(shù)格式輸入函數(shù)格式輸入 char a30; char a30; scanf(%c, &a0); / scanf(%c, &a0); /逐個(gè)輸入各元素值逐個(gè)輸入各元素值 scanf(%s,a); / scanf(%s,a); /一次輸入字符串一次輸入字符串 注意:注意:1) 1) 數(shù)組名本身就代表首元

45、素地址。數(shù)組名本身就代表首元素地址。 2) 2) 系統(tǒng)會(huì)自動(dòng)加一個(gè)結(jié)束符系統(tǒng)會(huì)自動(dòng)加一個(gè)結(jié)束符00。 3) scanf 3) scanf遇到空格或回車為結(jié)束。遇到空格或回車為結(jié)束。2 2、getsgets函數(shù)字符串輸入函數(shù)字符串輸入 char a30; char a30; gets(a); / gets(a); /輸入時(shí)以回車為結(jié)束標(biāo)記輸入時(shí)以回車為結(jié)束標(biāo)記注意:注意: scanf scanf和和getsgets整體輸入字符串的時(shí)候整體輸入字符串的時(shí)候, 參數(shù)必須是一維數(shù)組名參數(shù)必須是一維數(shù)組名( (存儲(chǔ)首地址存儲(chǔ)首地址) )。3 3、printfprintf函數(shù)格式輸出函數(shù)格式輸出 char

46、 a30; char a30; printf(%c,a0) / printf(%c,a0) /逐個(gè)輸出各元素值逐個(gè)輸出各元素值 printf(“%sn”,a); / printf(“%sn”,a); /一次輸出字符串,并回車換一次輸出字符串,并回車換行行 注意:注意:1) 1) 輸出元素時(shí)輸出元素時(shí)(%c)(%c),要帶下標(biāo)。,要帶下標(biāo)。 2) 2) 輸出串時(shí)輸出串時(shí)(%s)(%s)只用數(shù)組名只用數(shù)組名( (首地址首地址) )即可。即可。 3) 3) 輸出時(shí)不包括輸出時(shí)不包括0(0(字符串結(jié)束符字符串結(jié)束符) )。 4) 4) 字符數(shù)組或串中首個(gè)字符數(shù)組或串中首個(gè)00后字符不予輸后字符不予輸出

47、。出。4 4、putsputs函數(shù)字符串輸出函數(shù)字符串輸出( (一次輸出字符串一次輸出字符串, ,并自動(dòng)換行并自動(dòng)換行) ) char a20=I love China!; char a20=I love China!; puts(I love China!); puts(a); puts(I love China!); puts(a); 注意:注意: printf printf和和putsputs整體輸出字符串的時(shí)候,參數(shù)必須整體輸出字符串的時(shí)候,參數(shù)必須 是一維數(shù)組名或字符串是一維數(shù)組名或字符串( (一維數(shù)組存儲(chǔ)首地址一維數(shù)組存儲(chǔ)首地址) )。函數(shù)庫(kù)函數(shù)庫(kù)中的字符串函數(shù)中的字符串函數(shù)1 1

48、、strlen strlen 求字符串長(zhǎng)度求字符串長(zhǎng)度 strlen(1 strlen(1維字符數(shù)組名或串維字符數(shù)組名或串) ) 注意:返回值為第注意:返回值為第1 1個(gè)結(jié)束符個(gè)結(jié)束符00之前的實(shí)際長(zhǎng)度。之前的實(shí)際長(zhǎng)度。2 2、strcmp strcmp 比較兩個(gè)字符串的大小比較兩個(gè)字符串的大小(ASCII(ASCII碼值碼值) ) strcmp(1 strcmp(1維字符數(shù)組名或串維字符數(shù)組名或串1, 11, 1維字符數(shù)組名或串維字符數(shù)組名或串2)2) 注意:前者大于注意:前者大于, , 等于等于, , 小于后者返回值分別為小于后者返回值分別為1, 0, -11, 0, -1。3 3、str

49、cpy strcpy 字符串復(fù)制字符串復(fù)制( (覆蓋覆蓋) strncpy() strncpy(設(shè)定要復(fù)制的數(shù)目設(shè)定要復(fù)制的數(shù)目) ) strcpy(1 strcpy(1維字符數(shù)組維字符數(shù)組1 1名名, 1, 1維字符數(shù)組維字符數(shù)組2 2名或串名或串) ) 注意:字符數(shù)組注意:字符數(shù)組1 1必須足夠容納字符數(shù)組或串必須足夠容納字符數(shù)組或串2 2。用數(shù)組進(jìn)行程序設(shè)計(jì)用數(shù)組進(jìn)行程序設(shè)計(jì)(1). (1). 由鍵盤輸入由鍵盤輸入MM行行MM列的方陣,作矩陣轉(zhuǎn)置,最后輸出。列的方陣,作矩陣轉(zhuǎn)置,最后輸出。 要求轉(zhuǎn)置前后只用同一個(gè)二維數(shù)組實(shí)現(xiàn)程序。要求轉(zhuǎn)置前后只用同一個(gè)二維數(shù)組實(shí)現(xiàn)程序。(2). (2).

50、 由鍵盤輸入由鍵盤輸入MM個(gè)最大長(zhǎng)度為個(gè)最大長(zhǎng)度為N N的無(wú)空格的字符串,存入的無(wú)空格的字符串,存入 二維字符數(shù)組中,按二維字符數(shù)組中,按ASCIIASCII碼由小到大排序,最后輸出。碼由小到大排序,最后輸出。(3). P153(3). P153習(xí)題習(xí)題7.97.9對(duì)已排序數(shù)組,實(shí)現(xiàn)折半查找。對(duì)已排序數(shù)組,實(shí)現(xiàn)折半查找。模塊化的函數(shù)設(shè)計(jì)模塊化的函數(shù)設(shè)計(jì)1 1 函數(shù)定義及使用函數(shù)定義及使用2 2 函數(shù)的參數(shù)傳遞函數(shù)的參數(shù)傳遞3 3 數(shù)組作為函數(shù)參數(shù)數(shù)組作為函數(shù)參數(shù)4 4 函數(shù)的復(fù)雜調(diào)用函數(shù)的復(fù)雜調(diào)用5 5 全局變量與局部變量全局變量與局部變量6 6 變量和函數(shù)的存儲(chǔ)類別變量和函數(shù)的存儲(chǔ)類別7 7

51、 編譯預(yù)處理編譯預(yù)處理 函數(shù)的定義函數(shù)的定義數(shù)據(jù)類型數(shù)據(jù)類型 函數(shù)名函數(shù)名( (形參定義形參定義) ) 說(shuō)明部分說(shuō)明部分 語(yǔ)句部分語(yǔ)句部分 1 1、“數(shù)據(jù)類型數(shù)據(jù)類型”可以是簡(jiǎn)單類型、可以是簡(jiǎn)單類型、構(gòu)造類型等。構(gòu)造類型等。2 2、“說(shuō)明部分說(shuō)明部分”指的是變量的說(shuō)明指的是變量的說(shuō)明或函數(shù)說(shuō)明。或函數(shù)說(shuō)明。3 3、“語(yǔ)句部分語(yǔ)句部分”,即可執(zhí)行語(yǔ)句。注即可執(zhí)行語(yǔ)句。注意:意:CC語(yǔ)言中語(yǔ)言中“說(shuō)說(shuō)明部分明部分”與與“語(yǔ)句語(yǔ)句部分部分”不能交叉。不能交叉。4 4、“形參定義形參定義”中的形參是一中的形參是一些變量,這些變量必須單獨(dú)定義。些變量,這些變量必須單獨(dú)定義。如:如:int x,int y

52、,float zint x,int y,float z,不能簡(jiǎn),不能簡(jiǎn)寫為寫為int x,y,long zint x,y,long z函數(shù)調(diào)用的規(guī)則函數(shù)調(diào)用的規(guī)則 如果在函數(shù)如果在函數(shù)A A中使用函數(shù)中使用函數(shù)B B,則稱:函數(shù),則稱:函數(shù)A A為主調(diào)用為主調(diào)用函數(shù),函數(shù)函數(shù),函數(shù)B B為被調(diào)用函數(shù)。函數(shù)調(diào)用過(guò)程的規(guī)則是:為被調(diào)用函數(shù)。函數(shù)調(diào)用過(guò)程的規(guī)則是:1. 1. 函數(shù)必須先定義后才能使用。即被調(diào)用函數(shù)應(yīng)該在函數(shù)必須先定義后才能使用。即被調(diào)用函數(shù)應(yīng)該在 主調(diào)用函數(shù)之前定義,或者先說(shuō)明后定義。主調(diào)用函數(shù)之前定義,或者先說(shuō)明后定義。2. 2. 函數(shù)定義和說(shuō)明函數(shù)定義和說(shuō)明( (聲明聲明) )不

53、同,后者又稱函數(shù)原型聲明,不同,后者又稱函數(shù)原型聲明,使編譯階段能對(duì)調(diào)用函數(shù)的合法性進(jìn)行全面檢查。使編譯階段能對(duì)調(diào)用函數(shù)的合法性進(jìn)行全面檢查。3. 3. 在使用函數(shù)時(shí),實(shí)際參數(shù)與形式參數(shù)的個(gè)數(shù)必須相同,在使用函數(shù)時(shí),實(shí)際參數(shù)與形式參數(shù)的個(gè)數(shù)必須相同,并且對(duì)應(yīng)的數(shù)據(jù)類型必須相同。并且對(duì)應(yīng)的數(shù)據(jù)類型必須相同。( (個(gè)數(shù)、順序、類型個(gè)數(shù)、順序、類型) )4. 4. 若函數(shù)定義前調(diào)用函數(shù),則函數(shù)說(shuō)明是必須的,函數(shù)若函數(shù)定義前調(diào)用函數(shù),則函數(shù)說(shuō)明是必須的,函數(shù)原型聲明的方法與變量定義類似,但可以省略形參名。原型聲明的方法與變量定義類似,但可以省略形參名。函數(shù)的使用函數(shù)的使用( (調(diào)用調(diào)用) )自定義函數(shù)

54、的使用與標(biāo)準(zhǔn)函數(shù)的使用是一樣的。用法如下:自定義函數(shù)的使用與標(biāo)準(zhǔn)函數(shù)的使用是一樣的。用法如下:函數(shù)名函數(shù)名( (實(shí)際參數(shù)列表實(shí)際參數(shù)列表) )函數(shù)名函數(shù)名( (實(shí)際參數(shù)列表實(shí)際參數(shù)列表); );或或用在表達(dá)式中用在表達(dá)式中用作程序語(yǔ)句用作程序語(yǔ)句(1) (1) 實(shí)際參數(shù)可以是:變量、常量、表達(dá)式、函數(shù)等。實(shí)際參數(shù)可以是:變量、常量、表達(dá)式、函數(shù)等。 (2) (2) 函數(shù)的參數(shù)傳遞就是把實(shí)參傳遞給形參的過(guò)程。函數(shù)的參數(shù)傳遞就是把實(shí)參傳遞給形參的過(guò)程。 若形參是非數(shù)組的變量,則為單向值傳遞;若形參是非數(shù)組的變量,則為單向值傳遞; 若形參為數(shù)組,則實(shí)參和形參共享地址。若形參為數(shù)組,則實(shí)參和形參共享地

55、址。(3) (3) 函數(shù)定義在調(diào)用之后,則必須進(jìn)行函數(shù)原型聲明。函數(shù)定義在調(diào)用之后,則必須進(jìn)行函數(shù)原型聲明。 原型中形參的變量名可以省略。數(shù)組特別規(guī)定!原型中形參的變量名可以省略。數(shù)組特別規(guī)定!變量的作用域與生存期變量的作用域與生存期1. 1. 變量在什么地方有效變量在什么地方有效( (可用可用) ):作用域:作用域( (空間可見(jiàn)性空間可見(jiàn)性) ) 變量按有效范圍,分為全局變量與局部變量。變量按有效范圍,分為全局變量與局部變量。2. 2. 變量在什么時(shí)候有效變量在什么時(shí)候有效( (可用可用) ):生存期:生存期( (時(shí)間存在性時(shí)間存在性) ) a a 靜態(tài)存儲(chǔ):在編譯時(shí)分配的存儲(chǔ)單元;靜態(tài)存儲(chǔ)

56、:在編譯時(shí)分配的存儲(chǔ)單元; b b 動(dòng)態(tài)存儲(chǔ):只在程序執(zhí)行的某一段時(shí)間存在。動(dòng)態(tài)存儲(chǔ):只在程序執(zhí)行的某一段時(shí)間存在。 注意:變量是對(duì)程序中數(shù)據(jù)的存儲(chǔ)空間的抽象,有注意:變量是對(duì)程序中數(shù)據(jù)的存儲(chǔ)空間的抽象,有兩種兩種屬性:操作屬性屬性:操作屬性( (數(shù)據(jù)類型數(shù)據(jù)類型) )和存儲(chǔ)屬性和存儲(chǔ)屬性( (動(dòng)態(tài)變量、動(dòng)態(tài)變量、靜態(tài)靜態(tài)變量、外部變量變量、外部變量) )。 I. 全局變量全局變量(文件作用域文件作用域)定義:在所有函數(shù)之外定義的變量,稱為全局變量。定義:在所有函數(shù)之外定義的變量,稱為全局變量。有效范圍:從定義之處開(kāi)始,對(duì)隨后所有函數(shù)都有有效范圍:從定義之處開(kāi)始,對(duì)隨后所有函數(shù)都有效。效。II

57、. 局部變量局部變量(塊作用域塊作用域)定義:在某個(gè)函數(shù)內(nèi)部定義的變量。定義:在某個(gè)函數(shù)內(nèi)部定義的變量。有效范圍:局部變量只在定義它的函數(shù)內(nèi)部有效。有效范圍:局部變量只在定義它的函數(shù)內(nèi)部有效。 相同變量名在不同函數(shù)內(nèi)部是互不相同相同變量名在不同函數(shù)內(nèi)部是互不相同的。的。注意:當(dāng)全局變量與局部變量名字相同時(shí),它們是注意:當(dāng)全局變量與局部變量名字相同時(shí),它們是不同的變不同的變 量,此時(shí)局部變量的使用優(yōu)先于全局變量。量,此時(shí)局部變量的使用優(yōu)先于全局變量。(函數(shù)原型作用域:函數(shù)原型聲明時(shí)形參的作用范圍函數(shù)原型作用域:函數(shù)原型聲明時(shí)形參的作用范圍)標(biāo)識(shí)符作用域可見(jiàn)性的一般規(guī)則標(biāo)識(shí)符作用域可見(jiàn)性的一般規(guī)則

58、1. 1. 標(biāo)識(shí)符要聲明在前,引用標(biāo)識(shí)符要聲明在前,引用( (使用使用) )在后。在后。2. 2. 在同一作用域中,不能聲明同名的標(biāo)識(shí)符。在同一作用域中,不能聲明同名的標(biāo)識(shí)符。3. 3. 在沒(méi)有互相包含關(guān)系的不同的作用域中聲在沒(méi)有互相包含關(guān)系的不同的作用域中聲明的明的 同名標(biāo)識(shí)符,互不影響。同名標(biāo)識(shí)符,互不影響。4. 4. 如果在兩個(gè)或多個(gè)具有包含關(guān)系的作用域如果在兩個(gè)或多個(gè)具有包含關(guān)系的作用域中聲中聲 明了同名標(biāo)識(shí)符,則外層標(biāo)識(shí)符在內(nèi)層不可明了同名標(biāo)識(shí)符,則外層標(biāo)識(shí)符在內(nèi)層不可見(jiàn)。見(jiàn)。變量的存儲(chǔ)類別及特點(diǎn)變量的存儲(chǔ)類別及特點(diǎn) 動(dòng)態(tài)變量:在程序執(zhí)行的某一時(shí)刻被動(dòng)態(tài)地建立,并動(dòng)態(tài)變量:在程序執(zhí)行

59、的某一時(shí)刻被動(dòng)態(tài)地建立,并在另一時(shí)刻被動(dòng)態(tài)撤銷的一種變量。動(dòng)態(tài)變量包括:自動(dòng)在另一時(shí)刻被動(dòng)態(tài)撤銷的一種變量。動(dòng)態(tài)變量包括:自動(dòng)變量和寄存器變量。變量和寄存器變量。 1. 1. 自動(dòng)變量自動(dòng)變量( (缺省的存儲(chǔ)類別缺省的存儲(chǔ)類別) ) auto auto 數(shù)據(jù)類型數(shù)據(jù)類型 變量名列表;變量名列表; 自動(dòng)變量用自動(dòng)變量用autoauto定義,是局部變量,在對(duì)其賦值之前,定義,是局部變量,在對(duì)其賦值之前,它的值是不確定的,存儲(chǔ)在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)。當(dāng)程序進(jìn)它的值是不確定的,存儲(chǔ)在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)。當(dāng)程序進(jìn)入到函數(shù)時(shí),入到函數(shù)時(shí),autoauto定義的變量自動(dòng)建立,當(dāng)退出函數(shù)時(shí),定義的變量自動(dòng)建立,當(dāng)退

60、出函數(shù)時(shí),自動(dòng)釋放。若沒(méi)有指出變量存儲(chǔ)類別,則默認(rèn)是自動(dòng)釋放。若沒(méi)有指出變量存儲(chǔ)類別,則默認(rèn)是autoauto變量。變量。 2. 2. 寄存變量寄存變量 register register 數(shù)據(jù)類型數(shù)據(jù)類型 變量名列表;變量名列表; 具有與自動(dòng)變量完全相同的性質(zhì),保存在具有與自動(dòng)變量完全相同的性質(zhì),保存在CPUCPU的寄存的寄存器里,存取速度快,但不能定義太多這樣的變量。器里,存取速度快,但不能定義太多這樣的變量。 3. 3. 靜態(tài)變量靜態(tài)變量 static static 數(shù)據(jù)類型數(shù)據(jù)類型 變量名列表變量名列表=初始化初始化 ; static static變量保存在靜態(tài)存儲(chǔ)區(qū)。變量保存在靜態(tài)存儲(chǔ)區(qū)。staticstatic變量有全局靜態(tài)變量有全局靜態(tài)變量與局部靜態(tài)變量。變量與局部靜態(tài)變量。staticstatic變量在整個(gè)程序中只定義變量在整個(gè)程序中只定義1 1次。次。在函數(shù)中定義的在函數(shù)中定義的stat

溫馨提示

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