《高級程序設(shè)計(c語言)》2013年6月期末考試指導(dǎo)_第1頁
《高級程序設(shè)計(c語言)》2013年6月期末考試指導(dǎo)_第2頁
《高級程序設(shè)計(c語言)》2013年6月期末考試指導(dǎo)_第3頁
《高級程序設(shè)計(c語言)》2013年6月期末考試指導(dǎo)_第4頁
《高級程序設(shè)計(c語言)》2013年6月期末考試指導(dǎo)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、0098高級程序設(shè)計(C語言)2013年6月期末考試指導(dǎo)一、考試說明(一)說明:考試為閉卷,試卷滿分為100分,考試時間90分鐘。(二)題型及各題型所占分?jǐn)?shù)和相應(yīng)的答題技巧1選擇題答題技巧:選擇與題干相匹配的答案,注意錯誤答案干擾。2讀程序?qū)懡Y(jié)果答題技巧:要注意書寫格式,包括空格、回車等。3改錯題答題技巧:理解程序要點,找出錯誤之處進行改正。本課程內(nèi)容相對較為瑣碎,需要理解掌握的東西比較多,希望學(xué)員們能夠在理解算理的基礎(chǔ)上完成復(fù)習(xí)工作。說明:本考試指導(dǎo)只適用于學(xué)期期末考試使用,包括正考和重修內(nèi)容。指導(dǎo)中的章節(jié)知識點涵蓋考試所有內(nèi)容,給出的習(xí)題為考試類型題,習(xí)題答案要點只作為參考,詳見課程講義或

2、筆記。如果在復(fù)習(xí)中有疑難問題請到課程答疑區(qū)提問。最后祝大家考試順利!二、重點內(nèi)容第一章 C語言程序設(shè)計基礎(chǔ)1C程序的基本結(jié)構(gòu)例如:/* This is the first program */(注釋信息)main()(主函數(shù))printf(”Welcome to C! n”);(函數(shù)調(diào)用,printf是函數(shù)名)(1)程序的第一行是注釋信息(2)main開始到最后的稱為函數(shù)2C程序的執(zhí)行過程從本程序的main開始,到main函數(shù)結(jié)束第二章 基本數(shù)據(jù)類型、運算符和表達式1C語言規(guī)定,符號常量和變量必須“先定義,后使用”。2C語言的基本數(shù)據(jù)類型及各自的定義方式(1)整型數(shù)據(jù)C語言提供了3種表示整數(shù)常

3、量的方法:十進制整數(shù)、八進制整數(shù)、十六進制整數(shù)。整型變量的定義格式:“數(shù)據(jù)類型名標(biāo)識符 變量名”即“int 變量名;”,整型類型名int與變量名之間要用空格分開,最后還要以分號結(jié)尾。(2)字符型數(shù)據(jù)C語言中,用單引號括起來的是字符常量,用雙引號括起來的被稱為字符串常量。字符串實際上是連續(xù)存放的一組字符,但最后一個字符的值是0。(3)實型數(shù)據(jù)實型常量有兩種表示方法:十進制小數(shù)形式和指數(shù)形式。實型變量的分類 單精度實型(float) 雙精度實型(double) 長雙精度實型(long double)(4)空類型:void3Printf函數(shù)輸出各種類型數(shù)據(jù)的方法(1)格式:printf(參數(shù)列表)(

4、2)Printf函數(shù)可以帶多個參數(shù),例如:printf(“variable a=%d”,a)(3)函數(shù)printf在顯示不同類型數(shù)據(jù)時使用不同的格式控制符Int %d;unsigned int %u;float %f;char %c;字符串 %s4運算符和表達式的含義變量用來存放數(shù)據(jù),運算符則用來處理數(shù)據(jù)。用運算符將變量和常量連接起來的符合c語法規(guī)則的式子被稱為表達式。5.運算符的種類(按所帶操作數(shù)的數(shù)量劃分)單目運算符、雙目運算符、三目運算符6C語言的各種運算符和表達式(1)賦值運算符和賦值表達式:“=”/“=”;c語言中,“=”被稱為賦值運算符,它的作用是設(shè)置變量的值。C語言允許在一個表達

5、式中對多個變量連續(xù)賦值,例如:a=b=c=22。連續(xù)賦值的表達式的運算順序是從右向左的(又被稱為右結(jié)合性)。說明:與數(shù)學(xué)中的=嚴(yán)格區(qū)分開來,在c語言中,a=b只是代表要將b的值賦給a,并不說明a的值與b的值相等。(2)強制類型轉(zhuǎn)換符當(dāng)?shù)忍栕笥覂蛇叺臄?shù)據(jù)類型不一致時,c語言將首先將=右邊的表達式的值轉(zhuǎn)化為=左邊的數(shù)據(jù)類型,然后再賦值給=左邊的變量。例如:int a;a=3.2;這時賦給a的值是3。(3)算術(shù)運算符和算術(shù)表達式:+、-、*、/和%c語言提供的算術(shù)運算符包括:加(+)、減(-)、乘(*)、除(/)和取余(%)。這些都是雙目運算符。利用算術(shù)運算符連接起來的式子稱為算術(shù)表達式。說明: +

6、、*、/運算符既可用語整型數(shù)據(jù)的算術(shù)運算,又可用于實型數(shù)據(jù)的算術(shù)運算。而%只能用于整數(shù)。 先乘除、后加減。 同級運算符的計算順序是從左向右。 優(yōu)先級:強制轉(zhuǎn)換運算符 算術(shù)運算符賦值運算符。例如:int a;a=(int)2.5*2+3;最后a的值是7。(4)自增自減運算符和符號運算符:+、-和-既是一個算術(shù)運算符,又是一個負(fù)號運算符,它是一個單目運算符;例如,a=34,則-a是-34。負(fù)號運算符優(yōu)先級與強制類型轉(zhuǎn)換運算符一樣。+和-+的作用是使變量自己增1,-的作用是使變量自己減1。與負(fù)號運算符優(yōu)先級相同。+和-位于變量左邊和右邊的結(jié)果是不同的。(在變量左邊,先增減后計算;在變量右邊,先計算,

7、后增減)(5)位運算符:按位與(&)、按位或(|)、按位異或()、按位取反()、左移()上述除了按位取反()外,都是雙目運算符。位運算符只能作用于int和char型數(shù)據(jù)。(6)逗號運算符和逗號表達式用逗號連接起來的表達式稱為逗號表達式。一般形式:表達式1,表達式2,表達式k,例如:a+5,b=6,b+逗號表達式的計算規(guī)則是:從左向右依次計算逗號分割的各個表達式的值,最后一個的值就是整個逗號表達式的值。(7)sizeof運算符:計算字符個數(shù),因此牢記各類型數(shù)據(jù)的長度作用:能獲取變量和數(shù)據(jù)類型所占內(nèi)存大小的運算符。第三章 基本輸入輸出和順序程序設(shè)計1數(shù)據(jù)輸出函數(shù)Printf函數(shù)(1)各種格式轉(zhuǎn)換符

8、:%d,%x,%o,%u,%c,%s,%f,%e,%g(2)調(diào)用printf函數(shù)的基本格式是printf(“格式控制字符串”,表達式1,表達式2,表達式n);(3)printf函數(shù)的功能就是按照“格式控制字符串”的要求,將表達式1,表達式2,表達式n的值顯示在屏幕上。(4)格式控制字符串中包含2類字符:常規(guī)字符和格式控制符。在輸出是,printf函數(shù)規(guī)定,常規(guī)字符要原樣輸出,而格式控制符的位置上輸出相對應(yīng)的表達式的值。字符和字符串的輸出,除了可以利用printf函數(shù)以外,還可以利用putchar和puts函數(shù)。putchar函數(shù)只帶一個參數(shù),這個參數(shù)就是要輸出的字符。puts函數(shù)也只帶一個參數(shù)

9、,這個參數(shù)就是要輸出的字符串,puts函數(shù)輸出這個字符串后自動換行回車。但利用putchar函數(shù)卻無法控制字符輸出的格式,利用puts函數(shù)也無法控制字符串的輸出格式。當(dāng)程序不需要控制字符和字符串的格式時,調(diào)用putchar和puts函數(shù)要比調(diào)用printf函數(shù)簡便得多。格式化輸出時,通過格式控制字符控制的格式要素主要有:數(shù)據(jù)類型及其長度,比如用%d輸出int型數(shù)據(jù),用%ld輸出long型數(shù)據(jù),用%f輸出double型數(shù)據(jù),用%lf輸出long double型數(shù)據(jù)。輸出數(shù)據(jù)所占的寬度(域?qū)挘?,比如?4d表示輸出至少占4格。輸出數(shù)據(jù)的精度,比如%4.2f表示輸出2位小數(shù),%.3s表示要輸出字符串

10、的前3個字符,%6.4u表示至少要輸出4位數(shù)。對齊特征,比如%-16d表示輸出的數(shù)據(jù)左對齊。缺省情況下,輸出將右對齊。數(shù)制形式,比如,%x要求以十六進制形式輸出數(shù)據(jù)。數(shù)值符號,比如,%+d要求輸出整數(shù)的正負(fù)號。2數(shù)據(jù)輸入函數(shù)Scanf函數(shù)調(diào)用scanf函數(shù)的基本格式是:scanf(“格式控制字符串”,變量1的地址,變量2的地址,變量n的地址);3各種數(shù)據(jù)類型的輸出:整型、實數(shù)、字符和字符串、格式化輸出等。比如下邊列出格式化輸出的總結(jié):(1)數(shù)據(jù)類型及其長度,比如用%d輸出int型數(shù)據(jù),用%ld輸出long型數(shù)據(jù),用%f輸出double型數(shù)據(jù),用%lf輸出long double型數(shù)據(jù)。(2)輸出

11、數(shù)據(jù)所占的寬度(域?qū)挘?,比如?4d表示輸出至少占4格。(3)輸出數(shù)據(jù)的精度,比如%4.2f表示輸出2位小數(shù),%.3s表示要輸出字符串的前3個字符,%6.4u表示至少要輸出4位數(shù)。(4)對齊特征,比如%-16d表示輸出的數(shù)據(jù)左對齊。缺省情況下,輸出將右對齊。(5)數(shù)制形式,比如,%x要求以十六進制形式輸出數(shù)據(jù)。(6)數(shù)值符號,比如,%+d要求輸出整數(shù)的正負(fù)號。本章所介紹的函數(shù):函數(shù)功能函數(shù)功能printf格式化輸出putchar字符輸出scanf格式化輸入getchar, getche, getch字符輸入clrscr清屏gotoxy光標(biāo)定位clreol清一行textcolor設(shè)置文本顏色te

12、xtattr設(shè)置文本顯示屬性textbackground設(shè)置文本背景色cprintf彩色格式化輸出puts字符串輸出_setcursortype設(shè)置光標(biāo)屬性bioskey獲取各種按鍵信息第四章 程序控制1選擇結(jié)構(gòu)的程序設(shè)計(1)簡單的if語句if(表達式)程序段ifelse語句:if(表達式p)程序段s1else程序段s2if后面的()是必不可少的。當(dāng)簡單if語句和if-else語句中的程序段只有一條語句時,外邊的可以省略。if語句中的程序段可以包含任何類型的C語句。if語句中的表達式可是任何類型,不僅限于關(guān)系表達式和邏輯表達式。表達式非零時,表達式的值就是真,否則就是假。如果表達式是一個判斷

13、兩個數(shù)是否相等的表達式,要當(dāng)心不要將=寫成了賦值運算符=。(2)Switch語句switch, case, default都是保留字,switch后面的()不能省略;switch后面的()后面的不能省略;case表達式后面的冒號不能省略;case后面必須是常量表達式,表達式不能包含變量;“case常量表達式”被稱為case子句,“break”又稱為break子句,“default”又稱為default子句;case子句和default子句之間沒有固定的順序,它們之間順序的變化不會影響switch語句的功能;程序段可以包含任何類型的C語句;break子句可以省略,但是否省略,要根據(jù)算法的邏輯而定

14、。省略了break子句的switch語句與不省略break子句功能是不同的。2循環(huán)結(jié)構(gòu)的程序設(shè)計(1)While和do while語句while(表達式p)程序段s功能:首先判斷表達式p的值是否非真。如果是真,則執(zhí)行程序段s,然后再判斷表達式p的值是否為真,如果為真,再執(zhí)行程序段s。如此循環(huán)往復(fù),知道p的值為假為止。do程序段swhile(表達式p);功能:首先執(zhí)行程序段s ,然后再判斷表達式p的值是否為真,如果為真,則循環(huán)執(zhí)行程序段s ,直到p為假為止。while后面的()不能省略,()中間的表達式可以是任何類型的表達式。當(dāng)while語句的程序段中只有1條語句時,程序段外邊的可以省略,但省略

15、不是一個好習(xí)慣。如果表達式P的值一開始就是假,循環(huán)體將一次也不被執(zhí)行。程序段可以包含任何類型的C語句。這個程序段又稱循環(huán)體。通常情況下,程序中會利用一個變量來控制while語句的表達式P的值,這個變量被稱為循環(huán)控制變量。要在while語句的某處(表達式P或循環(huán)體內(nèi))改變循環(huán)控制變量的值,否則極易構(gòu)成死循環(huán)。如果在執(zhí)行循環(huán)體過程中,遇到了break子句,則跳出while循環(huán)。如果在執(zhí)行循環(huán)體過程中,遇到了continue語句,則循環(huán)體中continue語句后面的其他語句將被跳過,而直接進入下一輪循環(huán)。(2)For語句for(表達式1;表達式2;表達式3)程序段s功能:首先求表達式1的值,然后判斷

16、表達式2是否為真。如果是真,則執(zhí)行程序段s,然后求表達式3的值。接下來再判斷表達式2是否為真,如果為真,繼續(xù)執(zhí)行循環(huán)體以及求表達式3的值,直到表達式2的值為假為止。表達式1、表達式2和表達式3可以是任何類型的表達式。表達式1、表達式2和表達式3之間必須用分號分隔,表達式可以為空,但分號不能省略。表達式1和表達式3通常是逗號表達式,表達式1只被執(zhí)行一次,通常用于初始化循環(huán)控制變量。而表達式3通常用來改變循環(huán)控制變量的值。表達式2為空相當(dāng)于表達式2的值是真。因此,下面的循環(huán)是死循環(huán):當(dāng)for語句的程序段中只有1條語句時,程序段外邊的可以省略,但是省略不是一個好習(xí)慣。程序段可以包含任何類型的C語句。

17、程序員既可以在for語句前面單獨初始化循環(huán)控制變量,也可以利用for語句的表達式1初始化循環(huán)控制變量。程序員既可以在循環(huán)體內(nèi)改變循環(huán)控制變量的值,也可以利用表達式3改變循環(huán)控制變量的值。如果在執(zhí)行循環(huán)體過程中,遇到了break子句,則跳出for循環(huán)。如果在執(zhí)行循環(huán)體過程中,遇到了continue語句,則循環(huán)體中continue語句后面的其他語句將被跳過,而直接進入下一輪循環(huán)。三種循環(huán)語句的異同點比較:在使用while和do-while語句時,必須在while或do-while語句前初始化循環(huán)控制變量。但for語句卻可以利用表達式1來初始化循環(huán)控制變量。在使用while和do-while語句時,

18、循環(huán)控制變量的變化必須放在循環(huán)體內(nèi)。而for語句卻可以利用表達式3來改變循環(huán)控制變量的值。do-while語句的循環(huán)體至少被執(zhí)行一次,但while語句和for語句的循環(huán)體可能一次也不執(zhí)行。while和do-while語句中不能省略循環(huán)控制條件(即表達式P),但for語句卻可以省略循環(huán)條件(即表達式2)。break語句和continue語句在這3種循環(huán)語句中的作用是相同的。凡是用while語句能實現(xiàn)的循環(huán),必然能用for語句實現(xiàn),反過來也一樣。3Break和continue語句break語句和continue語句大大增強了c語言實現(xiàn)選擇控制和循環(huán)控制的靈活性4關(guān)系運算符和關(guān)系表達式小于,大于,=

19、大于等于,=等于,!=不等于5邏輯運算符和邏輯表達式|邏輯或; &邏輯與 !邏輯非6條件運算符和條件表達式條件運算符:(?:)7運算符的優(yōu)先級算術(shù)運算符移位運算符關(guān)系運算符位運算符邏輯運算符8.表達式語句任何一個表達式的后面加上分號就構(gòu)成了表達式語句。例如:a+是表達式,a+;是表達式語句。 a=5是表達式,a=5;是表達式語句。9.函數(shù)調(diào)用語句函數(shù)調(diào)用加上分號就是函數(shù)調(diào)用語句。例如:printf(“Hello”)是函數(shù)調(diào)用,printf(“Hello”);是函數(shù)調(diào)用語句。10.復(fù)合語句可以用將一些語句括起來,就成了復(fù)合語句。復(fù)合語句又稱分程序。11.空語句空語句就是一個分號??照Z句有時用在空

20、循環(huán)(什么都不執(zhí)行的循環(huán))中。12.控制語句用來實現(xiàn)一定的控制功能的語句稱為控制語句。C語言用控制語句來實現(xiàn)分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。第五章 數(shù)組1一維數(shù)組的定義與引用(1)定義形式:數(shù)據(jù)類型符 數(shù)組變量名變量表達式;在定義時可以直接賦初值:未指定的值被賦值為0。(2)引用說明1)c語言規(guī)定,數(shù)組是一種數(shù)據(jù)單元的序列,不能直接存取整個數(shù)組,只能引用數(shù)組中的各個數(shù)據(jù)單元。引用數(shù)據(jù)單元的格式是:數(shù)據(jù)變量名 下標(biāo)其中,下標(biāo)可以使整性變量或整型表達式,c語言規(guī)定,下標(biāo)的最小值是0,最大值是數(shù)組大小減1。2)給數(shù)組賦值:a0=2,表示將數(shù)組a的第一個單元賦值為2。3)注意數(shù)組的內(nèi)存地址和數(shù)組單元的存放4)不許

21、多數(shù)組變量名賦值:a=3是錯誤的。2二維數(shù)組當(dāng)構(gòu)成一維數(shù)組的元素也是一維數(shù)組時,就構(gòu)成了二維數(shù)組。二維數(shù)組是一維數(shù)組的數(shù)組。以此類推,三維數(shù)組是二維數(shù)組的數(shù)組,四維數(shù)組是三維數(shù)組的數(shù)組C語言中,二維數(shù)組的定義格式是在一維數(shù)組的定義格式基礎(chǔ)上增加了一維:數(shù)據(jù)類型符 數(shù)組變量名整型常量表達式1整型常量表達式2;與一維數(shù)組相比,二維數(shù)組的定義,除了增加了一個整型常量表達式外,其他都一樣。對二維數(shù)組中數(shù)據(jù)引用的單元格式是:數(shù)組變量名下標(biāo)1下標(biāo)2。與一維數(shù)組相比,數(shù)據(jù)單元的引用形式除了多一個下標(biāo)外,其他都一樣。3字符串與數(shù)組(1)字符串的輸入:scanf函數(shù)和gets函數(shù)。(2)字符串的輸出:print

22、f函數(shù),cprintf函數(shù)或puts函數(shù)。(3)字符串的比較:strcmp函數(shù)。格式為:strcmp(字符串1,字符串2);(4)字符串的復(fù)制:strcpy函數(shù)格式為:strcpy(字符數(shù)組1,字符串2);(5)字符串的連接:strcat函數(shù)格式為:strcat(字符數(shù)組1,字符串2);strcat函數(shù)的功能是將字符串2連續(xù)接到字符數(shù)組1的字符串的后面。(6)求字符串的長度:strlen函數(shù)格式為:strlen(字符串);第六章 函數(shù)1函數(shù)的定義和調(diào)用(1)不帶參數(shù)沒有返回值的函數(shù)1)定義格式:void函數(shù)名(void)變量聲明部分執(zhí)行部分2)說明:函數(shù)名必須是合法標(biāo)識符。執(zhí)行部分放置c語句。

23、void是一種特殊的數(shù)據(jù)類型:空類型,表明這個函數(shù)沒有返回值。3)聲明格式和調(diào)用格式分別為:void函數(shù)名(void);函數(shù)名();調(diào)用任何函數(shù)必須先聲明函數(shù)的原型例如:#includevoid showerr(void);/*聲明showerr函數(shù)的原型*/函數(shù)在執(zhí)行完函數(shù)體內(nèi)最后一句語句后,會自動返回到調(diào)用它的地方。在某種條件下,也可以利用return 語句返回,其功能即是使函數(shù)終止執(zhí)行并返回到調(diào)用它的地方。(2)不帶參數(shù)有返回值的函數(shù)1)定義格式返回值類型 函數(shù)名(void)變量聲明部分執(zhí)行部分2)說明:函數(shù)名是合法標(biāo)識符;返回值類型符必須是合法的數(shù)據(jù)類型標(biāo)識符;當(dāng)返回值類型符被省略時,

24、默認(rèn)為int型。函數(shù)的返回值通常由return語句返回給調(diào)用者。3)原型聲明格式和調(diào)用格式返回值類型符 函數(shù)名(void);函數(shù)名();或者變量=函數(shù)名();(3)帶參數(shù)沒有返回值的函數(shù)1)定義格式void函數(shù)名(形式參數(shù)列表)變量聲明部分執(zhí)行部分2)說明函數(shù)名合法標(biāo)識符; 形參列表格式為: 數(shù)據(jù)類型1 形參名1,數(shù)據(jù)類型2 形參名2,數(shù)據(jù)類型n 形參名n若省略數(shù)據(jù)類型,則默認(rèn)int型只有當(dāng)函數(shù)被調(diào)用時,形參才有值不允許對形參賦初值,但可以在函數(shù)的執(zhí)行部分對形參賦值3)聲明和調(diào)用格式void函數(shù)名(形參列表);函數(shù)名(表達式列表);/*這些表達式稱作函數(shù)的實際參數(shù),即實參列表*/(4)帶參數(shù)有

25、返回值的函數(shù)1)定義格式返回值類型符 函數(shù)名(形式參數(shù)列表)變量聲明部分執(zhí)行部分2)說明:形參列表中至少要有一個形參3)聲明和調(diào)用格式返回值類型符 函數(shù)名(形參列表);函數(shù)名(實參列表);或變量名=函數(shù)名(實參列表);4)在定義和調(diào)用帶參數(shù)的函數(shù)時一定要注意,形參只有在函數(shù)調(diào)用時才會有值,它的值來源于實參,是將實參賦值給形參的結(jié)果。實參是變量時,實參變量和形參是兩個不同的實體。對應(yīng)著不同的內(nèi)存單元。在函數(shù)對形參賦值時,對實參變量毫無影響。2函數(shù)的嵌套調(diào)用和遞歸調(diào)用(1)所謂嵌套調(diào)用指的是調(diào)用A函數(shù)的過程中可以調(diào)用B函數(shù),在調(diào)用B函數(shù)的過程中還可以調(diào)用C函數(shù) .(2)當(dāng)函數(shù)調(diào)用它自身時,就形成了

26、遞歸調(diào)用。c語言允許遞歸調(diào)用。遞歸調(diào)用有兩種:一種是函數(shù)f直接調(diào)用自身,稱為直接遞歸另一種是函數(shù)fa調(diào)用fb,而函數(shù)fb又調(diào)用fa,這樣的遞歸叫做間接遞歸。3函數(shù)的作用域c語言規(guī)定,函數(shù)內(nèi)部不允許定義函數(shù),因此,沒有“局部”的函數(shù),函數(shù)都是“全局”的。同全局變量一樣,在函數(shù)原型聲明中增加extern修飾符,就可以擴大函數(shù)的作用域。其實這是多余的,因為所有的函數(shù)都是extern的,他們的作用域都是整個程序。程序員在定義函數(shù)時,可以將函數(shù)定義成靜態(tài)的,靜態(tài)的函數(shù)只能在定義它的文件中使用,不能將靜態(tài)函數(shù)的作用域進行擴展。第七章 指針1指針的定義和使用(1)定義:數(shù)據(jù)類型符 * 變量名(* 號表明后面

27、的變量是指針變量)說明:1)可以在一條語句中同時定義普通變量和指針變量例如:int a,*p;2)也可以在一條語句中同時定義多個指針變量例如:int *p1,*p2;3)指針變量前面一定要有* 號!*是間接引用運算符,是單目運算符,優(yōu)先級與+、的優(yōu)先級相同,具有右結(jié)合性。因此,上面程序中,與a+等價的表達式是(*p)+,而不是*p+。*p+中的+是作用于p的,而不是作用于*p。(2)指針的運算指針參與乘法或除法沒有任何意義,因為指針式地址,是一種無符號的整數(shù)。但指針可以參與加法運算2指針的指針:數(shù)據(jù)類型符 * 變量名3指針與一維數(shù)組、二維數(shù)組的關(guān)系: 定義指向二維數(shù)組的指針:數(shù)據(jù)類型符 (*變

28、量名)常量表達式例如:int (*p)3表示這個指針p是指向二維數(shù)組的,這個數(shù)組包含3列。要從定義格式上區(qū)分指針數(shù)組和指向二維數(shù)組的指針。4.指針與字符串我們可以用字符串為char型的指針變量賦初值。但是將字符串常量作為初值賦值給字符數(shù)組與將字符串常量作為初值賦值給指針變量的含義是不同的。由于字符型指針可以指向字符串,因此字符指針數(shù)組也可以看作是字符串?dāng)?shù)組。但指向字符串的指針數(shù)組與存放字符串的二維字符數(shù)組有本質(zhì)的區(qū)別。5指針與數(shù)組作為函數(shù)的參數(shù)指針的本質(zhì)是地址,指針可以做參數(shù),而數(shù)組名也就可以做參數(shù)。一維數(shù)組名作參數(shù)時,數(shù)組名后面要跟著,中間可以有整型常量,也可以沒有。6. 函數(shù)指針的定義與引

29、用當(dāng)一個指針指向了函數(shù)的第一條指令時,這個指針被稱為函數(shù)指針。函數(shù)指針變量的定義格式是:數(shù)據(jù)類型符 (*變量名)(參數(shù)列表);其中: 數(shù)據(jù)類型符實際上是函數(shù)指針?biāo)赶虻暮瘮?shù)的返回值類型。 參數(shù)列表實際上是函數(shù)指針?biāo)赶蚝瘮?shù)的參數(shù)列表,參數(shù)列表可以為空。 *號和變量名一定要用()括起來。函數(shù)指針的定義極易與函數(shù)原型聲明相混淆,比較下表說明。int *pf (int x);int(*pf)(int x);上面一行是函數(shù)原型的聲明,pf是函數(shù)名,返回值是int型指針上面一行是函數(shù)指針變量的定義,pf是變量名,pf所指向的函數(shù)的返回值是int 型值第八章 預(yù)處理命令宏定義分為兩種:不帶參數(shù)的宏定義和帶

30、參數(shù)的宏定義。由于預(yù)編譯器處理宏時,僅僅是一個文本替換操作,并不對宏的內(nèi)容文本進行任何處理,因此,程序員在定義宏時,如果宏是一個表達式,那么一定要將這個表達式用()括起來,否則可能會引起非預(yù)期的結(jié)果。帶參數(shù)的宏定義的格式是:#define macro_name(參數(shù)列表)macro_content其中: macro_name是宏名,必須是合法標(biāo)識符,一般用大寫字母命名。 參數(shù)列表由一個或多個參數(shù)構(gòu)成,參數(shù)只有參數(shù)名,沒有數(shù)據(jù)類型符,參數(shù)之間用逗號隔開,參數(shù)名必須是合法標(biāo)識符。 macro_content是宏的內(nèi)容文本,其中通常會引用宏的參數(shù)。預(yù)編譯器是這樣處理帶參數(shù)的宏的,首先將宏內(nèi)容文本中的

31、宏參數(shù)替換成實參文本,這樣形成了宏的實際內(nèi)容文本,再將這個宏的實際內(nèi)容文本替換源程序中的宏標(biāo)識符。第九章 復(fù)雜數(shù)據(jù)類型1. 結(jié)構(gòu)體typedef語句的格式是: typedef 類型名 類型名的別名;其中: 類型名必須是已經(jīng)定義的數(shù)據(jù)類型名或C語言提供的基本類型名。 類型名的別名必須是合法標(biāo)識符,通常用大寫字母命名。 typedef語句要以分號結(jié)尾。 可以用類型名的別名代替類型名定義變量。如果要為數(shù)組起別名,必須在typedef語句中將數(shù)組的大小寫在別名的后面。結(jié)構(gòu)體是一種構(gòu)造類型,它由多個其他類型的成員組合而成。因此這種類型的變量所占內(nèi)存的大小是它的成員所占內(nèi)存大小的和。2.共用體多個成員共用

32、一個內(nèi)存地址的數(shù)據(jù)結(jié)構(gòu)稱為共用體。共用體的各成員相互覆蓋,不能同時引用。共用體類型的定義格式與結(jié)構(gòu)體類型的定義格式基本相同,僅是關(guān)鍵字不同。結(jié)構(gòu)體用struct,共用體用union。定義共用體變量時可以對變量賦初值。但只能對變量的第一個成員賦初值,不能對所有的變量賦初值。對共用體成員的引用格式與對結(jié)構(gòu)體成員的引用格式相同,如果通過共用體變量引用成員,要使用“.”,如果通過共用體指針來引用成員,要使用“-”。三、重點習(xí)題(一)選擇題1、下面的程序?qū)⑤敵觯簃ain()float f; int x=1,y=2.5; f=1.0*x/y; printf(f=%1.1f,f); A.f=0.4B.f=0

33、.5 C.f=0.0 D.f=02、以下所列的C語言常量中,錯誤的是: A 0XFF B. e5 C. 2L D. 723、下面的程序?qū)⑤敵觯簃ain()char ch; ch=0x31; ch+=1; switch(ch) case 1: printf(this is one. ); case 2: printf(this is two. ); default: printf(no way! ); A.this is one. B.this is two.C.no way! D.this is two.no way!4、設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為: x=10; x+=x-

34、=x-x; A10 B20 C40 D30 5、已知有下面兩個變量,將數(shù)組a的第2個單元賦值為1的C語句是:int a10;int *p;p=a;A.a2=1;B.p1=1; C.*(p+)=1; D.*(+a)=1;6、若已知float a,b,c;,要通過語句scanf(a=%f,b=%f,c=%f ,&a,&b,&c);給a賦于10.0,b賦予22.0,c賦予33.0,正確的輸入形式是: Aa=10b=22c=33 Ba=10,b=22,c=33 C 10.0,22.0,33.0 D10 2233 7、下列循環(huán)結(jié)構(gòu)中,不是無限循環(huán)的是: A.for(i=1, s=0; ; i+) s=s

35、+i ;B. i=10; while(1) i=i%10+1; if(i10) break; C. int i=0; do +i ; while(i=0);D. i =100; while(+i%2) i+;8、已知int x=3,y=20,z=30;則表達式(z=y=x)的值是: A1 B語法錯 C0 D假9、下列程序段所表示的邏輯關(guān)系是:if(ab) if(c) x=1; else x=2; else x=2;A. x = B. x = C. x = D. x = 10、設(shè)x和y均為int型變量,則執(zhí)行下的循環(huán)后,y值為: for(y=1,x=1;y=50;y+) if(x=10)brea

36、k; if (x%2=1) x+=5; continue; x-=3; A2 B4 C6 D811、設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為 x=10; x+=x-=x-x;A10 B20 C40 D3012、有以下程序 main() char a=programming, b=language; char *p1,*p2; int i; p1=a; p2=b; for(i=0;i7;i+) if(*(p1+i)!=*(p2+i) printf(%c,*(p1+i); 輸出結(jié)果是: Aprogr Blanug Cga Dprorm13、下面能正確進行字符串賦值操作的語句是:Achar s

37、5=ABCDE;Bchar s=A,B,C,D,E;Cchar *s;s=ABCDEF; Dchar *s;scanf(%s,s);14、若有說明:int a10;則對a數(shù)組元素的正確引用是:Aa10 Ba3.5 Ca(5) Da10-1015、設(shè)有以下說明和定義:typedef union long i; int k4; char c; DATE;struct date int cat; DATE cow; double dog; too;DATE max;則下列語句的執(zhí)行結(jié)果是printf (%d,sizeof (struct date ) +sizeof(max);A26 B36 C18

38、 D816、設(shè)有int a =10,11,12,*p=&a0;則執(zhí)行完*p+;*p+=1;后a0,a1,a2的值依次是:A.10,11,12 B.11,12,12 C.10,12,12 D.11,11,1217、若二維數(shù)組a 有m列,則在aij之前的元素個數(shù)為_Aj*m+i Bi*m+j C i*m+j-1 Di*m+j+118、有如下定義:int arr=6,7,8,9,10;int * ptr;則下列程序段的輸出結(jié)果為ptr=arr;* (ptr+2)+=2;printf (%d,%dn,*ptr,*(ptr+2);A8,10 B. 6,8 C. 7,9 D. 6,1019、以下程序運行后

39、,如果從鍵盤上輸入ABCDE,則輸出結(jié)果為A4 B7 C6 D5#include#includefunc(char str ) int num =0;while(*(str+num)!=0) num+;return(num);main( )char str10,*p=str; gets(p); printf(%dn,func(p); 20、有四種對指針變量的操作語句,以下判斷正確的是:(1) int *p,*q; p=q;int a,*p,*q; p=q=&a;(2) int a,*p,*q; p=&a; p=*q;int a=20,*p; *p=a;(3) int a=b=0,*p; p=&

40、a;b=*p;int a=20, *q=&a; *p=*q;(4) int a=20,*p,*q=&a; p=q;int p,*q; q=&p;A. 正確1 不正確2,3,4 B. 正確1,4, 不正確2,3,C. 正確3 不正確1,2,4 D. 都不正確(二)讀程序?qū)懡Y(jié)果程序1 #include int f(int n) 運行結(jié)果:static int s=1; while(n) s*=n-; return s; main()int i,j; i=f(3); j=f(5); printf(nThe output is:n); printf(i=%d,nj=%o n,i,j);程序2 main

41、() 運行結(jié)果: int a5=1,2,3; int k,j; for(k=1;k=0;j-) printf(“%d,”,aj); printf(“b n”); 程序3 #include typedef struct stu 運行結(jié)果: char name10; int age; STU;char *fun(STU *p,int m) int k,i,num=0; STU *q; k=200; for(i=0;iageage; num+=k; q=p+i; printf(“%dn”,num); q-name2=k; return q-name;main() struct stu students3=Zhang,20,Wang,19,Zhao,18; printf(%sn,fun(students,2); (三)改錯題1.下面程序的功能是將一個數(shù)字字符串轉(zhuǎn)換為整數(shù),至少包含有10處錯誤

溫馨提示

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

評論

0/150

提交評論