2009年3月計算機(jī)二級C語言筆試試題及解析_第1頁
2009年3月計算機(jī)二級C語言筆試試題及解析_第2頁
2009年3月計算機(jī)二級C語言筆試試題及解析_第3頁
2009年3月計算機(jī)二級C語言筆試試題及解析_第4頁
2009年3月計算機(jī)二級C語言筆試試題及解析_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2009年3月計算機(jī)二級C語言筆試試題及解析 2009年3月計算機(jī)二級C語言筆試試題及解析 一、選擇題(每題2分,共計70分) 1.下列敘述中正確的是 (D)A)棧是先進(jìn)先出的線性表B)隊列是先進(jìn)后出的線性表C)循環(huán)隊列是非線性結(jié)構(gòu)D)有序線性表即可以采用順序存儲結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)解析:棧是“先進(jìn)后出”,隊列是“先進(jìn)先出”。循環(huán)隊列是線性結(jié)構(gòu), 2. 支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是 (A)A)棧 B)樹 C)隊列 D)二叉樹解析:棧支持子程序的調(diào)用,這種調(diào)用符合棧的存儲特點(diǎn)。 3. 某二叉樹有5個讀為2的結(jié)點(diǎn),則該二叉樹中的葉子結(jié)點(diǎn)數(shù)是 (C)A)10 B)8 C)6 D)4解析:對于任

2、何一個二叉樹,如果其葉子結(jié)點(diǎn)數(shù)是n1,度為2的結(jié)點(diǎn)為n2,則它的葉子結(jié)點(diǎn)數(shù)為n1=n2+1。 4. 下列排序方法中,最壞情況下比較次數(shù)最少的是 (D)A)冒泡排序 B)簡單選擇排序 C)直接插入排序 D)堆排序解析:A,B,C,的最壞情況次數(shù)都是n(n-1)/2,而D選項的最壞情況為O(nlog2n) 。 5. 軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下列屬于應(yīng)用軟件的是(C)A)編譯程序 B)操作系統(tǒng) C)教務(wù)管理系統(tǒng) D)匯編程序解析:A,B,D都屬于系統(tǒng)軟件。 6. 下面敘述中錯誤的是 (A)A)軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤B)對被調(diào)試程序進(jìn)行錯誤定位是程序

3、調(diào)試的必要步驟C)程序調(diào)試也成為DebugD)軟件測試應(yīng)嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性解析:軟件測試的目的是發(fā)現(xiàn)錯誤沒有改正錯誤這個要求。 7. 耦合性和內(nèi)聚性是對模塊獨(dú)立性度量的兩個標(biāo)準(zhǔn)。下列敘述中正確的是 (B)A)提高耦合性降低內(nèi)聚性有利于提高模塊的獨(dú)立性B)降低耦合性提高內(nèi)聚性有利于提高模塊的獨(dú)立性C)耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度D)內(nèi)聚性是指模塊間互相連接的緊密程度解析:A答案說反了,C與D答案也互相倒置了。 8. 數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是 (A)A)數(shù)據(jù)庫設(shè)計 B)數(shù)據(jù)庫系統(tǒng)設(shè)計 C)數(shù)據(jù)庫維護(hù) D)數(shù)據(jù)庫管理員培訓(xùn)解析:數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題就是

4、設(shè)計一個能滿足用戶需求、性能良好的數(shù)據(jù)庫,這就是數(shù)據(jù)庫設(shè)計 9. 有兩個關(guān)系R,S如下: 由關(guān)系R通過運(yùn)算得到關(guān)系S,則所使用的運(yùn)算是(B)A)選擇 B)投影 C)插入 D)連接解析:選擇運(yùn)算時從關(guān)系中找出滿足給定條件的那些元素組,投影運(yùn)算是從關(guān)系模型中挑選若干屬性組成新的關(guān)系,連接運(yùn)算時二目運(yùn)算符,需要兩個關(guān)系作為操作對象。 10. 將E-R圖轉(zhuǎn)換為關(guān)系模式時,實體和聯(lián)系都可以表示為 (C)A)屬性 B)鍵 C)關(guān)系 D)域解析:見書P108頁原話。 11.一下選項中合法的標(biāo)識符是 (C)A)1_1 B)1-1 C)_11 D)1_ _解析:標(biāo)識符是由字母、數(shù)字和下劃線組成,只能由字母或下劃

5、線開頭。 12. 若函數(shù)中有定義語句:int k;,則 (B)A)系統(tǒng)將自動給k賦初值0B)這是k中的值無定義C)系統(tǒng)將自動給k賦初值-1D)這時k中無任何值解析:只開辟了儲存單元,但是儲存單元里沒有放任何值。 13. 如下選項中,能用作數(shù)據(jù)常量的是(D)A)o115 B)0118 C)1.5e1.5 D)115L解析:整型常量和實型常量統(tǒng)稱為數(shù)值型常量。A答案前面為字母o,B答案是八進(jìn)制數(shù)但最后一位為8,最大只能為7。C答案為指數(shù)形式,但是e后的數(shù)字必須是整數(shù)。 14. 設(shè)有定義:int x=2;,一下表達(dá)式中,值不為6的是 (D)A)x*=x+1 B)X+,2*x C)x*=(1+x) D

6、)2*x,x+=2解析:2*x后面有個逗號并沒給x賦值,x+=2運(yùn)算后x的值是4 15. 程序段:int x=12; double y=3.;printf(%d%8.6f,x,y);的輸出結(jié)果是(A)A)123. B)12 3. C)12,3. D)123.解析:B答案12后不該有空格,C答案的12后多了個逗號,D答案的小數(shù)點(diǎn)后有7位數(shù)了,要求只輸出六位小數(shù)。 16. 若有定義語句:double x,y,*px,*py;執(zhí)行了px=&x;py=&y;之后,正確的輸入語句是(C)A)scanf(%f%f,x,y); B)scanf(%f%f &x,&y);C)scanf(%lf%le,px,py

7、); D)scanf(%lf%lf,x,y);解析:只有C答案是真確的輸入形式。AB答案的%f都應(yīng)該為%lf,D答案的xy前面都應(yīng)加上&符號。 17. 如下是if語句的基本形式:if(表達(dá)式)語句其中表達(dá)式(D)A)必須是邏輯表達(dá)式 B)必須是關(guān)系表達(dá)式C)必須是邏輯表達(dá)式或關(guān)系表達(dá)式 D)可以是任意合法的表達(dá)式解析:可以使任意合法表達(dá)式,如果表達(dá)式結(jié)果為0則為假,為其他值則為真。 18. 有以下程序#includemain()intx;scanf(%d,&x);if(x=3);elseif(x!=10)printf(%dn,x);程序運(yùn)行時,輸入的值在哪個范圍才會有輸出結(jié)果(B)A)不等于1

8、0的整數(shù) B)大于3且不等于10的整數(shù)C)大于3或等于10的整數(shù) D)小于3的整數(shù) 19. 有以下程序#includemain()inta=1,b=2,c=3,d=0;if(a=1&b+=2)if(b!=2|c-!=3)printf(%d,%d,%dn,a,b,c);elseprintf(%d,%d,%dn,a,b,c);elseprintf(%d,%d,%dn,a,b,c);程序運(yùn)行后輸出結(jié)果是(C)A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1 20. 如下程序段中的變量已正確定義for(i=0;i4;i+,j+)for(k=1;k3;k+);printf(*);程序段的輸

9、出結(jié)果是(D)A)* B)* C)* D)*解析:第二個for循環(huán)后面沒有循環(huán)體,什么也不輸出,最后輸出的就是最后一個語句的一個*號21.有以下程序#includemain()char*s=ABC;doprintf(%d,*s);s+;while(*s);注意:字母A的ASCII碼值為65。程序運(yùn)行后的輸出結(jié)果是(C)A)5670 B) C)567 D)ABC解析:do-while循環(huán)為“直到型循環(huán)”先執(zhí)行后判斷。程序執(zhí)行3次后指針指向了0,與10求余之后為0,就結(jié)束了循環(huán)。所以得到567三個值 22. 設(shè)變量已正確定義,以下不能統(tǒng)計出一行中輸入字符個數(shù)(不包含回車符)的程序段是 (D)A)n

10、=0;while(ch=getchar()!=n)n+; B)n=0;while(getchar()!=n)n+;C)for(n=0;getchar()!=n;n+); D)n=0;for(ch=getchar();ch!=n;n+);解析:D選項中ch=getchar()是給變量ch賦初值,如果輸入回車,則程序就循環(huán)一次,如果輸入一個非回車字符,則程序進(jìn)入死循環(huán)。因此D選項不能統(tǒng)計處想要的結(jié)果。 23. 有以下程序#includemain()inta1,a2;charc1,c2;scanf(%d%c%d%c,&a1,&c1,&a2,&c2);printf(%d,%c,%d,%c,a1,c1,

11、a2,c2);若通過鍵盤輸入,使得a1的值為12,a2的值為34,c1的值為字符a,c2的值為字符b,程序輸出結(jié)果是:12,a,34,b 則正確的輸入格式是(以下_代表空格,代表回車)(A)A) 12a34b B) 12_a_34_bC) 12,a,34,b D) 12_a34_b解析:在進(jìn)行scanf輸入時,輸入的格式必須和格式控制區(qū)域內(nèi)(“”內(nèi))的格式一致,空格在此也要充當(dāng)一個有效的字符,所以不能用空格鍵充當(dāng)輸入時的各個字符的分隔鍵。依次順序輸入即可。所以A為正確答案。 24. 有以下程序#includeintf(intx,inty)return(y-x)*x);main()inta=3,

12、b=4,c=5,d;d=f(f(a,b),f(a,c);printf(%dn,d);程序運(yùn)行后的輸出結(jié)果是(B)A)10 B)9 C)8 D)7解析:先把a(bǔ),b,c,的值帶入到f(a,b),f(a,c)中,算得f(a,b)=3,f(a,c)=6.再計算f(3,6),算得d=9 25. 有以下程序#includevoidfun(char*s)while(*s)if(*s%2=0)printf(%c,*s);s+;main()chara=good;fun(a);printf(n);注意:字母a的ASCII碼值為97,程序運(yùn)行后的輸出結(jié)果是(A)A)d B)go C)god D)good解析:fun

13、函數(shù)的功能是輸出ASCII碼中能被2整除的字符,g的ASCII碼為103,o的ASCII碼為111,d的ASCII碼為100,只有d滿足。因此本答案為A 26.有以下程序#includevoidfun(int*a,int*b)int*c;c=a;a=b;b=c;main()intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf(%d,%d,*p,*q);fun(&x,&y);printf(%d,%dn,*p,*q);程序運(yùn)行后輸出的結(jié)果是(B)A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3解析:fun函數(shù)的功能是交換形式參數(shù)的值,即交換指針

14、變量a和b的值,但是fun函數(shù)并不能夠交換實參的值,因此fun(p,q)不能交換p和q的值,所以第一個printf語句的輸出為3,5。第二個fun函數(shù)對x和y的地址進(jìn)行了操作,同樣不能交換x和y的值,并不能影響p和q指針指向的數(shù)據(jù),因此第二個printf語句的輸出也是3,5。 27.有以下程序#includevoidf(int*p,int*q);main()intm=1,n=2,*r=&m;f(r,&n);printf(%d,%d,m,n);voidf(int*p,int*q)p=p+1;*q=*q+1;程序運(yùn)行后的輸出結(jié)果是(A)A)1,3 B)2,3 C)1,4 D)1,2解析:在f(in

15、t *p,int*q)函數(shù)中,執(zhí)行p=p+1是將p所對應(yīng)的地址加1,而*q=*q+1是將q所指向的n的地址所對應(yīng)的值加1,所以m的得知所對應(yīng)的值沒有變,而n的值則為3了。 28. 以下函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù)#includevoidfun(int*w,intn)inti;for(i=0;in;i+)_printf(%d,wi);printf(n);下劃線出應(yīng)填入的語句是(C)A)if(i/8=0) printf(n); B)if(i/8=0) continue;C)if(i%8=0) printf(n); D)if(i%8=0) continue;解析:在C語言循環(huán)語句中的continu

16、e用來跳出當(dāng)次循環(huán)而進(jìn)行下一次循環(huán),因此B,D都不對。if(i/8=0)是指當(dāng)i除以8的得數(shù) 0,即i的值小于8時,打印換行,因此A不正確。if(i%8=0)是指當(dāng)i除以8的余數(shù)為 0,即間隔8個數(shù)就打印換行,因此選項C正確。29. 若有以下定義int x10,*pt=x;則對數(shù)組元素的正確引用是(B)A)*&x10 B)*(x+3) C)*(pt+10) D)pt+3解析:*與&放在一起作用抵消,所以A選項錯誤,最大只能引用到x9, *(pt+i)表示引用指針pt所指元素后的第i個元素。所以C答案錯誤,最大只能為*(pt+9),沒有D答案的引用形式,所以只有B答案正確。 30. 設(shè)有定義:c

17、har s81;int i=0;,以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是(C)A)gets(s); B)while(si+=getchar()!=n);si=0;C)scanf(%s,s); D)doscanf(%c,&si);while(si+!=n);si=0;解析:以%s的形式輸入時,遇到空格計算機(jī)就認(rèn)為停止了輸入,后面的字符就算無效字符,所以C答案不能達(dá)到題目要求的目的。 31.有以下程序#includemain()char*a=abcd,ef,gh,ijk;inti;for(i=0;i4;i+)printf(%c,*ai);程序運(yùn)行后的輸出結(jié)果是(

18、A)A)aegi B)dfhk C)dfhk D)abcdefghijk解析:a為一個指針數(shù)組,其中的每一個元素都是一個指針。 程序的功能是分別打印4個字符的首字母。因此A為真確答案。 32. 以下選項中正確的語句組是 (D)A)char s;s=BOOK!; B)char *s;s=BOOK!;C)char s10;s=BOOK!; D)char *s;s=BOOK!;解析:A與C答案錯誤情況相同,應(yīng)該在定義的時候直接付初值char s=BOOK!或char s10=BOOK!,B不加 就可以了。 33. 有以下程序#includeintfun(intx,inty)if(x=y)return

19、(x);elsereturn(x+y)/2);main()inta=4,b=5,c=6;printf(%dn,fun(2*a,fun(b,c);程序運(yùn)行后的輸出結(jié)果是(B)A)3 B)6 C)8 D)12 解析:fun 函數(shù)的功能是求兩個整數(shù)的平均值,返回值認(rèn)為整數(shù)。34. 設(shè)函數(shù)中有整型變量n,為保證其在未賦初值的情況下初值為0,應(yīng)該選擇的存儲類別是 (C)A)auto B)register C)static D)auto 或register解析:static(靜態(tài)局部變量);如果定義靜態(tài)局部變量時不賦值,則編譯時自動賦初值為0(對數(shù)據(jù)型變量)或空字符(對字符變量)。 35. 有以下程序#i

20、ncludeintb=2;intfun(int*k)b=*k+b;return(b);main()inta10=1,2,3,4,5,6,7,8,i;for(i=2;i4;i+)b=fun(&ai)+b;printf(%d,b);printf(n);程序運(yùn)行后的輸出結(jié)果是(C)A)10 12 B)8 10 C)10 28 D)10 16解析:b為全局變量,在第一次執(zhí)行for循環(huán)后b的值變?yōu)?0并輸出。第二次執(zhí)行for循環(huán)后b的值變?yōu)?8。因此選擇C答案。 36. 有以下程序#include#definePT3.5;#defineS(x)PT*x*x;main()inta=1,b=2;printf

21、(%4.1fn,S(a+b);程序運(yùn)行后的輸出結(jié)果是(D)A)14.0 B)31.5 C)7.5 D)程序有錯無輸出結(jié)果解析:本題目考查宏定義的用法,進(jìn)行宏定義時語句不能用分號結(jié)束,否則會出現(xiàn)誤。 37. 有以下程序#includestructordintx,y;dt2=1,2,3,4;main()structord*p=dt;printf(%d,+p-x);printf(%dn,+p-y);程序的運(yùn)行結(jié)果是(B)A)1,2 B)2,3 C)3,4 D)4,1解析:p-x初始時為1,因為“-”的優(yōu)先級大于“+”,所以先計算p-x的值加1等于2并輸出,在計算p-y的值加1等于3并輸出。因此答案選

22、擇B 38. 設(shè)有宏定義:#define IsDIV(k,n) (k%n=1)?1:0)且變量m已正確定義并賦值,則宏調(diào)用:IsDIV(m,5)&IsDIV(m,7)為真時所要表達(dá)的是(D)A)判斷m是否能被5或者7整除 B)判斷m是否能被5和7整除C)判斷m被5或者7整除是否余1 D)判斷m被5和7整除是否都余1解析:(k%n=1)?1:0是C語言中唯一的三目運(yùn)算符,表示k%n=1成立時整體表達(dá)式結(jié)果為1,否則為0。&為邏輯與符號,它的運(yùn)算規(guī)則為符號兩邊同真則整體表達(dá)式為真。所以只D答案為正確選項。 39. 有以下程序#includemain()inta=5,b=1,t;t=(a2)|b;p

23、rintf(%dn,t);程序運(yùn)行后的輸出結(jié)果是(A)A)21 B)11 C)6 D)1 40. 有以下程序#includemain()FILE*f;f=fopen(filea.txt,w);fprintf(f,abc);fclose(f);若文本文件filea.txt中原有內(nèi)容為:hello,則運(yùn)行以上程序后,文件filea.txt的內(nèi)容為 (C)A)helloabc B)abclo C)abc D)abchello 二、填空題(每空2分,共計30分)1.假設(shè)用一個長度為50的數(shù)組(數(shù)組元素的下標(biāo)從0到49)作為棧的存儲空間,棧底指針bottom指向棧底元素,棧頂指針top指向棧頂元素,如果

24、bottom=49,top=30(數(shù)組下標(biāo)),則棧中具有【20】個元素。解析:棧中的元素都是依次挨個儲存的,所以棧里的元素個數(shù)為4930+1=20 2. 軟件測試可分為白盒測試和黑盒測試?;韭窂綔y試屬于【白盒】測試 。3. 符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是:選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和【順序結(jié)構(gòu)】。4. 數(shù)據(jù)庫系統(tǒng)的核心是【數(shù)據(jù)庫管理系統(tǒng)】 。5. 在E-R圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實體聯(lián)系的是【菱形】框 。解析:各個圖形的作用見教材6. 表達(dá)式(int)(double)(5/2)+2.5)的值是【4】 。7. 若變量x,y已定義為int類型且x的值為99,y的值為9,請將輸出

25、語句printf(【x/y=%d】,x/y); 補(bǔ)充完整,使其輸出的計算結(jié)果形式為: x/y=11。8. 有以下程序#includemain()charc1,c2;scanf(%c,&c1);while(c190)scanf(%c,&c1);c2=c1+32;printf(%c,%cn,c1,c2);程序運(yùn)行輸入65回車后,能否輸出結(jié)果,結(jié)束運(yùn)行(請回答能或不能)【不能】9. 一下程序運(yùn)行后的輸出結(jié)果是【s=0】#includemain()intk=1,s=0;doif(k%2)!=0)continue;s+=k;k+;while(k10);printf(s=%dn,s);10. 下列程序運(yùn)行時,若輸入labcedf2df輸出結(jié)果為【1AbCeDf2dF】#includemain()chara=0,ch;while(ch=getch()!=n)if(a%2!=0&(ch=a&ch=z)ch=ch-a+A;a+;putchar(ch);printf(n);11. 有以下程序,程序執(zhí)行后,輸出結(jié)果是【】#includevoidfun(int*a)a0=a1;main()inta10=10,9,8,7,6,5,4,3,2,1,i;for(i=2;i=0;i-)fun(&ai);for(i=0;i10;i+)printf

溫馨提示

  • 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

提交評論