




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2012年計算機(jī)等級考試二級C語言常見知識點(diǎn)總體上必須清楚的:1)程序結(jié)構(gòu)是三種:順序結(jié)構(gòu),循環(huán)結(jié)構(gòu)(if-goto、while、do_while以及for),選擇結(jié)構(gòu)(if和switch)2)用C語言編寫的程序稱為C語言源程序,源程序文件的后綴名為“.c”;源程序經(jīng)編譯后生成后綴名為“.obj”的目標(biāo)文件;再把目標(biāo)文件與各種庫函數(shù)連接起來,生成“.exe”的可執(zhí)行文件。3)函數(shù)是C程序的基本組成單位,任何一個C程序既可以由一個函數(shù)組成,也可以由多個函數(shù)組成,不管由多少個函數(shù)組成,都必須有且僅有一個主函數(shù),即main()函數(shù)。無論main函數(shù)在整個程序中的位置如何,程序總是從main函數(shù)開始執(zhí)行、也從main函數(shù)結(jié)束。讀程序時應(yīng)從main()函數(shù)開始,然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇)。4)計算機(jī)的數(shù)據(jù)在電腦中是以二進(jìn)制的形式保存的.數(shù)據(jù)存放的位置就是它的地址(即指針)。5)編譯預(yù)處理命令不是C語句,不占用運(yùn)行時間,后面一定不能出現(xiàn)分號。在C程序中有三種情況不會執(zhí)行,依次是編譯預(yù)處理命令、解釋語句和變量聲明語句。6)bit是位是指為0或者1。byte是指字節(jié),一個字節(jié)=八個位。7)一定要記?。憾M(jìn)制如何轉(zhuǎn)換成十進(jìn)制(口訣:按位權(quán)展開求和)。概念??嫉降模?、編譯預(yù)處理(如#include“stdio.h”)不是C語言的一部分,不占運(yùn)行時間。C語言編譯的程序稱為源程序,它以ASCII數(shù)值存放在文本文件中。2、每個C語言程序中main函數(shù)是有且只有一個。3、在函數(shù)中不可以再定義函數(shù),即函數(shù)可以嵌套調(diào)用,不可以嵌套定義。4、算法可以沒有輸入,但一定要有輸出,也就因此編寫任何一個C程序時必須有printf()等輸出語句。5、break可用于循環(huán)結(jié)構(gòu)和switch語句,但continue只能用于循環(huán)結(jié)構(gòu)。6、逗號運(yùn)算符的級別最低,賦值的級別倒數(shù)第二。7、任意合法的表達(dá)式一定有一個數(shù)值與它對應(yīng)。第一章C語言基礎(chǔ)知識1)C程序基本常識該考點(diǎn)主要從C程序書寫規(guī)范、main函數(shù)及函數(shù)基礎(chǔ)知識、C程序開發(fā)流程及各階段產(chǎn)生的文件等方面進(jìn)行考察。每條C語句的后面必須有一個分號,分號是語句的一部分;一行內(nèi)可寫多條語句,一個語句可以分成多行書寫。C程序中對字母的大小寫是敏感的,如A與a是不同的標(biāo)識符。注釋:是對程序的說明,目的是提高程序的可讀性,可出現(xiàn)在程序中任意合適的地方,注釋從“/*”開始到最近一個“*/”結(jié)束,其間任何內(nèi)容都不會被計算機(jī)執(zhí)行,不允許嵌套注釋。下列敘述中正確的是()每個C程序文件中都必須要有一個main()函數(shù)在C程序中main()函數(shù)的位置是固定的C程序中所有函數(shù)之間都可以相互調(diào)用,與函數(shù)所在位置無關(guān)在C程序的函數(shù)中不能定義另一個函數(shù)以下敘述中錯誤的是()
A)C程序在運(yùn)行過程中所有計算都以二進(jìn)制方式進(jìn)行
B)C程序在運(yùn)行過程中所有計算都以十進(jìn)制方式進(jìn)行
C)所有C程序都需要編譯鏈接無誤后才能運(yùn)行
D)C程序中整型變量只能存放整數(shù),實(shí)型變量只能存放浮點(diǎn)數(shù)2)合法的用戶標(biāo)識符考查:合法的要求是由字母,數(shù)字,下劃線組成。有其它元素就錯了。并且第一個必須為字母或者是下劃線。第一個為數(shù)字就錯了。關(guān)鍵字不可以作為用戶標(biāo)識符號。main、define、scanf和printf都不是關(guān)鍵字。迷惑你的地方If是可以作為用戶標(biāo)識符。因?yàn)镃語言是大小寫敏感的文法,If中的第一個字母大寫了,所以不是關(guān)鍵字。注意:連接(-)符不能出現(xiàn)在標(biāo)識符中;區(qū)分字母o與數(shù)字0;熟悉常見的關(guān)鍵字。3)判斷常量是否合法常量是指在程序運(yùn)行過程中,其值不能改變的量;分為整型常量、實(shí)型常量、字符常量、字符串常量、符號常量5種。整型常量:有十進(jìn)制、八進(jìn)制和十六進(jìn)制三種表示形式,沒有二進(jìn)制形式;八進(jìn)制整型常量加前導(dǎo)數(shù)字0,十六進(jìn)制常量加前導(dǎo)0X,八進(jìn)制常量中每個數(shù)位的數(shù)值不會大于7。例如:-080不是合法的整型常量。實(shí)型常量:有兩種表示形式:小數(shù)形式和指數(shù)形式;掌握判定指數(shù)形式合法性。2.333e-1就是合法的,且數(shù)據(jù)是2.333×10-1考試口訣:e前e后必有數(shù),e后必為整數(shù)。.字符數(shù)據(jù)的合法形式:'1'是字符占一個字節(jié),"1"是字符串占兩個字節(jié)(含有一個結(jié)束符號)。'0'的ASCII數(shù)值表示為48,'a'的ASCII數(shù)值是97,'A'的ASCII數(shù)值是65。數(shù)字字符0的ASCII值為48,若有以下程序main(){chara='1',b='2';printf("%c,",b++);printf("%d\n",b-a);}程序運(yùn)行后的輸出結(jié)果是______。A)3,2B)50,2C)2,2D)2,50大小寫字母的轉(zhuǎn)換:大寫字母轉(zhuǎn)換成對應(yīng)小寫字母:ch+32如‘A’+32=’a’小寫字母轉(zhuǎn)換成對應(yīng)大寫字母:ch–32如‘y’–32=‘Y’數(shù)字字符與對應(yīng)數(shù)字的轉(zhuǎn)換:ch–48如’1’–48=1#include<stdio.h>main(){chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();d=getchar();printf("%c%c%c%c\n",a,b,c,d);}當(dāng)執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第一列開始,<CR>代表回車,注意:回車是一個字符)12<CR>34<CR>則輸出結(jié)果是:A、1234 B、12 C、12 D、12 334已知字符A的ASCII代碼值為65,以下程序運(yùn)行時若從鍵盤輸入:B33<回車>,則輸出結(jié)果是___________#include"stdio.h"voidmain(){chara,b;a=getchar();scanf("%d",&b);a=a-'A'+'0';b=b*2;printf("%c%c\n",a,b);}4)變量在程序運(yùn)行過程中其值可以改變的量稱為變量。整型變量可分為基本整型(int)、短整型(short)、長整型(long)、和無符號整型(unsigned);一個基本整型占4個字節(jié),其它類型的整型占用字節(jié)數(shù)和取值范圍詳見教材,注意:變量在計算機(jī)中所占用存儲空間的大小由C語言編譯系統(tǒng)決定。實(shí)型變量分為單精度型(float)和雙精度型(double),單精度型占四個字節(jié)。5)轉(zhuǎn)義字符的考查:在程序中inta=0x6d,是把一個十六進(jìn)制的數(shù)給變量a注意這里的0x必須存在。在程序中inta=06d,是一個八進(jìn)制的形式。在轉(zhuǎn)義字符中,’\x6d’才是合法的,0不能寫,并且x是小寫?!甛141’是合法的,0是不能寫的?!甛108’是非法的,因?yàn)椴豢梢猿霈F(xiàn)8。6)算術(shù)運(yùn)算符:算術(shù)運(yùn)算符一共有+、—、*、/、%這五個;求余運(yùn)算要求運(yùn)算對象只能為整型,除法運(yùn)算符兩邊運(yùn)算對象都為整型時,運(yùn)算結(jié)果也為整型,即舍掉小數(shù)部分。例如:18/10結(jié)果為1,而不是1.8;3.5%3是非法的表達(dá)式。7)強(qiáng)制類型轉(zhuǎn)換:將一個運(yùn)算對象轉(zhuǎn)換成指定類型,格式為(類型名)表達(dá)式,注意小括號位置。一定是(int)a不是int(a),注意類型上一定有括號的。注意(int)(a+b)和(int)a+b的區(qū)別:前者是把a(bǔ)+b轉(zhuǎn)換成整型,后者是把a(bǔ)轉(zhuǎn)換成整型再與b相加。8)賦值運(yùn)算及表達(dá)式的考查:賦值運(yùn)算符為“=”,不同于關(guān)系等于“==”。賦值表達(dá)式格式為:變量名=表達(dá)式,賦值運(yùn)算符左邊必須為變量,賦值運(yùn)算是把賦值運(yùn)算符右邊表達(dá)式的值賦給左邊變量。復(fù)合賦值運(yùn)算符是將算術(shù)運(yùn)算符或位運(yùn)算符與賦值運(yùn)算符組合在一起組成的運(yùn)算符,掌握復(fù)合賦值表達(dá)式轉(zhuǎn)化為賦值表達(dá)式的方法。如n+=100可轉(zhuǎn)化為n=n+100。注意賦值運(yùn)算符和復(fù)合賦值運(yùn)算符的優(yōu)先級僅僅高于逗號運(yùn)算符,結(jié)合性為從右到左例如:有語句inta=5;表達(dá)式a=6值為6,而表達(dá)式a==6結(jié)果為0是表達(dá)式就一定有數(shù)值。賦值表達(dá)式:表達(dá)式數(shù)值是最左邊的數(shù)值,a=b=5;該表達(dá)式的值為5,常量不可以賦值。自加、自減表達(dá)式:假設(shè)a=5,++a(是為6),a++(為5);運(yùn)行的機(jī)理:++a是先把變量的數(shù)值加上1,然后把得到的數(shù)值放到變量a中,然后再用這個++a表達(dá)式的數(shù)值為6,而a++是先用該表達(dá)式的數(shù)值為5,然后再把a(bǔ)的數(shù)值加上1為6,再放到變量a中。進(jìn)行了++a和a++后在下面的程序中再用到a的話都是變量a中的6了。考試口訣:++在前先加后用,++在后先用后加。逗號表達(dá)式:優(yōu)先級別最低;整個表達(dá)式的數(shù)值是逗號最右邊的那個表達(dá)式的數(shù)值。例如:(2,3,4)的表達(dá)式的數(shù)值就是4。有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序運(yùn)行后的輸出結(jié)果是________。A)2,3,3B)2,3,2C)2,3,1D)2,2,19)位運(yùn)算的考查:會有一到兩題的考試題目??偟奶幚矸椒ǎ簬缀跛械奈贿\(yùn)算的題目都要按這個流程來處理(先把十進(jìn)制變成二進(jìn)制再變成十進(jìn)制)。例1:chara=6,b;b=a<<2;這種題目的計算是先要把a(bǔ)的十進(jìn)制6化成二進(jìn)制,再做位運(yùn)算。一定要記住,異或的位運(yùn)算符號。0異或1得到1。0異或0得到0。兩個女的生不出來。1異或1得到0。兩個男的生不出來。考試記憶方法:一男(1)一女(0)才可以生個小孩(1)。一定要記住,在沒有舍去數(shù)據(jù)的時候,<<左移一位表示乘以2;>>右移一位表示除以2。有以下程序
#include<stdio.h>
main()
{shortc=124;
c=c_______;
printf(“%d\n”、C);
}
若要使程序的運(yùn)行結(jié)果為248,應(yīng)在下劃線處填入的是
A)>>2
B)|248
C)&0248
D)<<110)三種取整丟小數(shù)的情況:1、inta=1.6;2、(int)a;3、3/211)字符型和整數(shù)是近親chara=65;printf(“%c”,a);得到的輸出結(jié)果:aprintf(“%d”,a);得到的輸出結(jié)果:65第二章數(shù)據(jù)的輸入輸出 1)printf函數(shù)的格式考查:%d對應(yīng)整型;%c對應(yīng)字符型;%f對應(yīng)單精度等等。寬度的,左對齊等修飾。%ld對應(yīng)longint;%lf對應(yīng)double。2)scanf函數(shù)的格式考察:注意該函數(shù)的第二個部分是&a這樣的地址,不是a,除指針變量名和數(shù)組變量名外;scanf(“%d%d%*d%d”,&a,&b,&c);跳過輸入的第三個數(shù)據(jù)。3)putchar,getchar函數(shù)的考查:chara=getchar()是沒有參數(shù)的,從鍵盤得到你輸入的一個字符給變量a。putchar(‘y’)把字符y輸出到屏幕中。4)如何實(shí)現(xiàn)兩個變量x,y中數(shù)值的互換(要求背下來)不可以是x=y,y=x;要用中間變量t=x;x=y;y=t。5)如何實(shí)現(xiàn)保留三位小數(shù),第四位四舍五入的程序,(要求背下來)這個有推廣的意義,注意x=(int)x這樣是把小數(shù)部分去掉。第三章選擇結(jié)構(gòu)特別要注意:c語言中是用非0表示邏輯真的,用0表示邏輯假的。1)關(guān)系表達(dá)式:表達(dá)式的數(shù)值只能為1(表示為真),或0(表示假)當(dāng)關(guān)系的表達(dá)是為真的時候得到1。如9>8這個是真的,所以表達(dá)式的數(shù)值就是1;2)邏輯表達(dá)式:只能為1(表示為真),或0(表示假)a)共有&&||!三種邏輯運(yùn)算符號。b)!>&&>||優(yōu)先的級別。c)注意短路現(xiàn)象??荚嚤容^喜歡考到。d)要表示x是比0大,比10小的方法。03)if語句可以單獨(dú)出現(xiàn),也可以與else匹配出現(xiàn)。if語句可以嵌套,這時else總是與位于其上面的離他最近的且沒有與else配對的if匹配使用,else不能單獨(dú)出現(xiàn)。在執(zhí)行以下程序時,為了使輸出結(jié)果為t=4,給a和b輸入的值應(yīng)該滿足的條件是()voidmain(){ints,t,a,b;scanf("%d,%d",&a,&b);s=1;t=1;if(a<0)s=s+1;if(a>0)t=s+1;elseif(a==b)t=5;elset=2*s;printf("t=%d\n",t);}a>bB.a<b<0C.0<a<bD.0>a>b有以下程序:voidmain(){inta=0,b=0,c=0,d=0;if(a=1)b=1,c=2;elsed=3;printf("%d,%d,%d,%d\n",a,b,c,d);}程序輸出結(jié)果為()A.0,1,2,0B.0,0,0,3C.1,1,2,0D.編譯有錯4)條件運(yùn)算符:是唯一的三目運(yùn)算符,格式為:表達(dá)式1?表達(dá)式2:表達(dá)式3注意是當(dāng)非0時候是表達(dá)式2的數(shù)值,當(dāng)為0時就是表達(dá)式3的數(shù)值。考試口訣:真前假后。5)switch語句:a)一定要注意有break和沒有break的差別:沒有break時候,只要有一個case匹配了,剩下的都要執(zhí)行,有break則是直接跳出了switch語句。b)switch只可以和break一起用,不可以和continue用。第四章循環(huán)結(jié)構(gòu)1)三種循環(huán)結(jié)構(gòu):a)for();while();do-while()三種。b)for循環(huán)當(dāng)中必須是兩個分號,千萬不要忘記。c)寫程序的時候一定要注意,循環(huán)一定要有結(jié)束的條件,否則成了死循環(huán)。d)do-while()循環(huán)的最后一個while();的分號一定不能夠丟。(當(dāng)心上機(jī)改錯),do-while循環(huán)是至少執(zhí)行一次循環(huán)。2)break和continue的差別記憶方法:break:是打破的意思,(破了整個循環(huán))所以看見break就退出整個一層循環(huán)。continue:是繼續(xù)的意思,(繼續(xù)循環(huán)運(yùn)算),但是要結(jié)束本次循環(huán),就是循環(huán)體內(nèi)剩下的語句不再執(zhí)行,跳到循環(huán)開始,然后判斷循環(huán)條件,進(jìn)行新一輪的循環(huán);即:結(jié)束本次循環(huán),繼續(xù)下一次循環(huán)。以下敘述中正確的是。A)break語句只能用于switch語句題中B)continue語句的作用是:使程序的執(zhí)行流程跳出包含它的所有循環(huán)C)break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)D)在循環(huán)體內(nèi)使用break語句和continue語句的作用相同3)嵌套循環(huán)就是循環(huán)里面還有循環(huán),這種比較復(fù)雜,要一層一層一步一步耐心的計算,一般記住兩層是處理二維數(shù)組的。有以下程序:voidmain(){inti,n=0;for(i=2;i<5;i++){do{if(i%4+1)continue;n++;}while(!i);n++;}printf("n=%d\n",n);}程序執(zhí)行后的輸出結(jié)果是()A.n=5B.n=2C.n=3D.n=4【12】執(zhí)行下面的程序后,a的值為().main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}}A.7B.8C.9D.104)循環(huán)結(jié)構(gòu)的復(fù)習(xí)循環(huán)結(jié)構(gòu)是重點(diǎn),筆試所占分值一般在13分左右,在上機(jī)考試中也是必考點(diǎn),應(yīng)用性很強(qiáng)。要求學(xué)員重點(diǎn)理解并多加練習(xí),領(lǐng)會掌握。5)while((c=getchar())!=’\n’)和while(c=getchar()!=’\n’)的差別先看a=3!=2和(a=3)!=2的區(qū)別:(!=號的級別高于=號所以第一個先計算3!=2)第一個a的數(shù)值是得到的1;第二個a的數(shù)值是3??荚囎⒁恻c(diǎn):括號在這里的重要性。第五章函數(shù)函數(shù):是具有一定功能的一個程序塊;是C語言的基本組成單位。1)函數(shù)的定義、參數(shù)、調(diào)用和返回值(示意圖):main(){inta=5,b=6,c;c=add(a,b);printf(“%d”,c);}調(diào)用函數(shù):a,b是實(shí)參,整個函數(shù)得到一個數(shù)值就是,add函數(shù)的返回數(shù)值。intadd(intx,inty){intz;z=x+y;returnz;}被調(diào)用函數(shù):x,y是形式參數(shù)函數(shù)返回數(shù)值是整型z就是這個add函數(shù)計算后得到的結(jié)果,就是函數(shù)返回給主程序的返回數(shù)值。程序是在從上往下順序執(zhí)行,當(dāng)碰到了函數(shù)add后,把a(bǔ),b的數(shù)值穿給調(diào)用函數(shù),程序暫時中斷等待返回數(shù)值。當(dāng)?shù)玫搅朔祷財?shù)值后,再順序的往下執(zhí)行2)一定要注意參數(shù)之間的傳遞實(shí)參和形參之間傳數(shù)值,和傳地址的差別。(考試的重點(diǎn))傳數(shù)值的話,形參的變化不會改變實(shí)參的變化。傳地址的話,形參的變化就會有可能改變實(shí)參的變化。3)函數(shù)聲明的考查:函數(shù)要“先定義后調(diào)用”,或“先聲明再調(diào)用后定義”。函數(shù)的聲明一定要有:函數(shù)名,函數(shù)的返回類型,函數(shù)的參數(shù)類型。不一定要有:形參的名稱。4)函數(shù)的遞歸調(diào)用函數(shù)直接或間接地調(diào)用自己稱為函數(shù)的遞歸調(diào)用。遞歸調(diào)用必須有一個明確的結(jié)束遞歸的條件。在做遞歸題時可把遞歸的步驟一步步寫下來,不要弄顛倒了,會做簡單遞歸題目即可。有以下程序#include<stdio.h>fun(intx){if(x/2>0)fun(x/2);printf(“%d”,x);}main(){fun(9);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是【12】5)要求掌握的庫函數(shù)sqrt()算術(shù)平方根函數(shù),fabs()絕對值函數(shù),pow()冪函數(shù),sin()正弦函數(shù)。第六章指針1)指針變量指針變量的本質(zhì)是用來放地址,而一般的變量是放數(shù)值的。指針變量可指向任意一種數(shù)據(jù)類型,但不管它指向的數(shù)據(jù)占用多少字節(jié),一個指針變量占用四個字節(jié)。2)指針變量的定義及初始化格式:類型名*指針變量名。指針變量在使用前必須要初始化,把一個具體的地址賦給它,否則引用時會有副作用,如果不指向任何數(shù)據(jù)就賦“空值”NULL。兩種初始化方式:方法一:inta=2,*p=&a; (定義的同時初始化)方法二:inta=2,*p; (定義之后初始化)p=&a;&是取地址符,*是間接訪問(取內(nèi)容)運(yùn)算符,它們是互逆的兩個運(yùn)算符。在指針變量名前加間接訪問運(yùn)算符就等價它所指向的量。指針變量是存放地址的。并且指向哪個就等價哪個,所有出現(xiàn)*p的地方都可以用它等價的代替。例如:inta=2,*p=&a;*p=*p+2;(由于*p指向變量a,所以指向哪個就等價哪個,這里*p等價于a,可以相當(dāng)于是a=a+2)4)指針的運(yùn)算*p++和(*p)++之間的差別:*p++是地址變化,(*p)++是指針變量所指的數(shù)據(jù)變化。一個指針變量加一個整數(shù)不是簡單的數(shù)學(xué)相加,而是連續(xù)移動若干地址。當(dāng)兩個指針指向同一數(shù)組時,它們可以比較大小進(jìn)行減法運(yùn)算。若有語句:char*line[5];,以下敘述中正確的是()A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為char的指針變量B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組C.定義line是一個指針數(shù)組,該句中*號稱為間址運(yùn)算符D.定義line是一個指向字符型函數(shù)的指針已定義以下函數(shù)intfun(int*p){ return*p;}fun函數(shù)的返回值是()A不確定的值 B.一個整數(shù) C.形參p中存放值 D.形參p的地址值有以下程序voidswap(char*x,char*y){ chart; t=*x; *x=*y; *y=t;}main(){ char*s1=”abc”,*s2=”123”; swap(s1,s2); printf(“%s,%s\n”,s1,s2);}程序執(zhí)行后的輸出結(jié)果是()A.123,ABC B.ABC,123 C.1bc,a23 D.321,cba有以下程序main(){ inta=1,b=3,c=5; int*p1=&a,*p2=&b,*p=&c; *p=*p1**p2; printf(“%d\n”,c);}執(zhí)行后的輸出結(jié)果為()A.1 B.2 C.3 D.4第七章數(shù)組1一維數(shù)組的重要概念:對a[10]這個數(shù)組的討論。1、a表示數(shù)組名,是第一個元素的地址,也就是元素a[0]的地址。2、a是地址常量,所以只要出現(xiàn)a++,或者是a=a+2賦值的都是錯誤的。3、a是一維數(shù)組名,所以它是列指針,也就是說a+1是跳一列。對a[3][3]的討論。1、a表示數(shù)組名,是第一個元素的地址,也就是元素a[0][0]的地址。2、a是地址常量,所以只要出現(xiàn)a++,或者是a=a+2賦值的都是錯誤的。3、a是二維數(shù)組名,所以它是行指針,也就是說a+1是跳一行。4、a[0]、a[1]、a[2]也都是地址常量,不可以對它進(jìn)行賦值操作,同時它們都是列指針,a[0]+1,a[1]+1,a[2]+1都是跳一列。5、注意a和a[0]、a[1]、a[2]是不同的,它們的基類型是不同的。前者是一行元素,后三者是一列元素。2、二維數(shù)組做題目的技巧:如果有a[3][3]={1,2,3,4,5,6,7,8,9}這樣的題目。步驟一:把他們寫成:第一列第二列第三列a[0]123—>第一行a[1]456—>第二行a[2]789—>第三行步驟二:按照以下方式理解:*(a[0]+1)我們就知道是第一行的第一個元素往后面跳一列,那么這里就是a[0][1]元素,所以是1。*(a[1]+2)我們就知道是第二行的第一個元素往后面跳二列。那么這里就是a[1][2]元素,所以是6。一定記?。褐灰嵌S數(shù)組的題目,一定是寫成如上的格式,再去做題目,這樣會比較簡單。3、數(shù)組的初始化,一維和二維的,一維可以不寫,二維第二個一定要寫inta[]={1,2}合法。inta[][4]={2,3,4}合法。但inta[4][]={2,3,4}非法。4、數(shù)組元素的引用數(shù)組元素的下標(biāo)從0開始,到數(shù)組長度減1結(jié)束。所以inta[5];中數(shù)組最后一個元素是a[4]。要把數(shù)組元素看作一個整體,可以把a(bǔ)[4]當(dāng)作一個整型變量。5、二維數(shù)組中的行指針inta[1][2];其中a現(xiàn)在就是一個行指針,a+1跳一行數(shù)組元素。搭配(*)p[2]指針a[0],a[1]現(xiàn)在就是一個列指針。a[0]+1跳一個數(shù)組元素。搭配*p[2]指針數(shù)組使用還有記住脫衣服法則:a[2]變成*(a+2),a[2][3]變成*(a+2)[3]再可以變成*(*(a+2)+3)這個思想很重要!若有定義語句:inta[3][6];,按在內(nèi)存中存放順序,a數(shù)組的第10個元素是()A.[0][4] B.a[1][3] C.a[0][3] D.a[1][4]若有定義語句:intm[]={5,4,3,2,1},i=4;,則下面對m數(shù)組元素的引用中錯誤的是()A.m[--i] B.m[2*2] C.m[m[0]] D.m[m[i]]第八章字符串【考點(diǎn)1】字符串常量及表示字符串常量是由雙引號括起來的一串字符,如”ABC”。在存儲字符串時,系統(tǒng)會自動在其尾部加上一個空值’\0’,空值也要占用一個字節(jié),也就是字符串”ABC”需要占四個字節(jié)?!究键c(diǎn)2】字符數(shù)組C語言沒有字符串變量,只能采用字符數(shù)組來存儲字符串。數(shù)組的大小應(yīng)該比它將要實(shí)際存放的最長字符串多一個元素,從而存放’\0’?!究键c(diǎn)3】字符串賦值可以用下面的形式進(jìn)行賦值:charstr[]=”Hello!”;或char*p;p=”Hello!”;,但不能用下面的形式:charstr[10];str=”Hello”;因?yàn)閟tr是一個地址常量,不能進(jìn)行賦值操作?!究键c(diǎn)4】字符串的輸入與輸出可以用scanf和printf函數(shù),如scanf(”%s”,str);,也可用專門處理字符串的兩個函數(shù)gets和puts函數(shù),還可以對字符數(shù)組逐個元素進(jìn)行賦值,但一定要在最后賦一個’\0’。使用gets函數(shù)可以接收空格,使用puts函數(shù)在最后輸出一個換行?!究键c(diǎn)5】字符串函數(shù)要掌握的四個字符串函數(shù):字符串拷貝函數(shù)strcpy(),求字符串長度函數(shù)strlen(),字符串鏈接函數(shù)strcat(),字符串比較函數(shù)strcmp()。使用這些函數(shù)需在預(yù)處理部分包含頭文件”string.h”。【考點(diǎn)6】strlen()函數(shù)和關(guān)鍵字sizeof例1:charstr[10]=”Hello”;sizeof(str)的值為10(數(shù)組長度),而strlen(str)的值為5(字符串長度)。例2:chara[]={‘a(chǎn)’,’b’,’c’};數(shù)組長度sizeof(a)為3,字符串長度不定。chara[5]={‘a(chǎn)’,’b’,’c’}數(shù)組長度sizeof(a)為5,字符串長度為3。【考點(diǎn)7】scanf函數(shù)和gets函數(shù)接收字符串的差異如果輸入的是goodgoodstudy!那么scanf(“%s”,a);只接收good考點(diǎn):不可以接收空格。gets(a);會接收goodgoodstudy!考點(diǎn):可以接收空格。有以下程序#include<stdio.h>#include<string.h>main(){ charstr[][20]={“One*World”,”O(jiān)ne*Dream!”},*p=str[1]; printf(“%d,”,strlen(p)); printf(“%s\n”,p);}程序運(yùn)行后的輸出結(jié)果是()A.9,One*World B.9,One*Dream C.10,One*Dream!D.10,One*World有以下函數(shù)intfun(char*s){ char*t=s; while(*t++); return(t-s);}該函數(shù)的功能是A.比較兩個字符串的大小B.計算s所指字符串占用內(nèi)存字節(jié)的個數(shù)C.計算s所指字符串的長度D.將s所指字符串復(fù)制到字符串t中有以下程序main(){ chars[]={”aeiou”},*ps; ps=s; printf(“%c\n”,*ps+4);}程序運(yùn)行后的輸出結(jié)果為()A.a B.e C.u D.元素s[4]的地址第九章文件【考點(diǎn)1】文件的基本知識文件由數(shù)據(jù)流構(gòu)成,可以組成文本文件(也叫ASCII碼文件)和二進(jìn)制文件;對于同一數(shù)據(jù)而言,二進(jìn)制格式的文件所需的存儲空間比文本文件所需存儲空間更小,且二進(jìn)制文件訪問速度快于文本文件。【考點(diǎn)2】文件的打開與關(guān)閉文件指針是一個指向結(jié)構(gòu)體類型的指針,定義格式為:FILE*指針變量名(FILE*fp);在使用文件時,都需要先定義文件指針。文件的打開形式如下:FILE*fp;fp=fopen(“c:\\lab.c”,”rb”);fopen函數(shù)的前面一部分為文件名,后面一部分為文件的打開方式;識記常見的打開方式,其中r代表讀,w代表寫,a代表添加,b代表二進(jìn)制方式。fclose(fp)將文件指針fp所指向的文件關(guān)閉。【考點(diǎn)3】文件函數(shù)判斷文件結(jié)束feof函數(shù),移動文件指針位置fseek函數(shù),獲得文件位置ftell函數(shù),文件位置移到開頭rewind函數(shù),文件字符輸入輸出fgetc函數(shù)和fputc函數(shù),文件輸入輸出fscanf函數(shù)和fprintf函數(shù),文件字符串輸入輸出fgets函數(shù)和fputs函數(shù),讀寫二進(jìn)制文件fread函數(shù)和fwrite函數(shù)。以上函數(shù)要求知道格式會用,清楚是用于二進(jìn)制文件還是文本文件,要把教材文件這章仔細(xì)復(fù)習(xí)下,不要在考試的時候把這些文件函數(shù)搞混了。下列關(guān)于文件的敘述中正確的是()A.文件由一系列數(shù)據(jù)依次排列,只能構(gòu)成二進(jìn)制文件B.文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件C.文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件D.文件由字符序列組成,其類型只能是文本文件有以下程序#include<stdio.h>main(){ FILE*fp; intk,n,a[6]={1,2,3,4,5,6}; fp=fopen(“d2.dat”,”w”); fprintf(fp,”%d%d%d\n”,a[0],a[1],a[2]); fprintf(fp,”%d%d%d\n”,a[3],a[4],a[5]); fclose(fp); fp=fopen(“d2.dat”,”r”); fscanf(fp,”%d%d”,&k,&n); printf(“%d%d\n”,k,n); fclose(fp);}程序運(yùn)行后的輸出結(jié)果是()A.12 B.14 C.1234 D.123456第十章對C語言的深入討論【考點(diǎn)1】編譯預(yù)處理凡以#開頭的這一行,都是編譯預(yù)處理命令行,編譯預(yù)處理不加分號,不占運(yùn)行時間。宏替換僅是簡單的文本替換,如#definef(x)(x)*(x)和#definef(x)x*x替換f(2+2)時就有區(qū)別,前者展開為(2+2)*(2+2),后者為2+2*2+2。如果源文件f2.c中有#include”f1.c”可以理解為把源文件f1.c原樣包含到f2.c中,使f1.c和f2.c融合到一起成為一個C程序編譯。所以一個C程序必有主函數(shù),但一個C源文件未必有主函數(shù)?!究键c(diǎn)2】標(biāo)識符作用域局部變量是在函數(shù)內(nèi)或復(fù)合語句內(nèi)定義的變量,作用域?yàn)槎x它的函數(shù)內(nèi)。局部變量有三種類型:自動auto,寄存器register和靜態(tài)static。自動變量隨著函數(shù)的使用與否創(chuàng)建消失;寄存器變量分配在cpu中,沒有內(nèi)存地址;靜態(tài)變量占用固定存儲單元,在程序執(zhí)行過程不釋放,直到程序運(yùn)行結(jié)束。全局變量是在函數(shù)外定義的變量,作用域從定義它的位置到整個源文件結(jié)束為止,生存期為整個程序運(yùn)行期間。全局變量都是靜態(tài)變量?!究键c(diǎn)3】動態(tài)存儲分配malloc(size)用來創(chuàng)建連續(xù)size個字節(jié)存儲區(qū),返回值類型為void*型。malloc函數(shù)常用于動態(tài)創(chuàng)建鏈表結(jié)點(diǎn),如int*p;p=(int*)malloc(sizeof(int));。calloc(n,size)創(chuàng)建n個同一類型的存儲空間,可以理解為n個malloc。free(p)釋放動態(tài)分配的存儲單元?!究键c(diǎn)4】main函數(shù)的參數(shù)和函數(shù)指針對于main(intargc,char**argv){}而言,只要掌握兩個參數(shù)含義即可,即第一個參數(shù)是表示輸入的字符串的數(shù)目,第二個參數(shù)是指向存放的字符串。函數(shù)指針知識點(diǎn),會做書本140頁的習(xí)題1、2、3即可。有以下程序main(){ intn=0,i; for(i=1;i<argc;i++) n=n*10+*argv[i]-‘0’; printf(“%d\n”,n);}編譯鏈接生成可執(zhí)行文件tt.exe。若運(yùn)行時輸入以下命令行tt12345678程序運(yùn)行后的輸出結(jié)果是()A.12 B.12345 C.12345678 D.136設(shè)有宏定義:#defineIsDIV(k,n)((k%n==1)?1:
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 左旋多巴注射液-藥品臨床應(yīng)用解讀
- 2024年初中語文名句默寫試題及答案
- 2025年行政執(zhí)法知識競賽題庫及答案(共90題)
- 英語-小升初英語6月18日題目
- 法碩法學(xué)-《全國法律碩士聯(lián)考》預(yù)測試卷8
- 畢業(yè)季相冊青春紀(jì)念冊演示模板
- 直播策劃與運(yùn)營實(shí)務(wù)(第二版)教案 項(xiàng)目五任務(wù)三、撰寫直播腳本
- (高清版)DB12 046.53-2011 產(chǎn)品單位產(chǎn)量綜合能耗計算方法及限額 第53部分:電焊絲
- 二年級數(shù)學(xué)計算題專項(xiàng)練習(xí)集錦
- IT行業(yè)人物介紹
- (正式版)JTT 421-2024 港口固定式起重機(jī)安全要求
- 2024屆浙江省名校新高考研究聯(lián)盟高三第三次聯(lián)考英語試題含答案
- 混凝土外加劑試驗(yàn)原始記錄
- 華為5G認(rèn)證考試(H35-460)題庫及答案
- (正式版)JBT 14932-2024 機(jī)械式停車設(shè)備 停放客車通-用技術(shù)規(guī)范
- 第6課 學(xué)書有法 課件-2023-2024學(xué)年高中美術(shù)人教版(2019)選擇性必修2 中國書畫
- 貴州省初中《體育》學(xué)業(yè)水平考試參考題庫(含答案)
- 2024年天津?qū)I居嬎銠C(jī)考試真題試卷及答案
- 合同的變更和解除條款
- 青島版數(shù)學(xué)五年級下冊第二單元《分?jǐn)?shù)的意義和性質(zhì)》教學(xué)評一致性的單元整體備課
- 2023年6月新高考天津卷英語試題真題及答案解析(精校打印版)
評論
0/150
提交評論