C語言知識點(diǎn)總結(jié)_第1頁
C語言知識點(diǎn)總結(jié)_第2頁
C語言知識點(diǎn)總結(jié)_第3頁
C語言知識點(diǎn)總結(jié)_第4頁
C語言知識點(diǎn)總結(jié)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C語言知識點(diǎn)總結(jié)C語言知識點(diǎn)總結(jié)1一、常量2二、標(biāo)識符2三、變量2四、表達(dá)式3五、輸入輸出函數(shù)4六、C語言的語句5七、C程序的基本結(jié)構(gòu)5八、選擇結(jié)構(gòu)語句5Øif(表達(dá)式) 語句1 else 語句25Ø條件運(yùn)算符 表達(dá)式1? 表達(dá)式2 : 表達(dá)式36Øswitch語句6九、循環(huán)結(jié)構(gòu)6Øfor循環(huán)語句6Øwhile循環(huán)語句 do while循環(huán)語句6十、數(shù)組7十一、字符串函數(shù)7十二、函數(shù)8十三、指針9十四、宏定義10一、 常量Ø 數(shù)字常量 i. 普通數(shù)字:1,35,2.7ii. 指數(shù)形式:2.45e-2等價于2.45*10-2 注意e大小

2、寫皆可,e前面的數(shù)字不能省,就算是1也不能省,后面的數(shù)字一定要是整數(shù)iii. 長整型,單精度浮點(diǎn)型:3235L,32.5F 分別表示3235是長整型數(shù)據(jù),32.5是單精度浮點(diǎn)型左,若不寫上L,F(xiàn)則表示3235是整型,32.5是雙精度浮點(diǎn)型,L,F(xiàn)大小寫皆可Ø 字符常量i. 普通字符常量:用單引號把一個字符括起來,如A,ii. 轉(zhuǎn)義字符常量:一對單引號括起來并以“”開頭的字符序列,如n(回車)、123(8進(jìn)制123對應(yīng)的字符), x23(16進(jìn)制23對應(yīng)的字符)Ø 字符串常量用一對雙引號把一個字符序列括起來,如“ABCef”, 系統(tǒng)存放字符串常量,每個字符分配一個字節(jié),各字符

3、所占字節(jié)緊鄰,并且字符串末尾會給再開一個字節(jié)里面放一個0做為結(jié)束標(biāo)志。Ø 符號常量定義格式 #define 符號常量名 符號常量值,如#define N 20則定義了符號常量N,其值為20,注意符號常量名和符號常量值之間是用空格隔開,而不是寫上=號,#define和符號常量名之間也有空格的。二、 標(biāo)識符Ø 命名規(guī)則以數(shù)字,字母,下劃線這三類字符組成,但只能以字母或下劃線開頭,而不能也數(shù)字開頭,另外不能將關(guān)鍵字做為標(biāo)識符。32個關(guān)鍵字表在P365附錄BØ 變量名,函數(shù)名,符號常量名全都是標(biāo)識符三、 變量Ø 變量的定義格式類型名 變量名;如 int a;定義

4、了一個整型常量a。變量名是由人類隨便定義的,符合命名規(guī)則的前提下,愛寫啥就寫啥。所以什么flag,cc,y1或者函數(shù)名fun,find等全部是自定的用來做為名字而已,沒有更特別的意義。Ø 類型名int 整型,long 長整型: 用于存放整數(shù),只是數(shù)值范圍不同float 單精度浮點(diǎn)型 double 雙精度浮點(diǎn)型:用于存放實(shí)數(shù),數(shù)值范圍,精度不同char字符型:用于存放字符Ø 變量賦值,初始化int a=3;定義的同時初始化a=6*9;定義后在程序中進(jìn)行賦值Ø 變量的值只有在賦值操作時才會被改變,即將其放在等號左邊時才會改變它的值,或自增自減操作:a=5,a+,a-,

5、像a+3并未改變a的值,只是使用了a的值而已.Ø 自增自減運(yùn)算變量+,+變量,變量-,-變量 使變量的值自增1或自減1等價于 變量=變量+1 變量=變量-1+,-放于變量前后效果的區(qū)別:當(dāng)自增自減運(yùn)算做為表達(dá)式的一部分時,+,-放在變量前面是先自增自減再使用變量的值,放在變量后面則是先使用變量的值,再自增自減。如x=3; printf(“%d”,+x);則相當(dāng)于執(zhí)行了+x; printf(“%d”,x);這樣的操作所以打印出4再如x=3; printf(“%d”,x+);則相當(dāng)于執(zhí)行了printf(“%d”,x); x+;這樣的操作,則打印出3,當(dāng)然最后x的值還是4。四、 表達(dá)式&#

6、216; 運(yùn)算符和運(yùn)算對象一個運(yùn)算符都有若干個運(yùn)算對象,如 + 必然要跟兩個運(yùn)算對象才能進(jìn)行加法運(yùn)算:3+5。C語言里稱需要跟n個運(yùn)算對象的運(yùn)算符為n元運(yùn)算符。一元運(yùn)算符有:!,(類型名)二元運(yùn)算符有:+,-,*,/,%(求余), =,+=,-=,*=,/=,%=,< , > , <=, >=, = =(等于), !=(不等于),&&(且) , |(或)多元運(yùn)算符有: ,Ø 運(yùn)算符的優(yōu)先級和結(jié)合性i. 優(yōu)先級:同一個運(yùn)算對象左右兩邊若同時有兩個運(yùn)算符,則這兩個運(yùn)算符優(yōu)先級高的先進(jìn)行運(yùn)算。ii. 結(jié)合性:若同一個運(yùn)算對象左右兩邊的兩個運(yùn)算符優(yōu)先級

7、相同,則根據(jù)結(jié)合性判斷先進(jìn)行哪個運(yùn)算,自左自右結(jié)合性的先算左邊的運(yùn)算符,自右自左的先算右邊的運(yùn)算符。iii. 各運(yùn)算符的優(yōu)先級和結(jié)合性見P378附錄DØ 強(qiáng)制類型轉(zhuǎn)換格式: (類型名) 表達(dá)式 。將后跟的表達(dá)式的值的數(shù)據(jù)類型轉(zhuǎn)換為與圓括號內(nèi)的類型名一致的類型。注意類型名一定要用() 括起來。Ø 算術(shù)表達(dá)式i. 算術(shù)運(yùn)算符:+,-,*,/,%(求余)ii. 由算術(shù)運(yùn)算符加上運(yùn)算對象構(gòu)成算術(shù)表達(dá)式,如3+3*6-9/2iii. 值:跟我們小學(xué)時學(xué)的一樣,就是表達(dá)式的計(jì)算結(jié)果iv. 整數(shù)除以整數(shù)結(jié)果取整數(shù)部分,故1/3得到的值是0v. 5%3 結(jié)果為2,想想小學(xué)除法,求余得到的是

8、余數(shù)不是商。Ø 賦值表達(dá)式i. 賦值運(yùn)算符:=,+=,-=,*=,/=,%=ii. 賦值表達(dá)式:變量=表達(dá)式,如x=3+6,x+=6-9,x+=x*=3+4 注意等號左邊只能是變量iii. 復(fù)合賦值運(yùn)算符的運(yùn)算:以/=為例:x/=表達(dá)式 等價于 x=x/(表達(dá)式)iv. 值:=號左邊的變量最終的值Ø 關(guān)系表達(dá)式i. 關(guān)系運(yùn)算符:< , > , <=, >=, = =(等于), !=(不等于)ii. 由關(guān)系運(yùn)算符加上運(yùn)算對象構(gòu)成關(guān)系表達(dá)式,如3>=4, 2=aiii. 值:滿足相應(yīng)運(yùn)算符所指定的關(guān)系的值為1,否則為0Ø 邏輯表達(dá)式i.

9、邏輯運(yùn)算符:&&(且) , |(或) , !(非)ii. 由邏輯運(yùn)算符加上運(yùn)算對象構(gòu)成邏輯表達(dá)式,如3&&4, x|!yiii. 值:滿足相應(yīng)運(yùn)算符所指定的關(guān)系的值為1,否則為0iv. 進(jìn)行 |或 運(yùn)算時,若|左邊的表達(dá)式值為1,則不再對右邊的表達(dá)式進(jìn)行運(yùn)算。v. 進(jìn)行 &&且 運(yùn)算時,若&&左邊的表達(dá)式值為0,則不再對右邊的表達(dá)式進(jìn)行運(yùn)算。Ø 逗號表達(dá)式i. 逗號運(yùn)算符: ,ii. 用逗號將各種表達(dá)式連續(xù)起來構(gòu)成逗號表達(dá)式,如3+4,a=9,8*aiii. 值:組成逗號表達(dá)式的各個表達(dá)式中的最后一個的值,如上例為8*a

10、Ø 題目:P71117 P81833五、 輸入輸出函數(shù)Ø scanf(“格式控制串”,變量地址表列);如scanf(“%d%c%d”,&a,&ch,&b); scanf(“%4f”,&x);注意:i. 格式控制串可控制截取用戶輸入的前幾個字符給變量,但不能控制輸入幾位小數(shù)給變量,如不能寫成scanf(“%4.2f”,&x);ii. 第二個參數(shù)給的是地址,即要么是&+變量名或數(shù)組元素名的形式,要么就是一個數(shù)組名或指針變量名,如int *p,a; p=&a; scanf(“%d”,p);iii. 考試時注意看題目給你寫好的

11、scanf的格式1. 若其格式控制串內(nèi)各格式符用“,”隔開如scanf(“%d,%c,%d”,&a,&ch,&b);那輸入時也要用逗號隔開,如此例輸入時應(yīng):3,+,52. 若是這種格式scanf(“%d %d”,&a,&b);則輸入時應(yīng):3 5;3. 若是這種格式scanf(“%d%c%d”,&a,&ch,&b);則輸入時應(yīng)3+5,若寫成3 + 5則a=3,ch= (空格),b=任意值 (自己上機(jī)運(yùn)行看看結(jié)果)Ø printf(“格式控制串”,輸出項(xiàng)表列);如float x=7.5; printf(“%8.2f”,x);

12、此處的意思是將x打印出來,且占8列,保留兩位小數(shù)。自己上機(jī)運(yùn)行看看效果。Ø 常用格式符匯總:i. %d:輸入輸出整型數(shù)據(jù),%ld:輸入輸出長整型數(shù)據(jù)ii. %c:輸入輸出字符型數(shù)據(jù)iii. %f:輸出單(雙)精度浮點(diǎn)型數(shù)據(jù),輸入單精度型數(shù)據(jù)。 %lf:輸入雙精度型數(shù)據(jù)iv. %s:輸入輸出一個字符串,用printf輸出字符串時,輸出項(xiàng)書寫時可為字符串常量,或字符數(shù)組名。如printf(“%s”,”hello”);或char str10=”hello”; printf(“%s”,str);v. %u:輸入輸出無符號整型,%o:輸入輸出八進(jìn)制數(shù), %x:輸入輸出十六進(jìn)制數(shù)Ø g

13、etchar();函數(shù)調(diào)用后返回用戶輸入的一個字符,故需再定義一個變量來存放這個字符,即使用時應(yīng) char c; c=getchar();意思就是接收用戶輸入的一個字符,并將其賦值給變量c。Ø putchar(字符常量或字符變量名);如char c=A; putchar(c);或putchar(A);都會向屏幕輸出字符A。六、 C語言的語句Ø 表達(dá)式語句:由表達(dá)式末尾加上分號構(gòu)成。Ø 函數(shù)調(diào)用語句:由函數(shù)調(diào)用表達(dá)式加上分號構(gòu)成。Ø 空語句: ;Ø 選擇結(jié)構(gòu)語句:if語句 switch語句Ø 循環(huán)語句:for語句 while語句 do

14、while語句Ø 復(fù)合語句:用花括號將以上任意語句括起來構(gòu)成一條復(fù)合語句。七、 C程序的基本結(jié)構(gòu)void main() 聲明部分:用來定義變量和聲明自定義函數(shù)的原型,需以“;”結(jié)尾,如int x; 執(zhí)行語句部分:第六點(diǎn)里介紹的各種語句,如x=3;printf(“%d”,x);main函數(shù)外可寫自定義函數(shù)。如int max() return 0;八、 選擇結(jié)構(gòu)語句Ø if(表達(dá)式) 語句1 else 語句2 如果if語句的圓括號內(nèi)的表達(dá)式值為非0,則執(zhí)行語句1,值為0則執(zhí)行語句2。i. 表達(dá)式可為任意表達(dá)式,if語句執(zhí)行的實(shí)質(zhì)是判斷表達(dá)式的值是否為0來決定執(zhí)行語句1還是語句2

15、。另外請?jiān)诖颂幈磉_(dá)嚴(yán)重關(guān)切,不管是高手還是菜鳥經(jīng)常會把判斷兩個數(shù)相等的符號“=”寫成了一個等號“=”成為了賦值運(yùn)算,這樣的寫法不會引發(fā)編譯錯誤,但結(jié)果會與原意大大不同,所以考試前請?jiān)偃嵝炎约?。ii. 語句1和語句2都只能是一個語句,若要跟多條語句,切記用一對括起來,構(gòu)成復(fù)合語句;也不要隨便在圓括號后加“;” ,因“ ;”構(gòu)成一條空語句,這會使后面跟的語句1不再屬于if語句的組成部分。iii. if語句的三種結(jié)構(gòu)1. 單邊: if(表達(dá)式) 語句2. 雙邊:if(表達(dá)式) 語句1 else 語句23. 多層 :if(表達(dá)式1) 語句1 else if(表達(dá)式2) 語句2 else if(表達(dá)式

16、3) 語句3else 語句nØ 條件運(yùn)算符 表達(dá)式1? 表達(dá)式2 : 表達(dá)式3 若表達(dá)式1的值非0,則取表達(dá)式2的值做為整個表達(dá)式的值,否則取表達(dá)式3的值為整個表達(dá)式的值。如 3>4? 1:2 該表達(dá)式的值為2Ø switch語句switch(表達(dá)式)case 表達(dá)式1:語句case 表達(dá)式2:語句case 表達(dá)式n:語句default: 語句語句執(zhí)行過程:先計(jì)算表達(dá)式的值,然后判斷該值與表達(dá)式1到表達(dá)式n中的哪個相等,若與表達(dá)式i的值相等,則執(zhí)行表達(dá)式i后的所有語句,當(dāng)遇到break;語句時結(jié)束整個switch語句的執(zhí)行。表達(dá)式1到表達(dá)式n的值都不相等的情況下執(zhí)行d

17、efault后跟的語句。每個case后可跟多條語句。九、 循環(huán)結(jié)構(gòu)Ø for循環(huán)語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體語句語句執(zhí)行過程:1. 計(jì)算表達(dá)式12. 判斷表達(dá)式2的值是否為0,若為0,語句執(zhí)行結(jié)束,若不為0,進(jìn)入步驟33. 執(zhí)行循環(huán)體語句(需注意的是循環(huán)體語句只能有一個語句,若要包含多個語句要用一對括起來,構(gòu)成一條復(fù)合語句,此處也不要隨便加上 “ ; ”,因一個“;”可構(gòu)成一條空語句,這會使得后面真正的循環(huán)體語句不屬于for循環(huán)語句的部分)。進(jìn)入步驟44. 計(jì)算表達(dá)式3,然后重新進(jìn)入步驟2Ø while循環(huán)語句 do while循環(huán)語句i. while

18、(表達(dá)式) 循環(huán)體語句執(zhí)行過程:1. 判斷表達(dá)式的值是否為非0,若是進(jìn)入步驟2,否則結(jié)束語句執(zhí)行。2. 執(zhí)行循環(huán)體語句,重新回到步驟1。ii. do 循環(huán)體語句 while(表達(dá)式);執(zhí)行過程:1. 執(zhí)行循環(huán)體語句,進(jìn)入步驟22. 判斷表達(dá)式的值是否為非0,若是重新回到步驟1,否則結(jié)束語句執(zhí)行。這里要注意的地方跟for語句一樣,即循環(huán)體語句只能有一個語句,若要包含多個語句要用一對括起來,構(gòu)成一條復(fù)合語句,此處也不要隨便加上 “ ; ”,因一個“;”可構(gòu)成一條空語句,這會使得后面真正的循環(huán)體語句不屬于while循環(huán)語句的部分,另外do while循環(huán)的while(表達(dá)式)后是要加“;”的。

19、16; break語句:放在循環(huán)體內(nèi)實(shí)現(xiàn)的功能是結(jié)束其所在的那層循環(huán)的執(zhí)行。十、 數(shù)組Ø 定義格式:數(shù)據(jù)類型 數(shù)組名整型常量;如 int a10; 定義了一個整型數(shù)組,數(shù)組名為a,這個數(shù)組含有10個元素。Ø 引用數(shù)組元素: 格式:數(shù)組名下標(biāo) 切記下標(biāo)值從0開始。下標(biāo)可為常量,表達(dá)式,變量等,如int i=3; a0=5;a3*2=9; ai=7;Ø 初始化:數(shù)據(jù)類型 數(shù)組名整型常量=數(shù)據(jù)表列;將數(shù)據(jù)表列的各個值依次賦值給數(shù)組的各個元素。如int a5=0,1,2,3,4;則數(shù)組a各元素a0到a4的值分別為0,1,2,3,4Ø 遍歷數(shù)組元素數(shù)組定義后,我們

20、不能對數(shù)組進(jìn)行整體的操作,如int a10;不能用a=3這樣的操作將數(shù)組的各元素都賦值為3;而只能一個一個元素的進(jìn)行賦值,如a0=3;a1=3;a2=3a9=3; 當(dāng)然此時我們就可以借助于一個for循環(huán)來控制下標(biāo)的變化從而對數(shù)組的各個元素進(jìn)行賦值for(i=0;i<10;i+) ai=3; 當(dāng)然這只是用for循環(huán)遍歷數(shù)組各元素的最簡單的例子,一般考試考的是找出數(shù)組元素的某種特性的極值,比如最大值,最小值,或?qū)?shù)組各元素進(jìn)行排序,這時我們就可以使用for循環(huán)來遍歷數(shù)組的各元素,然后在當(dāng)前循環(huán)中得到一個元素再對其進(jìn)行處理。如i=2時訪問到的元素是a2,你就可以問問它,你是不是最小值啊。

21、16; 整型數(shù)組int a10; 整型數(shù)組里的各個元素存放的是整數(shù)。a3=3;Ø 字符型數(shù)組char str20;字符型數(shù)組里的各個元素存放的是字符。 str3=A;十一、 字符串函數(shù) Ø gets(字符數(shù)組名或字符指針變量);如char str10,* str2; str2=str;則gets(str);或gets(str2);都是接收用戶輸入的字符串如“ABC”存入到字符數(shù)組str中Ø puts(字符數(shù)組名或字符指針變量或字符串常量);如char str10=”china”;char *str2;str=str2; 則puts(str); 或puts(str2

22、); 或 puts(“china”);都會在屏幕上打印出 chinaØ strlen(字符數(shù)組名或字符指針變量);字符串測長函數(shù)char str20=”hello world!”; int len;len=strlen(str);得出的結(jié)果是len的值為12Ø strcat(字符串1的地址,字符串2的地址);將字符串2的內(nèi)容連接到字符串1的尾部。char str120=”ABC”,str220=”xyz”; strcat(str1,str2); 則程序運(yùn)行的結(jié)果是str1內(nèi)存放的字符串變?yōu)锳BCxyz,當(dāng)然str2存放的字符串還是xyz。Ø strcmp(字符串1

23、的地址,字符串2的地址);比較串1和串2哪個比較大。比較大小的依據(jù)是,兩個字符串從左往右相應(yīng)位置上第一個不相等的字符ASCII碼值之差。char str120=”ABCE”,str220=”ABDE”; int i;i=strcmp (str1,str2);第一個不相等的字符為str1的C和str2的D,而二者相差-1,故-1做為strcmp函數(shù)執(zhí)行的結(jié)果返回到被調(diào)用的位置,該位置位于賦值表達(dá)式內(nèi),故將其值賦值給i,即此時i的值就是-1.Ø strcpy(字符串1的地址,字符串2的地址);將字符串2的內(nèi)容復(fù)制到字符串1內(nèi)。char str120=”ABC”,str220=”xyz”;

24、strcpy(str1,str2);此時str1的內(nèi)容為”xyz”,當(dāng)然str2的內(nèi)容沒變strcpy(str1,”uvw”);此時str1的內(nèi)容又變成了“uvw“。十二、 函數(shù)Ø 函數(shù)定義函數(shù)類型 函數(shù)名( 形式參數(shù)列表 ) 內(nèi)部變量定義和聲明部分 執(zhí)行語句 如:int max (int x , int y ) int z ; z= x > y ? x : y ; return ( z ) ;注意點(diǎn):1.函數(shù)類型是指返回值的類型,即要與return語句后跟的表達(dá)式的值的類型一致。若函數(shù)類型為void則說明該函數(shù)無返回值,即函數(shù)體里不能出現(xiàn)return 語句。2.形式參數(shù)列表里

25、定義的變量要記得給它們指定類型,而且如果同時要定義多個,應(yīng)在每個前面都分別指定類型名,而不能寫成int x,y;3.函數(shù)體里能寫的語句跟main函數(shù)一樣,在開頭可定義所需要的變量,后面跟上一堆執(zhí)行語句。Ø 函數(shù)調(diào)用流程以上面的函數(shù)為例,在main函數(shù)進(jìn)行調(diào)用:void main() int a,b,c; scanf(“%d%d”,&a,&b); printf(“%d”,max(a,b);或 c=max(a,b);printf(“%d”,c)以上兩種方法都會在屏幕中打印出a,b間的較大值。調(diào)用函數(shù)的格式 函數(shù)名(實(shí)際參數(shù)列表);調(diào)用的時候像什么函數(shù)類型,形式參數(shù)的類型就

26、不要加上去了。max(a,b)中max就是函數(shù)名,寫上變量名a,b是實(shí)際參數(shù)列表,執(zhí)行這個調(diào)用語句時,會先把a(bǔ),b的值給相應(yīng)位置的形式參數(shù)即執(zhí)行了x=a,y=b這樣的操作,然后開始執(zhí)行max函數(shù)的函數(shù)體的語句。當(dāng)max函數(shù)體里執(zhí)行到一個return語句時,則max函數(shù)結(jié)束執(zhí)行,將return后的表達(dá)式的值返回給main函數(shù)調(diào)用max函數(shù)的那個位置,即若上面a=3,b=5則max(a,b)return后的表達(dá)式的值應(yīng)該是5也就是說執(zhí)行完max后把5返回到調(diào)用max的位置可看成printf(“%d”,5);或另一種解法的c=5。十三、 指針Ø 指針變量的聲明: 類型名 * 指針變量名;&

27、#216; 通過指針變量訪問它所指向的普通變量的值先將普通變量的地址賦值給指針變量,再通過指針運(yùn)算符* 得到普通變量的值。int *p,x,y;x=3;p=&x;則printf(“%d”,*p);會打印出3即x的值y=*p;則y的值變?yōu)?*p=5;則x的值變?yōu)?Ø 指針變量加上(減去)一個位移的效果若指針變量存入的是數(shù)組元素的地址,則其加一減一得到的是那個數(shù)組元素下一個或前一個元素的地址。int a10; p=&a3;*p得到的是a3的值。若p+;此時p存放的是a4的地址&a4; *p得到的就是a4的值?;騪-;此時p存放的是a2的地址&a2,*p得到

28、的就是a2的值。Ø 行指針i. 主要是對于二維數(shù)組來說的,二維數(shù)組每行都有自己的地址,第0行地址用 數(shù)組名 表示,第i行地址為 數(shù)組名+i;而想要得到二維數(shù)組里一個元素的地址,必需先得到其所在行的地址,然后再由那個地址得到元素的地址,比如說 int a34;定義了一個二維數(shù)組,該二維數(shù)組第0行的地址為a,第1行的地址為a+1,第2行的地址為a+2,想從行的地址得到元素的地址,需在行地址前加上指針運(yùn)算符“*”,即*a就是第0行首個元素的地址即a00的地址,而a02的地址就是在a00的地址基礎(chǔ)上加上位移量2,即*a+2,然后想得到a02這個元素的值呢就再加上一個指針運(yùn)算符“*”,即*(*

29、a+2),類似地,想得到a22這個元素的值呢就是*(*(a+2)+2)ii. 定義行指針變量: 類型名 (*變量名)數(shù)組長度;如int (*p)4,a34; p=a;此時就可把p當(dāng)成a來用,用法同上所述。Ø 判斷是否合法訪問數(shù)組元素:若是指針法訪問,判斷指針后跟的是否地址;若是下標(biāo)法訪問,判斷下標(biāo)有無越界。Ø 函數(shù)指針:函數(shù)名即為函數(shù)的地址(指針)i. 函數(shù)指針變量的定義: 類型名 (*變量名) (形參列表);如 int (*p)();ii. 賦值:指針變量=函數(shù)名;設(shè)有個函數(shù)其函數(shù)名為max,則要將該函數(shù)的地址給p的話只要執(zhí)行如下語句即可 p = max;Ø 指

30、針數(shù)組:指針數(shù)組的數(shù)組元素都是指針變量,是用來存放變量的地址的,定義格式為 類型名 * 變量名數(shù)組長度; 如int * p10;Ø 指向指針的指針:指針變量也是一種變量,故在內(nèi)存中也有對應(yīng)的一個地址,而要存放指針變量的地址,就要求助于用來存放指針變量的地址的指針變量,定義格式 類型名 * 變量名;如 int *p1; int *p2; int a=3;可進(jìn)行賦值p1=&a; p2=&p1; 則a 、*p1和 *p2的值都是3.十四、 宏定義Ø 無參宏定義 #define 標(biāo)識符 值 定義后,出現(xiàn)所定義的標(biāo)識符的地方都將以定義時指定的值來代替。#define

31、M 2+3main() int x; x=M*M; 則x的值為2+3*2+3=11若想得到的結(jié)果是(2+3)*(2+3)則定義時也寫成這樣 #define M (2+3)注意#define、標(biāo)識符、值之間都要用空格隔開,且宏定義結(jié)尾不需加分號。附:題型選擇題(本題共20小題,每題1.5分,共30分)判斷題(本題共10小題,每題1分,共10分)填空題(本題共4小題,每空2分,共20分)程序設(shè)計(jì)題(本題共4小題,每題10分,共40分)練習(xí)題填空題 1、一個C源程序中至少應(yīng)包含一個 函數(shù)。2、引用C語言標(biāo)準(zhǔn)庫函數(shù),一般要用【 】 預(yù)處理命令將其頭文件包含進(jìn)來。3、當(dāng)運(yùn)行以下程序時,從鍵盤輸入-1 0

32、<CR>(<CR>表示回車),則下面程序的運(yùn)行結(jié)果是 。 #include<stdio.h>main() int a,b,m,n; m=n=1; scanf("%d%d",&a,&b); do if(a>0) m=2*n; b+; elsen=m+n; a+=2; b+; while(a=b); printf("m=%d n=%d",m,n);4、運(yùn)算符%、*=、|、=中,優(yōu)先級最低的是 ?!?】5、下面程序段的運(yùn)行結(jié)果是 。 int i=1,a=0,s=1;doa=a+s*i; s=-s; i+

33、; while (i<=10);printf("a=%d",a);6、程序main() int a34=1,3,5,7,9,11,13,15,17,19,21,13; int (*ptr)4;int sum=0,i,j; ptr=a; for (i=0;i<3;i+) for (j=0;j<2;j+) sum+=*(*(ptr+i)+j); printf("%dn",sum);的運(yùn)行結(jié)果是 ?!?】7、int m=5,y=2;則表達(dá)式y(tǒng)+=y- =m*=y的值為 ?!?】8、程序# include <stdio.h> voi

34、d prtv(int *x) printf("%dn",+*x); main() int a=25; prtv(&a); 的運(yùn)行結(jié)果為 【 】9、函數(shù)內(nèi)部可以在復(fù)合語句中定義變量,這些變量在【 】 的范圍內(nèi)有效。10、已有定義 :double x=3.5;, 則表達(dá)式 :x=(int)x+1 的值是 。【 】填空題答案: (1) 【 main 】 (2) 【 文件包含 】 (3) 【m=4,n=2 】 (4) 【 *= 】 (5) 【 a=5 】 (6) 【 60 】 (7) 【 -16 】 (8) 【 26 】 (9) 【該函數(shù)中 】 (10)【 4.0 】 程序

35、設(shè)計(jì)題 1. 輸入一個圓半徑(r),當(dāng)r>0時,計(jì)算并輸出圓的面積和周長,否則,輸出提示信息。#include <stdio.h> #define PI 3.14 <stdio.h>main() float r ,s , l; printf("please input r:n"); scanf("%f”,&r);if (r>=0) s=pi*r*r; l=2*i*r ; printf("the area is %fn",s);printf("the circumference is %fn&

36、quot;,l);else printf("input error!n"); 2.輸入2個整數(shù),求兩數(shù)的平方和并輸出。 #include <stdio.h> main() intt a ,b,s; printf("please input a,b:n"); scanf("%d%d”,&a,&b); s=a*a+b*b; printf("the result is %dn",s); 3. 編程設(shè)計(jì)一個簡單的計(jì)算器程序。從鍵盤輸入2個操作數(shù),1個運(yùn)算符,當(dāng)運(yùn)算符為加(+)、減(-)、乘(*)、除(/)

37、時,輸出計(jì)算結(jié)果 #include <stdio.h>main() int data1, data2; /*定義兩個操作符*/char op; /*定義運(yùn)算符*/printf("Please enter the expression:");scanf("%d%c%d", &data1, &op, &data2); /*輸入運(yùn)算表達(dá)式*/switch(op) /*根據(jù)輸入的運(yùn)算符確定要執(zhí)行的運(yùn)算*/ case '+': /*處理加法*/printf("%d + %d = %d n",

38、data1, data2, data1 + data2); break;case '-': /*處理減法*/printf("%d - %d = %d n", data1, data2, data1 - data2);break;case '*': /*處理乘法*/printf("%d * %d = %d n", data1, data2, data1 * data2); break;case '/': /*處理除法*/if (0 = data2) /*為避免出現(xiàn)溢出錯誤,檢驗(yàn)除數(shù)是否為0*/printf(&

39、quot;Division by zero!n");else printf("%d / %d = %d n", data1, data2, data1 / data2); break;default: printf("Unknown operator! n");4.從鍵盤上輸入一個百分制成績score,按下列原則輸出其等級:score90,等級為A;80score<90,等級為B;70score<80,等級為C;60score<70,等級為D;score<60,等級為E。 #include <stdio.h>main()int data; char grade; printf("Please enter the score:");scanf("%d”, &data); switch(data/10) case 10: case 9 : grade=A; break; case 8:

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論