版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1章 程序設(shè)計(jì)基本概念考點(diǎn)歸納1.1 C語(yǔ)言的特點(diǎn)C語(yǔ)言是近年來非常流行的語(yǔ)言,很多人寧愿放棄已經(jīng)熟悉的其他語(yǔ)言而改用C語(yǔ)言,其原因是C語(yǔ)言有優(yōu)于其他語(yǔ)言的一系列特點(diǎn)。下面是C語(yǔ)言的主要特點(diǎn):(1)語(yǔ)言簡(jiǎn)潔、緊湊,并且使用方便、靈活;(2)運(yùn)算符豐富;(3)數(shù)據(jù)結(jié)構(gòu)豐富;(4)具有結(jié)構(gòu)化的控制語(yǔ)句;(5)語(yǔ)法限制不太嚴(yán)格,使程序設(shè)計(jì)比較自由;(6)C語(yǔ)言允許用戶直接訪問物理地址,能進(jìn)行位(bit)操作,可以直接對(duì)硬件進(jìn)行操作。1.2 源程序的書寫規(guī)則C語(yǔ)言的書寫規(guī)則。C語(yǔ)言書寫格式自由,一行內(nèi)可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句也可以分寫在多行上。C程序沒有行號(hào),每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。
2、C語(yǔ)言中分號(hào)是語(yǔ)句中不可少的,即使是程序中的最后一個(gè)語(yǔ)句也應(yīng)該包含分號(hào)。C語(yǔ)言中的注釋可以用/*用*/結(jié)束,注釋可以在任何允許插入空格符地方插入。C語(yǔ)言中注釋不允許嵌套,注釋可以用西文,也可以用中文。1.3 C語(yǔ)言的風(fēng)格由于C語(yǔ)言對(duì)語(yǔ)法限制不太嚴(yán)格,為了保證程序的準(zhǔn)確性和可讀性,建議在書寫程序采用階梯縮進(jìn)格式。也就是按如下格式書寫C語(yǔ)言程序:*;*()*;*;*;*;概括起來,C語(yǔ)言程序具有如下的風(fēng)格:C語(yǔ)言程序的函數(shù)具體模塊結(jié)構(gòu)風(fēng)格,使得程序整體結(jié)構(gòu)清晰、層次清楚,為模塊化程序設(shè)計(jì)提供了強(qiáng)有力的支持。C語(yǔ)言的源程序的擴(kuò)展名都是.C。C語(yǔ)言中的注釋格式為:/*注釋內(nèi)容*/與*之間不允許有空格,
3、注釋部分允許出現(xiàn)在程序中的任何位置。C語(yǔ)言中的所有語(yǔ)句都必須以分號(hào)“;”結(jié)束。第2章 C程序設(shè)計(jì)的初步知識(shí)考點(diǎn)歸納2.1 程序的構(gòu)成盡管C程序的內(nèi)容千變?nèi)f化,但是它們的構(gòu)成都是一致的,一個(gè)完整的C源程序的格式可以如下表示:編譯預(yù)處理主函數(shù)()函數(shù)().函數(shù)()從上面中可以看出,一個(gè)C源程序?qū)嶋H上就是若干函數(shù)的集合,這些函數(shù)中有一個(gè)是程序的主函數(shù),任何C的源程序執(zhí)行時(shí),都是從主函數(shù)開始執(zhí)行的,其它的函數(shù)最終必將被這個(gè)主函數(shù)所調(diào)用。C語(yǔ)言除了主函數(shù)規(guī)定必須取名main外,其它的函數(shù)名可以任取,但是要符合C的標(biāo)識(shí)符取名規(guī)則,另外注意不要與保留字重名,最好也不可與C語(yǔ)言中的庫(kù)函數(shù)或其它一些命令如編譯預(yù)
4、處另命令重名。各個(gè)函數(shù)在程序中所處的位置并不是固定的,但要求一個(gè)函數(shù)是完整的、獨(dú)立的。不允許出現(xiàn)在一個(gè)函數(shù)內(nèi)部又去定義另一個(gè)函數(shù),或是函數(shù)格式不齊全的現(xiàn)象。一個(gè)完整的一般意義上的函數(shù)有一個(gè)固定的框架,編寫具體的函數(shù)時(shí),只需在這個(gè)框架中填入相應(yīng)的內(nèi)容即可??蚣苋缦拢汉瘮?shù)類型 函數(shù)名(形參)形參說明內(nèi)部變量說明;執(zhí)行語(yǔ)句部分;2.2 C語(yǔ)言的基本詞法C語(yǔ)言的基本詞法由三部分組成:符號(hào)集、關(guān)鍵字、保留字。符號(hào)集就是一門語(yǔ)言中允許出現(xiàn)的字符的集合,C語(yǔ)言的符號(hào)集就是ASC碼表中的一些字符,在鍵盤上不能直接得到(比如說響鈴字符),C語(yǔ)言引入了轉(zhuǎn)義字符的概念,利用反斜杠符號(hào)后加上字母的一個(gè)字符組合來表示這
5、些字符,當(dāng)在源程序中遇到這類字符組合時(shí),雖然這個(gè)字符組合是一個(gè)字符串的形式,但C語(yǔ)言仍會(huì)自動(dòng)將之理解成某一特定的字符。比如,C語(yǔ)言在處理這個(gè)字符組合時(shí),會(huì)自動(dòng)理解成回車換行符號(hào)。轉(zhuǎn)義字符經(jīng)過進(jìn)一步引申應(yīng)用,形成了另外兩種形式:ddd和xnn,這里后的ddd和xnn分別代表三位八進(jìn)制和兩位十六進(jìn)制數(shù)(打頭的x只是標(biāo)明后面跟著的是十六進(jìn)制數(shù)),這兩種形式不再局限于表示不可打印的字符,它們可以表示ASC碼表中的任意字符,只要把所需表示的字符的ASCII碼轉(zhuǎn)換成八進(jìn)制數(shù)或十六進(jìn)制數(shù)即可。比如說字母A,ASCII碼為65,65的八進(jìn)制和十六進(jìn)制分別為101和x41,所以,字母A可表示為101或x41,對(duì)
6、轉(zhuǎn)義字符應(yīng)認(rèn)真理解。標(biāo)識(shí)符就是用以標(biāo)識(shí)的符號(hào)。正如現(xiàn)實(shí)生活中給每一個(gè)人都取一個(gè)名字一樣,C語(yǔ)言中的每一個(gè)對(duì)象(如函數(shù)、變量等)都必須取一個(gè)標(biāo)識(shí)符以和其它對(duì)象區(qū)別開。在C語(yǔ)言中,這個(gè)標(biāo)識(shí)符是一個(gè)字符串,這個(gè)字符串的選定有一定的規(guī)則:必須是以字母或下劃線開頭的字母與數(shù)字的序列。除了這個(gè)基本的規(guī)則外,C語(yǔ)言對(duì)標(biāo)識(shí)符的命名還有幾個(gè)限制需加以注意:長(zhǎng)度最好不要超過八個(gè)字符。因C中對(duì)標(biāo)識(shí)符只處理前8個(gè)字符,超過8個(gè)長(zhǎng)度的部分將被C自動(dòng)忽略掉。ABCDEFGH1和ABCDEFH2是同一個(gè)標(biāo)識(shí)符;標(biāo)識(shí)符不要與保留字同名,最好也不要與C提供的標(biāo)準(zhǔn)標(biāo)識(shí)符,如庫(kù)函數(shù)重名;應(yīng)注意C語(yǔ)言對(duì)大小寫字母是敏感的,Abcd和
7、abcd是兩個(gè)不同的標(biāo)識(shí)符。關(guān)鍵字實(shí)際上就是一些特殊的標(biāo)識(shí)符,又稱保留字,這些保留字不允許用戶對(duì)它重新定義。2.3 頭文件、數(shù)據(jù)說明、函數(shù)的開始和結(jié)束標(biāo)志1.頭文件:也稱為包含文件或標(biāo)題文件,一般放在一個(gè)C語(yǔ)言程序的開頭,用#include文件名的格式,其中文件名是頭文件名,一般用.h作為擴(kuò)展名。2.數(shù)據(jù)說明:C語(yǔ)言中的數(shù)據(jù)分常量和變量?jī)煞N。3.常量:有數(shù)值常量和符號(hào)常量?jī)煞N。4.數(shù)值常量:可以分為整型常量、實(shí)型常量、浮點(diǎn)型常量和字符常量。5.符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表的一個(gè)常量,又稱標(biāo)識(shí)符形式的常量。6.變量:其值可以改變的量,變量名習(xí)慣上用小寫字母表示。 7.標(biāo)識(shí)符:用來標(biāo)識(shí)變量名、符號(hào)常
8、量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。8.標(biāo)識(shí)符的命名規(guī)則:C語(yǔ)言中標(biāo)識(shí)符只能由字母、數(shù)字下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。C語(yǔ)言是大小寫敏感語(yǔ)言,即對(duì)大小寫字母認(rèn)為是不同的字符。C語(yǔ)言中標(biāo)識(shí)符的長(zhǎng)度隨系統(tǒng)不同而字,如TURBO C中取前8個(gè)字符,8個(gè)字符后面的字符會(huì)自動(dòng)取消。2.4 數(shù)據(jù)類型C語(yǔ)言的數(shù)據(jù)類型可以分為三類:基本類型 構(gòu)造類型派生類型整型int字符型char實(shí)型(浮點(diǎn)型)float雙精度型double空類型void 結(jié)構(gòu)體struct公用(聯(lián)合)體union枚舉型enum用戶定義類型(使用關(guān)鍵字typedef) 數(shù)組類型指針類型1.整型常量:C語(yǔ)言
9、中的整型常量有三種形式:十進(jìn)制整型常量、八進(jìn)制整型常量和十六進(jìn)制整型常量。十進(jìn)制整型常量可以用一串連續(xù)的十進(jìn)制數(shù)字來表示;八進(jìn)制整型常量用數(shù)字0開頭(注意:不是字母O),后面可以跟一串合法的八進(jìn)制數(shù)字;十六進(jìn)制整型常量用0x或0X開頭,后面可以跟一串合法的十六進(jìn)制數(shù)字。整型常量又有短整型(short int)、基本整型(int)、長(zhǎng)整型(long int)和無(wú)符號(hào)型(unsinged)之分。2.整型變量:整型變量也可以分為基本型、短整型、長(zhǎng)整型和無(wú)符號(hào)型四種。分別用int,short int(或short),long int(或long),unsigned int(unsigned short
10、,unsigned long)對(duì)它們進(jìn)行定義。不同的計(jì)算機(jī)對(duì)上述幾種整型數(shù)據(jù)所占用的內(nèi)存字節(jié)數(shù)和數(shù)值范圍有不同的規(guī)定,以IBM-PC微機(jī)為例,以上各種數(shù)據(jù)所分配的存儲(chǔ)空間和數(shù)值范圍見下表:類型名 所占字節(jié)數(shù) 數(shù)值范圍int4224-32768+32767-32768+32767-2147483648+214748364706553506553504294697295shortint2longintunsignedintunsigned shortunsigned long 23.實(shí)型常量:C語(yǔ)言中的實(shí)型常量有兩種表示形式:十進(jìn)制數(shù)形式和指數(shù)形式。在用指數(shù)形式表示實(shí)型數(shù)據(jù)時(shí),字母E可以用小寫e代
11、替,指數(shù)部分必須是整數(shù)(若為正整數(shù)時(shí),可以省略+號(hào))。4.實(shí)型變量:C語(yǔ)言中的實(shí)型變量分為兩種:?jiǎn)尉阮愋秃碗p精度類型,分別用保留關(guān)鍵字float和double進(jìn)行定義。在一般系統(tǒng)中,一個(gè)float型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié);一個(gè)double型數(shù)據(jù)占8個(gè)字節(jié)(一個(gè)long double型數(shù)據(jù)占16個(gè)字節(jié))。5.字符常量:C語(yǔ)言的字符常量代表ASC碼字符集里的一個(gè)字符,在程序中要單引號(hào)括起來。C語(yǔ)言規(guī)定字符常量可以作為整數(shù)常量來處理(注:這里的整數(shù)常量指的是相應(yīng)字符的ASC代碼,因此字符常量可以參與算術(shù)運(yùn)算)。在C語(yǔ)言中還有一類特殊形式的字符常量,稱為轉(zhuǎn)義字符。這類字符常量是以一個(gè)反斜杠開頭的字符
12、序列,但它們只代表某個(gè)特定的ASC碼字符,在程序中使用這種常量時(shí)要括在一對(duì)單引號(hào)中。6.字符變量:C語(yǔ)言中的字符變量用關(guān)鍵字char來定義,每個(gè)字符變量中只能存放一個(gè)字符。在一般系統(tǒng)中,一個(gè)字符變量在計(jì)算機(jī)內(nèi)存中占一個(gè)字節(jié)。與字符常量一樣,字符變量也可以出現(xiàn)在任何允許整型變量參與的運(yùn)算中。7.字符串常量:C語(yǔ)言中的字符串常量是由一對(duì)雙引號(hào)括起來的字符序列。注意不要將字符常量和字符串常量混淆。C語(yǔ)言對(duì)字符串常量的長(zhǎng)度不加限制,C編譯程序總是自動(dòng)地在字符串的結(jié)尾加一個(gè)轉(zhuǎn)義字符0,作為字符串常量的結(jié)束標(biāo)志。C語(yǔ)言中沒有專門的字符串變量,如果要把字符串存放在變量中,則要用一個(gè)字符型數(shù)組來實(shí)現(xiàn)。第3章
13、順序結(jié)構(gòu)考點(diǎn)歸納3.1 表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句和空語(yǔ)句1.C語(yǔ)言的語(yǔ)句共分五大類:表達(dá)式語(yǔ)句、控制語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、空語(yǔ)句和復(fù)合語(yǔ)句。2.表達(dá)式語(yǔ)句的一般形式為表達(dá)式;最典型的表達(dá)式語(yǔ)句是由一個(gè)賦值表達(dá)式加一個(gè)分號(hào)構(gòu)成的賦值語(yǔ)句。3.控制語(yǔ)句是C語(yǔ)言程序設(shè)計(jì)中用來構(gòu)成分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的語(yǔ)句。此類語(yǔ)句有if語(yǔ)句,for語(yǔ)句,while語(yǔ)句,do-while語(yǔ)句,switch語(yǔ)句等。4.函數(shù)調(diào)用語(yǔ)句的一般形式為函數(shù)名(實(shí)參表);5.空語(yǔ)句的一般形式為;這條語(yǔ)句的含義是什么也不做。凡是在C語(yǔ)句程序中出現(xiàn)語(yǔ)句的地方都可以用一個(gè)分號(hào)來代替一條語(yǔ)句。6.復(fù)合語(yǔ)句的一般形式為語(yǔ)句1;語(yǔ)句2;復(fù)合語(yǔ)句在
14、功能上相當(dāng)于一條語(yǔ)句。3.2 數(shù)據(jù)的輸入與輸出,輸入輸出函數(shù)的調(diào)用1.C語(yǔ)言本身沒有提供輸入、輸出操作語(yǔ)句。C程序的輸入和輸出完全依靠調(diào)用C語(yǔ)言的標(biāo)準(zhǔn)輸入、輸出函數(shù)來完成。四個(gè)常用的輸入、輸出函數(shù)是:printf函數(shù)、scanf函數(shù)、putchar函數(shù)、getchar函數(shù)2.printf函數(shù)是C語(yǔ)言提供的標(biāo)準(zhǔn)輸出函數(shù),它的作用是在終端設(shè)備(或系統(tǒng)隱含指定的輸出設(shè)備)上按指定格式進(jìn)行輸出。Printf函數(shù)的一般調(diào)用形式如下:格式控制參數(shù)以字符串的形式描述,由兩部分組成:普通字符:將被簡(jiǎn)單地顯示;格式字符:將引起一個(gè)輸出參數(shù)項(xiàng)的轉(zhuǎn)換和顯示,由“%”引出并以一個(gè)類型描述符結(jié)束的字符串,中間可加一些可
15、選的附加說明項(xiàng),如下表所示。附加說明項(xiàng)附加說明項(xiàng)printf(格式控制,輸出項(xiàng)表)如果在printf函數(shù)調(diào)用之后加上;,就構(gòu)成了輸出語(yǔ)句。說 明-或+ 用于指定是否對(duì)齊輸出,具有“-”符號(hào)表示左對(duì)齊,無(wú)“-”或有“+”表示右對(duì)齊0 用于指定是否填寫0,有此項(xiàng)表示空位用0補(bǔ)充,無(wú)此項(xiàng)表示以空格補(bǔ)充m.n 用于指定輸出域?qū)捈熬?,m是指域?qū)?,n為精度,當(dāng)指定n時(shí),隱含的精度為6位L或h 用于輸出長(zhǎng)度修正。其中,l對(duì)于整型是指long,對(duì)實(shí)型是double;h只用于整型的格式字符,并修正為short型格式字符用于指定輸出項(xiàng)的數(shù)據(jù)類型及輸入格式,如下表所示。注意:編譯程序只是在檢查了printf函數(shù)中
16、的格式參數(shù)后,才能確定有幾個(gè)輸出項(xiàng),是什么類型、以什么格式輸出。在編程序時(shí),應(yīng)使輸出格式與輸出項(xiàng)對(duì)應(yīng)。格式字符格式字符說 明CcD 輸出一個(gè)字符d或I 輸出帶符號(hào)的十進(jìn)制整型數(shù)OoO 以八進(jìn)制無(wú)符號(hào)形式輸出整型數(shù)(不帶前導(dǎo)0)x或X 以十六進(jìn)制無(wú)符號(hào)形式輸出整型數(shù)(不帶前導(dǎo)0x或0X),對(duì)于x,用abcdef輸出十六進(jìn)制數(shù)碼;對(duì)于X,用ABCDEF輸出十六進(jìn)制數(shù)碼UuU 按無(wú)符號(hào)的八進(jìn)制形式輸出整型數(shù)FfF 以小數(shù)的形式輸出單精度或雙精度數(shù),小數(shù)位由精度指定,隱含的精度為6;如指定精度為0,則小數(shù)部分(包含小數(shù)點(diǎn))都不輸出e或E 以指數(shù)形式輸出單精度及雙精度數(shù),小數(shù)位數(shù)由精度指定,隱含的精度為
17、6;如指定精度為0,則小數(shù)部分(包含小數(shù)點(diǎn))都不輸出g或G 由系統(tǒng)決定是采用%f不是采用%e格式,以便使輸出寬度最小SsS 輸出字符串中的字符,直到遇到0時(shí)為止,或輸出指定的字符數(shù)PpP 輸出變量的內(nèi)存地址% 打印一個(gè)%3.scanf函數(shù)是C語(yǔ)言提供的標(biāo)準(zhǔn)輸入函數(shù),它的作用是在終端設(shè)備(或系統(tǒng)隱含指定的輸入設(shè)備)上輸入數(shù)據(jù)。Scanf函數(shù)的一般調(diào)用形式是:scanf(格式控制,輸入項(xiàng)表)如果在scanf函數(shù)調(diào)用之后加上;,就構(gòu)成了輸入語(yǔ)句。格式控制是用雙引號(hào)括起來的字符串,稱為格式控制串。格式控制串的作用是指定輸入時(shí)的數(shù)據(jù)轉(zhuǎn)換格式,即格式轉(zhuǎn)換說明。格式轉(zhuǎn)換說明是由%符號(hào)開始,其后是格式描述符。
18、 輸入項(xiàng)表中的各輸入項(xiàng)用逗號(hào)隔開,各輸入項(xiàng)只能是合法的地址表達(dá)式,即在變量之前加一個(gè)地址符號(hào)&。在scanf函數(shù)中每個(gè)格式說明都必須用%開頭,以一個(gè)格式字符結(jié)束。Scanf函數(shù)中的格式控制字符與printf函數(shù)中的相似,由格式說明項(xiàng)與輸入格式符組成。格式說明項(xiàng)如下表所示。格式說明項(xiàng)格式說明項(xiàng) 說 明% 起始符* 賦值抑制符,用于按格式說明讀入數(shù)據(jù),但不送給任何變量MmM 域?qū)捳f明l或h 長(zhǎng)度修正說明符scanf中的格式字符如下表所示。格式說明項(xiàng) 說 明CcC 輸入一個(gè)字符DdD 輸入十進(jìn)制整型數(shù)IiI 輸入整型數(shù),整數(shù)可以是帶前導(dǎo)0的八進(jìn)制數(shù),帶前導(dǎo)0x(或0X)的十六進(jìn)制數(shù)OoO 以
19、八進(jìn)制形式輸入整型數(shù)(可為帶前導(dǎo)0,也可不帶前導(dǎo)0)XxX 以十六進(jìn)制形式輸入整型數(shù)(可帶前導(dǎo)0x或0X,也可不帶)UuU 無(wú)符號(hào)十進(jìn)制整數(shù)FfF 以帶小數(shù)點(diǎn)形式或指數(shù)形式輸入實(shí)型數(shù)EeE 與f的作用相同SsS 輸入字符串4.putchar函數(shù)的作用是把一個(gè)字符輸出到標(biāo)準(zhǔn)輸出設(shè)備(常指顯示器或打印機(jī))上。一般調(diào)用形式為putchar(ch) ;其中ch代表一個(gè)字符變量或一個(gè)整型變量,ch也可以代表一個(gè)字符常量(包括轉(zhuǎn)義字符常量)。5.getchar函數(shù)的作用是標(biāo)準(zhǔn)輸入設(shè)備(通常指鍵盤)上讀入一個(gè)字符。一般調(diào)用形式為getchar();getchar函數(shù)本身沒有參數(shù),其函數(shù)值就是從輸入設(shè)備得到的
20、字符。3.3 復(fù)合語(yǔ)句在C語(yǔ)言中,一對(duì)花括號(hào)不僅可以用做函數(shù)體的開頭和結(jié)尾標(biāo)志,也可以用做復(fù)合語(yǔ)句的開頭和結(jié)尾標(biāo)志。復(fù)合語(yǔ)句的形式為:語(yǔ)句1;語(yǔ)句2;語(yǔ)句n;3.4 goto語(yǔ)句及語(yǔ)句標(biāo)號(hào)的使用goto語(yǔ)句稱為無(wú)條件轉(zhuǎn)向語(yǔ)句,一般形式為如下:goto語(yǔ)句標(biāo)號(hào);goto語(yǔ)句的作用是把程序執(zhí)行轉(zhuǎn)向語(yǔ)句標(biāo)號(hào)所在的位置,這個(gè)語(yǔ)句標(biāo)號(hào)必須與此goto語(yǔ)句同在一個(gè)函數(shù)內(nèi)。語(yǔ)句標(biāo)號(hào)在C語(yǔ)言中不必加以定義,這一點(diǎn)與變量的使用方法不同。標(biāo)號(hào)可以是任意合法的標(biāo)識(shí)符,當(dāng)在標(biāo)識(shí)符后面加一個(gè)冒號(hào),該標(biāo)識(shí)符就成了一個(gè)語(yǔ)句標(biāo)號(hào)。第4章 選擇結(jié)構(gòu)考點(diǎn)歸納4.1 用if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)1.在C語(yǔ)言中,if語(yǔ)句有兩種形式:形式1
21、:if(表達(dá)式) 語(yǔ)句形式2:if(表達(dá)式) 語(yǔ)句1else 語(yǔ)句22.if語(yǔ)句執(zhí)行時(shí),首先計(jì)算緊跟在if后面一對(duì)圓括號(hào)中的表達(dá)式的值,如果表達(dá)式的值為非零(真),則執(zhí)行if后的語(yǔ)句,然后去執(zhí)行if語(yǔ)句后的下一個(gè)語(yǔ)句。如果表達(dá)式的值為零(假),直接執(zhí)行if語(yǔ)句后的下一個(gè)語(yǔ)句。3.if語(yǔ)句后面的表達(dá)式并不限于是關(guān)系表達(dá)式或邏輯表達(dá)式,而可以是任意表達(dá)式。If語(yǔ)句中可以再嵌套if語(yǔ)句。C語(yǔ)言規(guī)定,在嵌套的if語(yǔ)句中,else子句總是與前面最近的不帶else的if相結(jié)合。4.2 用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)1.switch語(yǔ)句是用來處理多分支選擇的一種語(yǔ)句。它的一般形式如下:switch(表
22、達(dá)式) case 常量表達(dá)式1:語(yǔ)句1case 常量表達(dá)式2:語(yǔ)句2:case 常量表達(dá)式n:語(yǔ)句ndefault :語(yǔ)句n+12.switch語(yǔ)句的執(zhí)行過程是:首先計(jì)算緊跟switch后面的一對(duì)圓括號(hào)中的表達(dá)式的值,當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行此case后面的語(yǔ)句體并將流程轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行,直至switch語(yǔ)句的結(jié)束;若所有的case中的常量表達(dá)式的值都沒有與表達(dá)式值匹配,又存在default,則執(zhí)行default后面的語(yǔ)句,直至switch語(yǔ)句結(jié)束;如果不存在default,則跳過switch語(yǔ)句體,什么也不做。4.3 選擇結(jié)構(gòu)的嵌套if語(yǔ)句和
23、switch語(yǔ)句都可以嵌套使用,特別要注意,對(duì)于構(gòu)成嵌套的if語(yǔ)句,else子句總是和離它最近的、不帶else的if子句相匹配,不能弄混;在一個(gè)switch語(yǔ)句中的case后面又嵌套了一個(gè)switch語(yǔ)句,在執(zhí)行內(nèi)嵌的switch語(yǔ)句后還要執(zhí)行一條break語(yǔ)句才跳出外層的switch語(yǔ)句。第5章 循環(huán)結(jié)構(gòu)考點(diǎn)歸納5.1 for循環(huán)結(jié)構(gòu)1.for循環(huán)語(yǔ)句的一般表達(dá)式是:for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句2.C語(yǔ)言語(yǔ)法規(guī)定:循環(huán)體語(yǔ)句只能包含一條語(yǔ)句,若需多條語(yǔ)句,應(yīng)使用復(fù)合語(yǔ)句。5.2 while和do while循環(huán)結(jié)構(gòu)1.while語(yǔ)句用來實(shí)現(xiàn)當(dāng)型循環(huán)結(jié)構(gòu),它的一般形式如下:wh
24、ile(表達(dá)式)語(yǔ)句當(dāng)表達(dá)式為非0值時(shí)執(zhí)行while語(yǔ)句中內(nèi)嵌的語(yǔ)句;當(dāng)表達(dá)式的值為0時(shí),直接跳過while語(yǔ)句后面的語(yǔ)句,執(zhí)行下一條語(yǔ)句。2.while語(yǔ)句執(zhí)行的特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語(yǔ)句。3.do while用來實(shí)現(xiàn)直到型循環(huán)結(jié)構(gòu),它的一般形式為:do語(yǔ)句while(表達(dá)式);這個(gè)語(yǔ)句執(zhí)行時(shí),先執(zhí)行一次指定的內(nèi)嵌的語(yǔ)句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非0時(shí),返回重新執(zhí)行該語(yǔ)句,如此反復(fù),直到表達(dá)式的值為等于0為止,此時(shí)循環(huán)結(jié)束。4.do while語(yǔ)句執(zhí)行的特點(diǎn)是:先執(zhí)行語(yǔ)句,后判斷表達(dá)式。5.3 continue語(yǔ)句和break語(yǔ)句1.break語(yǔ)句有兩個(gè)用途:在switch語(yǔ)句中
25、用來使流程跳出switch結(jié)構(gòu),繼續(xù)執(zhí)行switch語(yǔ)句后面的語(yǔ)句;用在循環(huán)體內(nèi),迫使所在循環(huán)立即終止,即跳出所在循環(huán)體,繼續(xù)執(zhí)行循環(huán)體后面的第一條語(yǔ)句。2.continue語(yǔ)句結(jié)束本次循環(huán),即跳過循環(huán)體中尚未執(zhí)行的語(yǔ)句。在while和do while語(yǔ)句中,continue語(yǔ)句將使控制直接轉(zhuǎn)向條件測(cè)試部分,從而決定是否繼續(xù)轉(zhuǎn)向循環(huán)。在for循環(huán)中,遇到continue語(yǔ)句后,首先計(jì)算for語(yǔ)句表達(dá)式3的值,然后再執(zhí)行條件測(cè)試(表達(dá)式2),最后根據(jù)測(cè)試結(jié)果來決定是否繼續(xù)轉(zhuǎn)向for循環(huán)。5.4 循環(huán)的嵌套1.一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就
26、是多層循環(huán)。2.三種循環(huán)(while循環(huán)、do while循環(huán)和for循環(huán))可以互相嵌套。第6章 字符型數(shù)據(jù)考點(diǎn)歸納6.1 字符常量有兩種形式:一是用單引號(hào)括起來的一個(gè)單字符,如a,?,=;二是轉(zhuǎn)義字符,即以開頭的字符序列。常用的轉(zhuǎn)義字符見下表。字符形式 功 能n 換行t 橫向跳格(即跳到下一個(gè)輸出區(qū))v 豎向跳格b 退格r 回車f 走紙換頁(yè) 反斜杠字符 單引號(hào)(撇號(hào))字符 雙引號(hào)()字符ddd 1到3位8進(jìn)制數(shù)所代表的字符,如123,表示8進(jìn)制數(shù)123xhh 1到2位16進(jìn)制數(shù)所代表的字符,如x21,表示16進(jìn)制數(shù)23在轉(zhuǎn)義字符賦給字符變量時(shí),也需要在其二側(cè)加單引號(hào),如:char c=n;字
27、符串常量是用一對(duì)雙引號(hào)括起的字符序列,如abcn。請(qǐng)區(qū)別字符變量和字符串常量。a是字符常量,a是字符串常量。在內(nèi)存中,字符常量占一個(gè)字節(jié),而對(duì)字符串常量,則在字符串的后面加一個(gè)字符串結(jié)束標(biāo)志,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。用0(即ASCII代碼為0的字符,即空字符)作為字符串結(jié)束的標(biāo)志。例如,a內(nèi)存占兩個(gè)字節(jié),即:a 0 。6.2 字符變量字符變量用來存放一個(gè)字符常量,字符變量用char來定義。如:char a,b;a=0;b=k;printf(%c %c n,a,b);將輸出兩個(gè)字符ok。不能將一個(gè)字符串常量賦給一個(gè)字符變量,如:a=0;b=k;是錯(cuò)誤的。給字符變量賦值可以采用如下三種方法
28、:(1)直接賦以字符常量,如char=A;(2)賦以轉(zhuǎn)義字符,如:char c=;printf(%c,c);輸出一個(gè)字符。(3)賦以一個(gè)字符的ASCII代碼,如字符a的ASCII代碼為97,則char c=97;printf(%c,c);將輸出一個(gè)字符a。實(shí)際上,字符數(shù)據(jù)在內(nèi)存中是以整數(shù)形式(字符ASCII代碼)存放的,例如,字符a的ASCII碼為97,在內(nèi)存字節(jié)中的存放形式為:01 10 00 01在輸出時(shí),如果指定輸出字符的格式符%c輸出,則輸出字符a(在輸出時(shí)先將ASCII碼轉(zhuǎn)換為字符)。如果指定按輸出整數(shù)的格式%d輸出(如printf(%d,c),則輸出一個(gè)整數(shù)97。應(yīng)記住,字符數(shù)據(jù)與
29、整型數(shù)據(jù)二者間是通用的,可以互相賦值和運(yùn)算,如:int a=A;char c=97;print(%dn,c-a);將輸出一個(gè)整數(shù)32,因?yàn)锳的ASCII碼為65第7章 函數(shù)考點(diǎn)歸納7.1 庫(kù)函數(shù)的正確調(diào)用1.C語(yǔ)言提供了豐富的庫(kù)函數(shù),包括常用數(shù)學(xué)函數(shù)、對(duì)字符和字符串處理函數(shù)、輸入輸出處理函數(shù)等。在調(diào)用庫(kù)函數(shù)時(shí)要注意以下幾點(diǎn):(1)調(diào)用C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí)必須在源程序中用include命令,include命令的格式是:#include頭文件名include命令必須以#號(hào)開頭,系統(tǒng)提供的頭文件名都以.h作為后綴,頭文件名用一對(duì)雙引號(hào)或一對(duì)尖括號(hào)括起來。(2)標(biāo)準(zhǔn)庫(kù)函數(shù)的調(diào)用形式:函數(shù)名(參數(shù)表)2.
30、在C語(yǔ)言中庫(kù)函數(shù)的調(diào)用可以以兩種形式出現(xiàn):出現(xiàn)在表達(dá)式中;作為獨(dú)立的語(yǔ)句完成某種操作。7.2 函數(shù)的定義方法1.C語(yǔ)言函數(shù)的一般形式為:函數(shù)返回值的類型名 函數(shù)名(類型名 形參1,類型名 形參2,)說明部分語(yǔ)句部分定義的第一行是函數(shù)的首部,中的是函數(shù)體。2.在老的C語(yǔ)言版本中,函數(shù)的首部用以下形式:函數(shù)返回值的類型名 函數(shù)名(形參1,形參2)形參類型說明;新的ANSI標(biāo)準(zhǔn)C兼容這種形式的函數(shù)首部說明。3.函數(shù)名和形參名是由用戶命名的標(biāo)識(shí)符。在同一程序中,函數(shù)名必須唯一。形式參數(shù)名只要在同一函數(shù)中唯一即可,可以與函數(shù)中的變量同名。4.C語(yǔ)言規(guī)定不能在一個(gè)函數(shù)內(nèi)部再定義函數(shù)。5.若在函數(shù)的首部省略
31、了函數(shù)返回值的類型名,把函數(shù)的首部寫成:函數(shù)名(類型名 形參1,類型名 形參2,)則C默認(rèn)函數(shù)返回值的類型為int類型。6.當(dāng)沒有形參時(shí),函數(shù)名后面的一對(duì)圓括號(hào)不能省略。7.3 函數(shù)的類型和返回值1.函數(shù)的類型由函數(shù)定義中的函數(shù)返回值的類型名確定,函數(shù)的類型可以是任何簡(jiǎn)單類型,如整型、字符型、指針型、雙精度型等,它指出了函數(shù)返回值的具體類型。當(dāng)函數(shù)返回的是整型值時(shí),可以省略函數(shù)類型名。當(dāng)函數(shù)只完成特定的操作而沒有或不需要返回值時(shí),可用類型名void(空類型)。2.函數(shù)返回值就是return語(yǔ)句中表達(dá)式的值。當(dāng)程序執(zhí)行到return語(yǔ)句時(shí),程序的流程就返回到調(diào)用該函數(shù)的地方(通常稱為退出調(diào)用函數(shù)
32、),并帶回函數(shù)值。7.4 形式參數(shù)與實(shí)際參數(shù),參數(shù)值的傳遞1.在函數(shù)定義中,出現(xiàn)的參數(shù)名稱為形參(形式參數(shù)),在調(diào)用函數(shù)時(shí),使用的參數(shù)值稱為實(shí)參(實(shí)際參數(shù))。2.調(diào)用函數(shù)和被調(diào)用函數(shù)之間的參數(shù)值的傳遞是按值進(jìn)行的,即數(shù)據(jù)只能從實(shí)參單向傳遞給形參。也就是說,當(dāng)簡(jiǎn)單變量作為實(shí)參時(shí),用戶不能在函數(shù)中改變對(duì)應(yīng)實(shí)參的值。7.5 函數(shù)的正確調(diào)用(嵌套調(diào)用,遞歸調(diào)用)1.調(diào)用函數(shù)時(shí),函數(shù)名必須與被調(diào)用的函數(shù)名字完全一樣。實(shí)參的個(gè)數(shù)與類型和形參的個(gè)數(shù)與類型一致。2.C語(yǔ)言規(guī)定:函數(shù)必須先定義,后調(diào)用,也就是被調(diào)用函數(shù)必須在調(diào)用之前加以說明,或被調(diào)用函數(shù)整個(gè)放在調(diào)用函數(shù)之前。但對(duì)返回值類型為int或char類型
33、的函數(shù)可以放在調(diào)用函數(shù)的后面。3.C語(yǔ)言中函數(shù)定義都是互相平行、獨(dú)立的,C語(yǔ)言不允許嵌套定義函數(shù),但允許嵌套調(diào)用函數(shù),也就是說,在調(diào)用一個(gè)函數(shù)的過程中,又調(diào)用另一個(gè)函數(shù)。4.在C程序中,調(diào)用一個(gè)函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。5.遞歸調(diào)用函數(shù)是C語(yǔ)言的特點(diǎn)之一,有時(shí)遞歸調(diào)用會(huì)使求解的問題變得更簡(jiǎn)單明了。7.6 局部變量和全局變量1.局部變量在一函數(shù)內(nèi)部所定義的變量稱為局部變量,局部變量只在本函數(shù)范圍內(nèi)有效。注意:不同函數(shù)可以使用相同的局部變量名,它們將代表不同的對(duì)象,互不干擾;一個(gè)函數(shù)的形參也為局部變量;在函數(shù)內(nèi)部,復(fù)合語(yǔ)句也可定義變量,這些變量也為局部變量,
34、只在此復(fù)合語(yǔ)句中有效。 2.全局變量在C語(yǔ)言中,程序的編譯單位是源程序文件,一個(gè)源程序文件中包含一個(gè)或多個(gè)函數(shù)。在函數(shù)之外所定義的變量稱為外部變量,也稱為全局變量。全局變量可以被包含它的源程序文件中的其他函數(shù)所共用,作用域?yàn)閺亩x變量的位置開始到源程序文件結(jié)束,全局變量可以增加函數(shù)之間數(shù)據(jù)的聯(lián)系。注意:當(dāng)在同一個(gè)源程序文件中,全局變量與局部變量同名時(shí),在局部變量的作用范圍內(nèi),全局變量不起作用,局部變量起作用。第8章 指針考點(diǎn)歸納8.1 指針與指針變量的概念,指針與地址運(yùn)算符1.在C語(yǔ)言中,指針是指一個(gè)變量的地址,通過變量的地址指向的位置找到變量的值,這種指向變量地址可形象地看作指針。用來存放指
35、針的變量稱為指針變量,它是一種特殊的變量,它存放的是地址值。2.定義指針變量的一般形式為:類型名 *指針變量1,*指針變量2,;類型名稱為基類型它規(guī)定了后面的指針變量中存放的數(shù)據(jù)類型,*號(hào)表明后面的指針變量1,指針變量2等是指針變量,*號(hào)在定義時(shí)不能省略,否則就會(huì)變成一般變量的定義了。指針變量1,指針變量2等稱為指針變量名。3.一個(gè)指針變量只能指向同一類型的變量。4.與指針和指針變量有關(guān)的兩個(gè)運(yùn)算符:(1)*:指針運(yùn)算符(或稱間接訪問運(yùn)算符)(2)&:取地址運(yùn)算符通過*號(hào)可以引用一個(gè)存儲(chǔ)單元,如有如下定義:int i=123,*p,k;則 p=&I;或k=*p;或k=*&
36、;I;都將變量i中的值賦給k。*p=10;或*&i=10;都能把整數(shù)10賦給變量i。這里,等號(hào)左邊的表達(dá)式*p和*&i都代表變量i的存儲(chǔ)單元。8.2 變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針以及指向它們的指針變量1.變量的指針和指向變量的指針變量。2.數(shù)組的指針和指向數(shù)組的指針變量。所謂數(shù)組的指針是指數(shù)組的起始地址,數(shù)組元素的指針是數(shù)組元素的地址。C語(yǔ)言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個(gè)元素的地址。3.字符串的指針和指向字符串的指針變量。我們可以通過定義說明一個(gè)指針指向一個(gè)字符串。C語(yǔ)言將字符串隱含處理成一維字符數(shù)組,但數(shù)組的每個(gè)元素沒有具體的名字,這一點(diǎn)跟字符數(shù)組不一樣。
37、要引用字符串中的某個(gè)字符,只能通過指針來引用:*(s+0),*(s+1),*(s+n)。4.函數(shù)的指針和指向函數(shù)的指針變量。指向函數(shù)的指針變量的一般形式為 :數(shù)據(jù)類型標(biāo)識(shí)符 (*指針變量名)();這里的數(shù)據(jù)類型標(biāo)識(shí)符是指函數(shù)返回值的類型。函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用(即用指向函數(shù)的指針變量調(diào)用)。指向函數(shù)的指針變量表示定義了一個(gè)指向函數(shù)的指針變量,它不是固定指向哪一個(gè)函數(shù),而只是定義了這樣的一個(gè)類型變量,它專門用來存放函數(shù)的入口地址。在程序中把哪一個(gè)函數(shù)的地址賦給它,它就指向哪一個(gè)函數(shù)。在一個(gè)程序中,一個(gè)指針變量可以先后指向不同的函數(shù)。在給函數(shù)指針變量賦值時(shí),只需給出函
38、數(shù)名而不必給出參數(shù)。因?yàn)楹瘮?shù)指針賦的值僅是函數(shù)的入口地址,而不涉及到實(shí)參與形參的結(jié)合問題。對(duì)指向函數(shù)的指針變量,表達(dá)式p+n,p+,p-等都無(wú)意義。5.結(jié)構(gòu)體的指針與指向結(jié)構(gòu)體的指針變量一個(gè)結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段的起始地址??梢栽O(shè)一個(gè)指針變量,用來指向一個(gè)結(jié)構(gòu)體變量,此時(shí)該指針變量的值是結(jié)構(gòu)體變量的起始地址。指針變量也可以用來指向結(jié)構(gòu)體數(shù)組中的元素。8.3 用指針做函數(shù)參數(shù)函數(shù)的參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù),還可以是指針類型,它的作用是將一個(gè)變量的地址傳送到另一個(gè)函數(shù)中。8.4 返回指針值的指針函數(shù)一個(gè)函數(shù)可以返回一個(gè)整型值、字符值、實(shí)型值等,也可以返回指針型數(shù)據(jù)
39、,即地址這種帶回指針值的函數(shù),一般的定義形式為:類型標(biāo)識(shí)符 *函數(shù)名(形參表);8.5 指針數(shù)組、指向指針的指針1.指針數(shù)組指的是一個(gè)數(shù)組,其元素均為指針類型數(shù)據(jù),也就是說,指針數(shù)組中的每一個(gè)元素都是指針變量。指針數(shù)組的定義形式為:類型標(biāo)識(shí) *數(shù)組名數(shù)組長(zhǎng)度說明指針數(shù)組可以使字符串處理更加方便。2.指向指針的指針是指指向指針數(shù)據(jù)的指針變量,一個(gè)指向指針數(shù)據(jù)的指針變量的一般形式為:類型標(biāo)識(shí) * *p;8.6 main函數(shù)的命令參數(shù)指針數(shù)組的一個(gè)重要應(yīng)用是作為main函數(shù)的形參,一般來說,main函數(shù)后的括號(hào)中是空的,即沒有參數(shù)。實(shí)際上main可以有參數(shù),如:main(argc,argv)其中,a
40、rgc和argv就是main函數(shù)的形參。其他函數(shù)形參的值可以通過函數(shù)調(diào)用語(yǔ)句的實(shí)參中得到,由于main函數(shù)是由系統(tǒng)調(diào)用的,因而main函數(shù)的形參值不能從程序中得到,但可以在操作系統(tǒng)狀態(tài)下,將實(shí)參和命令一起給出,從而使main函數(shù)的形參得到值。命令行的一般形式為:命令名 參數(shù)1 參數(shù)2參數(shù)n命令名和各參數(shù)之間用空格分隔開。8.7 動(dòng)態(tài)存儲(chǔ)分配在C語(yǔ)言中有一種稱為“動(dòng)態(tài)存儲(chǔ)分配”的內(nèi)存空間分配方式:程序在執(zhí)行期間需要存儲(chǔ)空間時(shí),通過“申請(qǐng)”分配指定的內(nèi)存空間;當(dāng)閑置不用時(shí),可隨時(shí)將其釋放,由系統(tǒng)另作它用。本節(jié)介紹C語(yǔ)言中動(dòng)態(tài)分配系統(tǒng)的主要函數(shù):malloc()、calloc()、free()及re
41、alloc(),使用這些函數(shù)時(shí),必須在程序開頭包含文件stdlib.h。1.主內(nèi)存分配函數(shù)malloc()函數(shù)格式:void*malloc(unsigned size);函數(shù)功能:從內(nèi)存中分配一大小為size字節(jié)的塊。參數(shù)說明:size為無(wú)符號(hào)整型,用于指定需要分配的內(nèi)存空間的字節(jié)數(shù)。返回值:新分配內(nèi)存的地址,如無(wú)足夠的內(nèi)存可分配,則返回NULL。說明:當(dāng)size為0時(shí),返回NULL。2.主內(nèi)存分配函數(shù)calloc()函數(shù)格式:void*malloc(unsigned n,unsigned size);函數(shù)功能:從內(nèi)存中分配n個(gè)同一類型數(shù)據(jù)項(xiàng)的連續(xù)存儲(chǔ)空間,每個(gè)數(shù)據(jù)項(xiàng)的大小為size字節(jié)。參數(shù)
42、說明:n為無(wú)符號(hào)整型,用于指定分配的數(shù)據(jù)項(xiàng)的個(gè)數(shù)size為無(wú)符號(hào)整型,用于指定需要分配的數(shù)據(jù)項(xiàng)所占內(nèi)存空間的字節(jié)數(shù)。返回值:新分配內(nèi)存的地址,如無(wú)足夠的內(nèi)存可分配,則返回NULL。3.重新分配內(nèi)存空間函數(shù)realloc()函數(shù)格式:void*realloc(void *block,unsigned size);函數(shù)功能:將block所指內(nèi)存區(qū)的大小改為size字節(jié)的塊。參數(shù)說明:block為void類型的指針,指向內(nèi)存中某塊,size為無(wú)符號(hào)整型,用于指定需要分配的內(nèi)存空間的字節(jié)數(shù)。返回值:新分配內(nèi)存的地址,如無(wú)足夠的內(nèi)存可分配,則返回NULL。4.釋放內(nèi)存函數(shù)free()函數(shù)格式:void
43、free(void*block);函數(shù)功能:將calloc()、malloc()及realloc()函數(shù)所分配的內(nèi)存空間釋放為自由空間。參數(shù)說明:block為void類型的指針,指向要釋放的內(nèi)存空間。返回值:無(wú)。第9章 數(shù)組考點(diǎn)歸納9.1 一維數(shù)組的定義、初始化和引用1.一維數(shù)組的定義方式為:類型說明符 數(shù)組名常量表達(dá)式(1)數(shù)組名的命名方法與變量名相同,遵循標(biāo)識(shí)符命名規(guī)則;(2)數(shù)組是用方括號(hào)括起來的常量表達(dá)式,不能用圓括號(hào);(3)常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),即數(shù)組的長(zhǎng)度,數(shù)組的下標(biāo)從0開始,下標(biāo)的最大值為:常量表達(dá)式-1;(4)常量表達(dá)式中可以包括常量和符號(hào)常量,不能包括變量??梢杂觅x值
44、語(yǔ)句或輸入語(yǔ)句使數(shù)組中的元素得到值,但要占用運(yùn)行時(shí)間??梢允箶?shù)組在運(yùn)行之前初始化,即在編譯階段使之得到初值。2.對(duì)數(shù)組初始化可以用以下方法實(shí)現(xiàn):(1)在定義數(shù)組時(shí)對(duì)數(shù)組元素賦以初值。如:static int a10=0,1,2,3,4,5,6,7,8,9;經(jīng)過上面的定義和初始化后,a0=0,a1=1,a9=9。(2)初始化時(shí)可以只對(duì)一部分元素賦初值。例如:static int a10=0,1,2,3,4;定義的數(shù)組有10個(gè)元素,但只對(duì)其中前5個(gè)元素賦了初值,后5個(gè)元素初值為0。(3)如果想使一個(gè)數(shù)組的元素值全部為0,可以用下面的方法:static int a10=0,0,0,0,0,0,0,0
45、,0,0;不能用:static int a10=0*10;如果對(duì)static型數(shù)組不賦初值,系統(tǒng)會(huì)對(duì)定義的所有數(shù)組元素自動(dòng)賦以0值。(4)在對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。3.一維數(shù)組的引用方法是:C語(yǔ)言規(guī)定不能一次引用整個(gè)數(shù)組,引用時(shí)只能逐個(gè)元素引用,數(shù)組元素的表示形式為:數(shù)組名下標(biāo)下標(biāo)可以是整型常量或整型表達(dá)式。如:a0=a5+a7-a2*3;9.2 二維數(shù)組的定義、初始化和引用1.二維數(shù)組定義的一般形式為類型說明符 數(shù)組名常量表達(dá)式常量表達(dá)式C語(yǔ)言采用上述定義方法,我們可以把二維數(shù)組看做是一種特殊的一維數(shù)組:它的元素又是一維數(shù)組。在C語(yǔ)言中,二維數(shù)組中元素的排列順序是:先按行
46、存放,再按列存放,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素。2.二維數(shù)組的初始化:二維數(shù)組可以用下面的方法初始化:(1)分行給二維數(shù)組賦初值。如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;以上賦值把第一個(gè)花括號(hào)內(nèi)的數(shù)據(jù)賦給第一行元素,第二個(gè)花括號(hào)內(nèi)數(shù)據(jù)賦給第二元素,即按行賦值。(2)可以將所有的數(shù)據(jù)寫在一個(gè)花括號(hào)內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x值。(3)可以對(duì)數(shù)組的部分元素賦初值。如:static int a34=1,5,9;以上賦值的結(jié)果是:數(shù)組第一列的元素分別賦了初值1,5,9,其余元素的值都是0。(4)如果對(duì)二維數(shù)組的全部元素都賦初值,
47、則定義數(shù)組時(shí)對(duì)第一維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能省。3.二維數(shù)組的引用:二維數(shù)組的元素可以表示為:數(shù)組下標(biāo)下標(biāo)在引用二維數(shù)組時(shí),必須是單個(gè)元素,不能是整個(gè)數(shù)組名。下標(biāo)可以是一個(gè)表達(dá)式,但不能是變量。如果下標(biāo)是一個(gè)表達(dá)式,注意表達(dá)式的值不能超出數(shù)組定義的上、下限。第10章 字符串考點(diǎn)歸納10.1 字符串與字符數(shù)組1.字符數(shù)組的定義定義方法與前面介紹的類似,只是將數(shù)組定義為字符型即可。例如:char c10;這里定義了一個(gè)包含10個(gè)元素的字符數(shù)組c。2.字符數(shù)組的初始化對(duì)字符數(shù)組初始化,可以采用以下方法:(1)逐個(gè)字符賦給數(shù)組中各元素;(2)用字符串常量使字符數(shù)組初始化。3.字符串在C語(yǔ)言
48、中,字符串是作為字符數(shù)組來處理的,字符串可以存放在字符型一維數(shù)組中,故可以把字符型一維數(shù)組作為字符串變量。字符串常量是用雙引號(hào)括起來的一串字符。C語(yǔ)言中約定用0作為字符串的結(jié)束標(biāo)志,它占內(nèi)存空間,但不計(jì)入串的長(zhǎng)度,0的代碼值為0。系統(tǒng)對(duì)字符串常量也自動(dòng)加一個(gè)0作為結(jié)束符。例如c language共有10個(gè)字符,但在內(nèi)存中占11個(gè)字節(jié),最后一個(gè)字節(jié)存放0。4.字符數(shù)組的輸入輸出(1)逐個(gè)字符輸入和輸出在標(biāo)準(zhǔn)輸入輸出printf和scanf中使用%c格式描述符;使用getchar和putchar函數(shù)。例如:for(i=0;i<10;i+)scanf(%c,&stri); /*或str
49、i=getchar();*/stri=0;/*人為加上串結(jié)束標(biāo)志*/for(i=0;i<10;i+)printf(%c,stri);/*或putchar(stri);*/(2)字符串整體輸入輸出在標(biāo)準(zhǔn)輸入輸出函數(shù)printf和scanf中使用%s格式描述符;輸入形式:char str6;scanf(%s,str);其中 str為字符數(shù)組名,代表著str字符數(shù)組的起始地址,輸入時(shí)系統(tǒng)自動(dòng)在每個(gè)字符串后加入結(jié)束符0。若同時(shí)輸入多個(gè)字符串,則以空格或回車符分隔。輸入形式:printf(%s,str);輸字符串時(shí),遇第一個(gè)0即結(jié)束。但可人為控制輸出串所占的域?qū)捜纾簆rintf(%6s,str);
50、/*若字符串中字符多于6個(gè),仍將全部輸出*/printf(%-6s,str);/*只輸出前6個(gè)字符,多余的不輸出*/使用gets和puts函數(shù)輸入輸出一行g(shù)ets函數(shù)用來從終端鍵盤讀字符,直到遇換行符為止,換行符不屬字符串的內(nèi)容。調(diào)用形式:gets(str);str為字符數(shù)組名或字符指針,字符串輸入后,系統(tǒng)自動(dòng)將0置于串尾代替換行符。若輸入串長(zhǎng)超出數(shù)組定義長(zhǎng)度時(shí),系統(tǒng)報(bào)錯(cuò)。Puts函數(shù)用來把字符串的內(nèi)容顯示在屏幕上。調(diào)用形式:puts(str);str的含義同上。輸出時(shí),遇到第一個(gè)0結(jié)束并自動(dòng)換行,字符串中可以含轉(zhuǎn)義字符。10.2 字符串的指針以及指向字符串的指針變量1.用指針方法實(shí)現(xiàn)一個(gè)字符
51、串的存儲(chǔ)和運(yùn)算如:char * strp=china;此處定義了一個(gè)字符指針變量strp,變量中存放的是字符串第一個(gè)字符的地址。C語(yǔ)言對(duì)字符串常量是按字符數(shù)組處理的,它實(shí)際上在內(nèi)存開辟了一個(gè)字符數(shù)組用來存放字符串變量,并把字符串首地址賦給字符指針變量strp。在輸出時(shí)用printf(%sn,strp);通過字符數(shù)組名或字符指針變量可以輸出一個(gè)字符串。而對(duì)一個(gè)數(shù)值型數(shù)組,是不能企圖用數(shù)組名輸出它的全部元素的。2.字符指針變量與字符數(shù)組雖然用字符數(shù)組和字符指針變量都能實(shí)現(xiàn)字符串的存儲(chǔ)和運(yùn)算,但它們二者之間是有區(qū)別的,不應(yīng)混為一談,主要有以下幾點(diǎn):(1)字符數(shù)組由若干個(gè)元素組成,每個(gè)元素中放一個(gè)字符
52、,而字符指針變量中存放的是地址(字符串的首地址),決不是將字符串放到字符指針變量中。(2)對(duì)字符數(shù)組只能對(duì)各個(gè)元素賦值,不能用以下辦法對(duì)字符數(shù)組賦值。Char str14; str=I love China!;而對(duì)字符指針變量,可以采用下面方法賦值:char *a;a=I love China!;但注意賦給a的不是字符,而是字符串的首地址。(3)賦初值時(shí),對(duì)以下的變量定義和賦初值:char *a=I love China!;等價(jià)于:char *a;a=I love China!;而對(duì)數(shù)組初始化時(shí):static char str14=I love China!;不能等價(jià)于char str14;s
53、tr=I love China!;即數(shù)組可以在變量定義時(shí)整體賦初值,但不能在賦值語(yǔ)句中整體賦值。(4)在定義一個(gè)數(shù)組時(shí),在編譯時(shí)即已分配內(nèi)存單元,有確定的地址。而定義一個(gè)字符指針變量時(shí),給指針變量分配內(nèi)存單元,在其中可以放一個(gè)地址值,就是說,該指針變量可以指向一個(gè)字符型數(shù)據(jù),但如果未對(duì)它賦予一個(gè)地址值,這時(shí)該指針變量并未具體指向哪一個(gè)字符數(shù)據(jù)。(5)指針變量的值是可以改變的。3.字符串處理函數(shù)C語(yǔ)言中沒有對(duì)字符串進(jìn)行合并、比較和賦值的運(yùn)算符,但幾乎所有版本的C語(yǔ)言中都提供了有關(guān)的庫(kù)函數(shù)。例如:(1)strcat函數(shù):連接兩個(gè)字符數(shù)組中的字符串(2)strcpy函數(shù):字符拷貝函數(shù)(3)strcm
54、p函數(shù):字符比較函數(shù)(4)strlen函數(shù):測(cè)試字符串長(zhǎng)度的函數(shù)(5)strlwr函數(shù):將字符串中大寫字母轉(zhuǎn)換成小寫字母(6)strupr函數(shù):將字符中小寫字母轉(zhuǎn)換成大寫字母鏈表的c語(yǔ)言插入運(yùn)算假設(shè)在一個(gè)單鏈表中存在2個(gè)連續(xù)結(jié)點(diǎn)p、q(其中p為q的直接前驅(qū)),若我們需要在p、q之間插入一個(gè)新結(jié)點(diǎn)s,那么我們必須先為s分配空間并賦值,然后使p的鏈域存儲(chǔ)s的地址,s的鏈域存儲(chǔ)q的地址即可。(p-link=s;s-link=q),這樣就完成了插入操作。下例是應(yīng)用插入算法的一個(gè)例子:#include stdio.h#include malloc.h#include string.h#define N 10typedef struct nodechar name20;struct node *link;stud;stud * creat(int n) /*建立單鏈表的函數(shù)*/stud *p,*h,*s;int i;if(h=(stud *)malloc(sizeof(stud)=NULL)printf("不能分配內(nèi)存空間!");exit(0);h-name0='0'h-link=NULL;p=h;for
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 國(guó)企2026年意識(shí)形態(tài)工作總結(jié)暨落實(shí)意識(shí)形態(tài)工作責(zé)任制情況報(bào)告
- 調(diào)料組導(dǎo)購(gòu)年終總結(jié)范文(3篇)
- 人美版八年級(jí)上冊(cè)美術(shù)期末試題及答案
- 2026及未來5年中國(guó)聚丙烯腈纖維行業(yè)市場(chǎng)運(yùn)行格局及未來趨勢(shì)研判報(bào)告
- 《GAT 2056-2023法庭科學(xué) 苯乙胺類和卡西酮類物質(zhì)神經(jīng)毒性評(píng)估 體外神經(jīng)細(xì)胞毒性檢測(cè)法》專題研究報(bào)告
- 《GAT 1400.3-2017公安視頻圖像信息應(yīng)用系統(tǒng) 第3部分:數(shù)據(jù)庫(kù)技術(shù)要求》專題研究報(bào)告
- 人工智能算法分析及應(yīng)用要點(diǎn)
- 電子纖維布生產(chǎn)線項(xiàng)目建議書
- 金礦采選建設(shè)項(xiàng)目實(shí)施方案
- 鋼結(jié)構(gòu)幕墻抗風(fēng)能力測(cè)試方案
- 2025既有建筑改造利用消防設(shè)計(jì)審查指南
- 籃球場(chǎng)工程施工設(shè)計(jì)方案
- (市質(zhì)檢二檢)福州市2024-2025學(xué)年高三年級(jí)第二次質(zhì)量檢測(cè) 歷史試卷(含答案)
- 《外科手術(shù)學(xué)基礎(chǔ)》課件
- 化學(xué)-湖南省永州市2024-2025學(xué)年高二上學(xué)期1月期末試題和答案
- 2025年貴安發(fā)展集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- DB33T 1214-2020 建筑裝飾裝修工程施工質(zhì)量驗(yàn)收檢查用表標(biāo)準(zhǔn)
- 高考語(yǔ)文復(fù)習(xí)【知識(shí)精研】鑒賞古代詩(shī)歌抒情方式 課件
- 春運(yùn)志愿者培訓(xùn)
- 語(yǔ)文-安徽省皖南八校2025屆高三上學(xué)期12月第二次大聯(lián)考試題和答案
- 養(yǎng)豬企業(yè)新員工職業(yè)規(guī)劃
評(píng)論
0/150
提交評(píng)論