二級C語言真題2017年09月_第1頁
二級C語言真題2017年09月_第2頁
二級C語言真題2017年09月_第3頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、二級C語言真題2017年09月-(3)(總分:100.00,做題時間:90分鐘)1. 一、選擇題(總題數(shù):40,分?jǐn)?shù):40.00)設(shè)某棵樹的度為3,其中度為3,1,0的節(jié)點個數(shù)分別為3,4,15。則該樹中總節(jié)點數(shù)為。(分?jǐn)?shù):1.00)A. 22B. 30VC. 35不可能有這樣的樹解析:解析在樹結(jié)構(gòu)中,一個節(jié)點所擁有的后件個數(shù)稱為該節(jié)點的度,所有節(jié)點中最大的度稱為樹的度,樹中的節(jié)點數(shù)即為樹中所有節(jié)點的度數(shù)之和再加1。假設(shè)本題中度為2的節(jié)點數(shù)為n,總節(jié)點數(shù)為m,m=33+1X4+nX2+1,葉子節(jié)點數(shù)15=m-(3+4+n),得n=8,則m=9+4+82+1=3Q故答案為B選項。2. 線性表的長

2、度為n。在最壞情況下,比較次數(shù)為n-1的算法是。(分?jǐn)?shù):1.00)A. 尋找最大項VB. 同時尋找最大項與最小項C. 順序查找有序表的插入解析:解析線性表的長度為n,在最壞情況下,尋找最大項的比較次數(shù)為n-1。故答案為A選項。3. 下列敘述中正確的是。(分?jǐn)?shù):1.00)A. 循環(huán)隊列是隊列的鏈?zhǔn)酱鎯Y(jié)構(gòu)B. 能采用順序存儲的必定是線性結(jié)構(gòu)C. 所有的線性結(jié)構(gòu)都可以采用順序存儲結(jié)構(gòu)V具有兩個以上指針的鏈表必定是非線性結(jié)構(gòu)解析:解析循環(huán)隊列就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間,它是隊列的順序存儲結(jié)構(gòu)形式。對于滿二叉樹與完全二叉樹也可以按層次進(jìn)行順序存儲。有兩個以上指

3、針的鏈表,是線性還是非線性,取決于指針域的指向。所有的線性結(jié)構(gòu)都可以采用順序存儲結(jié)構(gòu)。故答案為C選項。4. 設(shè)表的長度為n。在下列結(jié)構(gòu)所對應(yīng)的算法中,最壞情況下時間復(fù)雜度最低的是。(分?jǐn)?shù):1.00)A. 希爾排序B. 有序鏈表查找C. 堆排序循環(huán)鏈表中尋找最大項V解析:解析最壞情況下,希爾排序所需要比較次數(shù)為n1.5,循環(huán)鏈表中尋找最大項需要n-1次,有序鏈表查找需要n次,堆排序次數(shù)為nlog2n。因此循環(huán)鏈表中尋找最大項復(fù)雜度最低。故答案為D選項。5. 下面不屬于結(jié)構(gòu)化程序設(shè)計原則的是。(分?jǐn)?shù):1.00)A. 模塊化B. 自頂向下C. 可繼承性V逐步求精解析:解析結(jié)構(gòu)化程序設(shè)計方法的原則包括

4、:自頂向下、逐步求精、模塊化、限制使用goto語句。故答案為C選項。6. 對軟件系統(tǒng)總體結(jié)構(gòu)圖,下面描述中錯誤的是。(分?jǐn)?shù):1.00)A. 深度等于控制的層數(shù)B. 扇入是一個模塊直接調(diào)用的其他模塊數(shù)VC. 扇出是一個模塊直接調(diào)用的其他模塊數(shù)原子模塊一定是結(jié)構(gòu)圖中位于葉子節(jié)點的模塊解析:解析軟件系統(tǒng)總體結(jié)構(gòu)圖中,扇入是指調(diào)用一個給定模塊的模塊個數(shù),扇出是指由一個模塊直接調(diào)用的其他模塊數(shù),深度指控制的層數(shù),原子模塊指樹中位于葉子節(jié)點的模塊。故答案為B選項。7. 軟件集成測試不采用。(分?jǐn)?shù):1.00)A. 一次性組裝B. 自頂向下增量組裝C. 自底向上增量組裝迭代式組裝V解析:解析集成測試時將模塊組

5、裝成程序通常采用兩種方式:非增量方式組裝和增量方式組裝。非增量方式也稱為一次性組裝方式,是將測試好的每一個軟件單元一次組裝在一起再進(jìn)行整體測試;增量方式是將已測試好的模塊逐步組裝成較大系統(tǒng),在組裝過程中邊連接邊測試,以發(fā)現(xiàn)連接過程中產(chǎn)生的問題。增量方式包括自頂向下、自底向上、自頂向下與自底向上相結(jié)合的混合增量方法。故答案為D選項。8. 將數(shù)據(jù)庫的結(jié)構(gòu)劃分成多個層次,是為了提高數(shù)據(jù)庫的物理獨立性和。(分?jǐn)?shù):1.00)A. 規(guī)范程度B. 操作獨立性C. 邏輯獨立性V降低數(shù)據(jù)冗余解析:解析數(shù)據(jù)庫系統(tǒng)通常采用三級模式結(jié)構(gòu)并且提供兩級映射功能,其中的外模式/模式映射保證了數(shù)據(jù)庫系統(tǒng)具有較高的邏輯獨立性,

6、而模式/內(nèi)模式映射保證了數(shù)據(jù)庫系統(tǒng)具有較高的物理獨立性。故答案為C選項。9. 公司的開發(fā)人員可以同時參加多個項目的開發(fā),則實體開發(fā)人員和實體項目間的聯(lián)系是o(分?jǐn)?shù):1.00)A. 一對一B. 一對多C. 多對一多對多V解析:解析開發(fā)人員可以參加多個項目,而項目開發(fā)人員不止一個,那么開發(fā)人員和項目之間是多對多關(guān)系。故答案為D選項。10. 定義學(xué)生選修課程的關(guān)系模式如下:SC(S#,Sn,C#,Cn,G)(其屬性分別為學(xué)號、姓名、課程號、課程名、成績)則該關(guān)系的主鍵為。(分?jǐn)?shù):1.00)A. .S#B. .C#C. S#,C#VS#,C#,G解析:解析本題關(guān)系模式SC(S#,Sn,C#,Cn,G)

7、(其屬性分別為學(xué)號、姓名、課程號、課程名、成績),單依靠學(xué)號不能標(biāo)識唯一元組,需要學(xué)號、課程號共同來標(biāo)識唯一元組,因此學(xué)號、課程號(S#、C#)為該關(guān)系的主鍵。故答案為C選項。11. 以下敘述中正確的是。(分?jǐn)?shù):1.00)A. C語言源程序即使不編譯,也是可以直接運行的B. 一個程序要被稱為結(jié)構(gòu)化程序,則只能包含循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)、順序結(jié)構(gòu)VC. 使用N-S流程圖只能描述簡單的算法復(fù)雜算法是指不能分解成子任務(wù)的算法解析:解析C語言源程序必須經(jīng)過編譯、鏈接,生成二進(jìn)制可執(zhí)行文件,才可以運行,選項A錯誤;由3種基本結(jié)構(gòu):即循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)、順序結(jié)構(gòu)構(gòu)成的程序稱為結(jié)構(gòu)化程序,選項B正確;使用N-S

8、流程圖可以描述任何算法,選項C錯誤;可以將復(fù)雜算法分解成多個子任務(wù)來解決,這種程序的設(shè)計方法稱為模塊化設(shè)計,選項D錯誤。故本題答案為B選項。12. 下面說法正確的是o(分?jǐn)?shù):1.00)A. 使用只包含3種基本結(jié)構(gòu)的算法可以求解復(fù)雜的問題VB. C語言源程序需要把所有過長的函數(shù)保存在單獨的源文件中才能通過編譯C. 有一些特殊的程序語法錯誤,只有在運行時才能被發(fā)現(xiàn)一些完成簡單任務(wù)的C語言程序,可以不包含main()函數(shù)解析:解析由3種基本結(jié)構(gòu),即循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)、順序結(jié)構(gòu)構(gòu)成的算法稱為結(jié)構(gòu)化算法,由3種基本結(jié)構(gòu)組成的算法可以解決任何復(fù)雜的問題,選項A正確;C語言源程序不需要把過長的函數(shù)單獨保存也

9、可以編譯,選項B錯誤;C語言程序需要經(jīng)過編譯、鏈接生成二進(jìn)制文件才可以運行,其中編譯階段可以檢查出語法錯誤,選項C錯誤;每個C語言程序無論簡單還是復(fù)雜,都必須包含main()函數(shù),選項D錯誤。故本題答案為A選項。13. 以下選項中,算術(shù)表達(dá)式的值與其他3個不同的是o(分?jǐn)?shù):1.00)A. 3/5.B. 3./5C. 3/5V3.0/5.0解析:解析C語言中除法運算有兩個運算數(shù),兩個整數(shù)的除法運算會舍去小數(shù)部分,結(jié)果為整數(shù)。由于C語言中浮點數(shù)的小數(shù)形式必須要有小數(shù)點,所以選項A(5.)、B(3.)和D(3.0和5.0)都是浮點數(shù),選項A、B運算時自動將另一個整數(shù)轉(zhuǎn)換成浮點數(shù),然后再運算。選項D中

10、兩個都是浮點數(shù),浮點數(shù)的除法運算結(jié)果還是浮點數(shù),所以本題中選項A、B、D運算結(jié)果是浮點數(shù),選項C運算結(jié)果是整數(shù)。故本題答案為C選項。14. 以下完全正確的一組常量是。(分?jǐn)?shù):1.00)A. -12U12.E0B. 01a.12e3C. 0.3L1.2e-10x0123.V解析:解析實數(shù)的指數(shù)形式如下:尾數(shù)E(e)整型指數(shù),其中字母E或e之前必須要有數(shù)字,E或e后面的指數(shù)必須是整數(shù);整型常量中U表示無符號類型,L表示長整型,0x開頭表示十六進(jìn)制形式的整數(shù)。選項A中,由于U表示無符號類型,只能表示正整數(shù),所以-12U錯誤;選項B中a不合法;選項C中L只能修飾整數(shù),所以0.3L是錯誤的;選項D中,0

11、x0表示十六進(jìn)制形式的整數(shù)0,123.表示實數(shù),省略了小數(shù)點后面的0,正確。故本題答案為D選項。15. 以下字符常量中,輸出后仍是原英文字母的是。(分?jǐn)?shù):1.00)A. ”/sVB. /tC. /n/r解析:解析在本題中,選項B、GD都是轉(zhuǎn)義字符常量,其中”/t”表示代表Tab鍵,”/n”表示回車換行,”/r”表示回車符。選項A中的”/s”,其中”是轉(zhuǎn)義字符,不顯示;”s”可以原樣輸出。故本題答案為A選項。16. 有以下程序:#include#includemain()(ints;floatn,t,pai;t=1,pai=0,n=1.0,s=1;while(fabs(t)1.0e-6)(pai

12、+=t;n+=2;s=-s;t=s/n;printf(total=%f/n”,pai);程序所計算的是。(分?jǐn)?shù):1.00)A. 1-1/2!+1/3!-1/5!+1/7!-B. 1+1/3+1/5+1/7+1/9-C. 1+1/2+1/3+1/4+1/5-1-1/3+1/5-1/7+1/9-V解析:解析main()函數(shù)首先定義整型變量s,初值為1,定義float類型的n、t、pai,其中n初值1.0,t初值為1,pai初值為0。while循環(huán)判斷t的絕對值(fabs()為求float類型值的絕對值)是否大于1.0*10-6,若t的絕對值大于1.0*10-6,那么執(zhí)行下列語句:pai+=t;n+

13、=2;s=-s;t=s/n;所以每輪循環(huán)pai累加s/n(其中s是上一輪s的相反數(shù),n是上一輪n累加2的值)。第一輪循環(huán)時,pai被賦值為1,s是正數(shù),所以最終pai的計算結(jié)果是:1-1/3+1/5-1/7+1/9-故本題答案為D選項。17. 有如下程序:#includemain()(inta=0,b=1;if(a+&b+)printf(T);elseprintf(F);a=b+;printf(a=%d,b=%d/n,a,b);程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. Fa=1,b=2VB. Fa=1,b=1C. Ta=0,b=2Ta=0,b=1解析:解析main()函數(shù)首先定義整型變量

14、a、b,分別賦初值為0、1;a+&b+清先執(zhí)行a+,其中a+是后綴自增運算符,整個a+表達(dá)式的值為0,由a+&b+勺短路原則,b+不再執(zhí)行,所以if語句不成立,執(zhí)行else語句,輸出”F”,此時a完成自增運算,值為1;接著執(zhí)行a=b+,同理后綴自增運算符使得先將b的值賦給a(a的值為1),再執(zhí)行b+,b的值為2,最終程序輸出:“Fa=1,b=2。故本題答案為A選項。18. 以下各選項中的代碼段執(zhí)行后,變量y的值不為1的是。(分?jǐn)?shù):1.00)A. intx=5,y=0;if(5)y=1;B. intx=5,y=0;if(x)y=1;C. intx=10,y=0;if(x=y)y=1;vintx=

15、5,y=10;if(x=y)y=1;解析:解析選項A的if條件表達(dá)式5的值為真,執(zhí)行y=1,y的值為1;選項B的if條件表達(dá)式x的值為5,也是真,執(zhí)行y=1,y的值為1;選項C的if條件表達(dá)式x=y是賦值語句,將y的值0賦給x,表達(dá)式的值為0,if語句不執(zhí)行,y值為0;選項D的if條件表達(dá)式x=y是賦值語句,將y的值10賦給x,表達(dá)式的值為10,執(zhí)行y=1,y的值為1。故本題答案為C選項。設(shè)有定義:intm=1,n=2;則以下if語句中,編譯時會產(chǎn)生錯誤信息的是。(分?jǐn)?shù):1.00)A. if(mn)m-elsen-;VB. if(m=n)m+;n+;C. if(mv0&n0);elsem+;解

16、析:解析選項A中,if語句的語句塊m-后面少了分號,不合法,編譯會出錯,其他選項的語句都是正確的。故本題答案為A選項。19. 有以下程序:#includevoidmain()inti,m=0,n=0,k=0;for(i=9;i=11;i+)switch(i/10)case0:m+;n+;break;case10:n+;break;default:k+;n+;printf(%d%d%d/n”,m,n,k);程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 451B. 354C. 15420. 132V解析:解析由程序可知:for語句的循環(huán)體語句是switch語句;循環(huán)體變量i初值為9,取值分別是i

17、=9、10、11。當(dāng)i=9時,表達(dá)式i/10為0,執(zhí)行case0語句:m+n+;break;此時m的值為1,n的值為1;當(dāng)i=10時,表達(dá)式i/10為1,執(zhí)行default語句:k+;n+;此時k的值為1,n的值為2;當(dāng)i=11時,表達(dá)式i/10為1,執(zhí)行default語句:k+;n+;此時k的值為2,n的值為3,循環(huán)結(jié)束,程序輸出結(jié)果為:132。故本題答案為Do有下列程序:#includemain()inta=-1,b=2;for(;a+&b-;)printf(%d,%d,a,b);printf(%d,%d,a,b);程序執(zhí)行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 0,1,1,0,1,0B.

18、 0,1,1,0C. 0,1,1,1V0,1,1,1,1,1解析:解析for循環(huán)中,表達(dá)式a+&b-的值決定循環(huán)是否執(zhí)行。第一輪循環(huán)時,a初值為-1,b初值為2,由于a+是后綴自增運算符,b-是后綴自減運算符,a+&b-的值等價于-1&2,結(jié)果為1;執(zhí)行for循環(huán)的循環(huán)體,此時a的值為0,b的值為1,輸出a、b的值為0、1。第二輪循環(huán)時,a的初值為0,b的初值為1,表達(dá)式a+&b-首先執(zhí)行a+,結(jié)果為0,a自增為1;由于短路原則,b-不再執(zhí)行,整個表達(dá)式的值為0,for循環(huán)終止;執(zhí)行循環(huán)體外的printf()語句,輸出1、1。故本題答案為C選項。21. 有以下程序:#include#defin

19、eN4intfun(intaN)inti,y=0;for(i=0;ivN;i+)y+=a1i+aN-1i;for(i=0;ivN-1;i+)aii=aii*aii;returny;)main()inty,xNN=11,21,13,4,15,6,17,8),9,1,11,12,3,4,15,6);y=fun(x);printf(%d,%d,%d”,y,xN-3N-3,xN-3N-2);程序執(zhí)行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 74,36,17VB. 74,6,17C. 82,36,1782,6,17解析:解析main()函數(shù)首先定義一個二維數(shù)組x,它是N行N列的整型二維數(shù)組,然后將數(shù)組x傳

20、給函數(shù)fun()。在函數(shù)fun()中,第一個for循環(huán)將數(shù)組a中,行下標(biāo)為1的所有元素與行下標(biāo)為N-1(3)的所有元素累加賦給y,所以y的值為15+6+17+8+3+4+15+6=74;第二個for循環(huán)將對角線上的三個元素:a00a11、a22分別平方后賦給自身,由于a是數(shù)組x的地址,對a數(shù)組元素的修改會同步修改實參x的元素值,a00為121,a11為36,a22為121,調(diào)用完fun()函數(shù)后,程序輸出y、x11、x12的值分別是:74、36、17。故本題答案為A選項。22. 以下程序擬調(diào)用getmax函數(shù),找出4個變量中最大的一個,但程序不完整。具體程序如下:#includeintgetm

21、ax(intx,inty)returnxyx:y;)voidmain()inta,b,c,d,mx;scanf(%d%d%d%d”,&a,&b,&c,&d);printf(max=%d/n,);)以下選項若填入下劃線處,不能實現(xiàn)上述功能的是。(分?jǐn)?shù):1.00)A. getmax(getmax(getmax(a,b),c),d)B. getmax(getmax(a,b),getmax(c,d)C. getmax(a,getmax(b,getmax(c,d)mx=(getmax(a,b),getmax(c,d)V解析:解析getmax()函數(shù)接收兩個整型變量x、y,使用條件運算符返回x和y中的較大

22、值;main()函數(shù)首先輸入a、b、c、d四個整數(shù)值,然后通過調(diào)用getmax()函數(shù),輸出它們的最大值。假設(shè)x、y是整數(shù),選項A中,首先執(zhí)行g(shù)etmax(a,b),返回a和b中的較大值x,再執(zhí)行g(shù)etmax(x,c),返回x、c中的較大值y,最后執(zhí)行g(shù)etmax(y,d),返回y、d中的較大值,滿足題意,正確;選項B中,首先執(zhí)行g(shù)etmax(a,b),返回a、b的較大值x,再執(zhí)行g(shù)etmax(c,d),返回c、d中的較大值y,最后執(zhí)行g(shù)etmax(x,y),返回x、y中的較大值,正確;選項C中,首先執(zhí)行g(shù)etmax(c,d),返回c、d的較大值x,再執(zhí)行g(shù)etmax(b,x),返回b、x中的

23、較大值y,最后執(zhí)行g(shù)etmax(a,y),返回a、y中的較大值,正確;選項D中,首先執(zhí)行g(shù)etmax(a,b),返回a、b的較大值x,再執(zhí)行g(shù)etmax(c,d),返回c、d中的較大值y,最后執(zhí)行逗號表達(dá)式(x,y),返回值為y,不滿足題意。故本題答案為D選項。23. 以下敘述中錯誤的是。(分?jǐn)?shù):1.00)A. 在同一源程序文件中,函數(shù)名必須唯一B. 凡是帶有返回值的庫函數(shù),都不能通過加分號而作為獨立的語句出現(xiàn)VC. 不同函數(shù)中的形式參數(shù)可以同名返回基本數(shù)據(jù)類型的庫函數(shù)的調(diào)用,均可以出現(xiàn)在賦值號右邊的表達(dá)式中解析:解析在同一源文件中,函數(shù)名必須唯一,選項A敘述正確。函數(shù)的調(diào)用有兩種形式:(1)

24、出現(xiàn)在表達(dá)式中,有可以出現(xiàn)在賦值號右邊的表達(dá)式中;(2)作為獨立的語句完成某種操作。因此選項B敘述錯誤,選項D敘述正確。不同函數(shù)的形參可以同名,它們的作用域都限制在各自的函數(shù)體內(nèi),選項C敘述正確。故本題答案為B選項。24. 關(guān)于函數(shù)返回值,以下說法錯誤的是o(分?jǐn)?shù):1.00)A. 函數(shù)返回值可以是整個數(shù)組VB. 函數(shù)返回值可以是一個數(shù)C. 函數(shù)返回值可以是一個指針函數(shù)返回值可以是一個函數(shù)的入口地址解析:解析函數(shù)的返回值可以是整數(shù)、實數(shù)、字符、指針、結(jié)構(gòu)體或一個函數(shù)的地址等,但不能是整個數(shù)組,C語言中對數(shù)組的操作都是通過下標(biāo)引用或指針,不能整體操作。故本題答案為A選項。25. 有下列程序:#in

25、clude#defineN4intfun(intaN)inti,y=0;for(i=0;ivN;i+)y+=a0i+aN-1i;for(i=1;ivN-1;i+)y+=ai0+aiN-1;returny;)main()inty,xNN=1,2,3,4,2,1,4,3,3,4,1,2,4,3,2,1;y=fun(x);printf(%d,y);程序執(zhí)行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 40B. 35C. 30V32解析:解析main()函數(shù)首先定義一個二維數(shù)組x,它是N行N列整型數(shù)組,然后調(diào)用fun函數(shù),傳入數(shù)組x;fun函數(shù)中第一個for循環(huán)將二維數(shù)組a的行下標(biāo)為0(第一行)的所有元素與

26、行下標(biāo)為N-1(最后一行)的所有元素累加賦給y;第二個for循環(huán)將二維數(shù)組a的列下標(biāo)為0(第一列)且行下標(biāo)為1、2的元素與列下標(biāo)為N-1(最后一列)且行下標(biāo)為1、2的所有元素累加再次賦給y,最后將y返回。所以main()函數(shù)調(diào)用完fun()函數(shù)后,y的值等價于:1+2+3+4+4+3+2+l+2+3+3+2,結(jié)果為30。故本題答案為C選項。26. 設(shè)有如下程序段:inta2=0;intb=0;charC2=ABC;chard=ABC;則以下敘述正確的是。(分?jǐn)?shù):1.00)A. 只有數(shù)組a、b的定義是合法的VB. 數(shù)組a、b、c、d的定義都是合法的C. 只有數(shù)組c、d的定義是合法的只有數(shù)組c的定

27、義是合法的解析:解析(a)中定義一個整型數(shù)組a,它包含兩個整型元素,兩個元素都初始化為0,正確;(b)中定義一個整型數(shù)組b,數(shù)組大小為1,包含一個元素0,正確;(c)中定義字符數(shù)組c,它包含2個字符元素,初始化的字符串中包含3個字符,不合法;(d)中定義一個字符d,使用一個字符串初始化,不合法。故本題答案為A選項。27. 有以下程序:#includevoidswap(int*pa,int*pb)intt;t=*pa;*pa=*pb;*pb=t;voidfun(int*ds,intn)inti,midx;midx=0;for(i=1;ivn;i+)if(dsidsmidx)midx=i;swap

28、(ds,ds+midx);voidmain()intdata=37,31,26,17,61,12,i;for(i=0;iv5;i+)fun(data+i,6-i);for(i=0;iv6;i+)printf(%3d”,datai);printf(/n”);程序的運行結(jié)果是。(分?jǐn)?shù):1.00)A. 613731261712B. 373126176112C. 176112373126121726313761V解析:解析main()函數(shù)定義一個整型數(shù)組data,它包含6個整型元素,第一個for循環(huán)調(diào)用fun()函數(shù),每次將數(shù)組首地址(data+i)和元素個數(shù)(6-i)傳給函數(shù)fun(),函數(shù)fun(

29、)通過for循環(huán)遍歷data+i開始的6-i個元素,找出其中的最小值(下標(biāo)為midx),然后再調(diào)用swap()函數(shù)將data+i指向的元素與下標(biāo)為midx的元素值進(jìn)行交換;所以main()函數(shù)中第一個for循環(huán)執(zhí)行完畢后,數(shù)組data中的元素按照從小到大排序;第二個for循環(huán)輸出排序后的data數(shù)組元素,輸出結(jié)果為:121726313761。故本題答案為D選項。28. 設(shè)有定義:intx23;,則以下選項中不能表示數(shù)組元素x01的是。(分?jǐn)?shù):1.00)A. *(*x+1)B. *(*(x+1)VC. (*x)1*(&x00+1)解析:解析選項A中*x等價于x0,*x+1等價于x0+1,*(x0

30、+1)等價于x01,正確;選項B中,*(x+1)等價于x1,*(*(x+1)等價于x10,錯誤;選項C中*x等價于x0,*x1等價于x01,正確;選項D中,&x00等價于x0,&00+1等價于x0+1,*(x0+1)等價于x01,正確。故本題答案為B選項。29. 有以下程序:#includevoidfun(doublex,double*y,double*z)*y=*y-1.0;*z=*z+x;main()doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(%f/n,a);程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 8.00

31、0000B. 9.000000C. 1.500000V10.500000解析:解析main()函數(shù)定義兩個double類型的變量a、b,分別賦初值為:2.5、9.0,另外定義兩個double類型的指針變量pa、pb,其中pa指向a,pb指向b;然后將b-a、pa、pb傳給函數(shù)fun,此時x的值為7.5,y指向a,z指向b;所以*y=*y-1.0,是將變量a的值減去1.0賦給a,a的值為1.5;*z=*z+x,是將變量b的值加上7.5賦給b,b的值為16.5;fun()函數(shù)執(zhí)行完畢后,輸出a的值為1.5。故本題答案為C選項。30. 使用數(shù)組名作為函數(shù)的實參時,傳遞給形參的是。(分?jǐn)?shù):1.00)A

32、. 數(shù)組第一個元素的值B. 數(shù)組的首地址VC. 數(shù)組中全部元素的值數(shù)組元素的個數(shù)解析:解析用數(shù)組名作為函數(shù)參數(shù)時,數(shù)組名退化為指針,傳遞給形參的是數(shù)組的首地址。故本題答案為B選項。31. 有下列程序:#includevoidfun(inta,intn,intflag)inti=0,j,t;for(i=0;in-1;i+)for(j=i+1;jaj):(aiaj)t=ai;ai=aj;aj=t;main()intc10=7,9,10,8,3,5,1,6,2,4,i;fun(c,10,1);fun(c,8,0);for(i=0;iv10;i+)printf(%d,ci);程序執(zhí)行后的輸出結(jié)果是。(

33、分?jǐn)?shù):1.00)A. 8,7,6,5,4,3,2,1,9,10,VB. 3,4,5,6,7,8,9,10,2,1,C. 9,10,1,2,3,4,5,6,7,8,10,9,8,7,6,5,4,3,1,2,解析:解析在本題中,fun()函數(shù)接收數(shù)組a、數(shù)組元素個數(shù)n以及整型變量flag,然后通過for循環(huán)遍歷數(shù)組a的n個元素,若flag為1,則將數(shù)組元素升序排列;若flag為0,則將數(shù)組元素逆序排列。main()函數(shù)定義整型數(shù)組c,它包含10個元素,首先將數(shù)組c、元素個數(shù)10和1傳給fun()函數(shù),將c中10個元素升序排列,結(jié)果為:1,2,3,4,5,6,乙8,9,10,;然后再次調(diào)用fun()

34、函數(shù),將數(shù)組c、元素個數(shù)8和0傳給fun()函數(shù),將c中前8個元素逆序排列,結(jié)果為:8,7,6,5,4,3,2,1,9,10。故本題答案為A選項。32. 有以下程序:#includeinta=5;intfunc(inta)intb=1;staticintc=5;a+;b+;+c;return(a*b*c);main()intk,a=4;for(k=0;kv3;k+)printf(%d,func(a);)程序執(zhí)行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 72,147,256,B. 60,60,60,C. 72,98,128,60,70,80,V解析:解析首先程序中有一個全局變量a,初值為5,在ma

35、in()函數(shù)中,局部變量a屏蔽全局變量a,同樣,在func()函數(shù)中,形參a也屏蔽全局變量a;另外func()函數(shù)中,c是靜態(tài)局部變量,只會初始化一次,后續(xù)使用時,c的值是上一次調(diào)用函數(shù)后c的值。綜上所述,main()函數(shù)中:當(dāng)k=0時,實參a=4,func()函數(shù)的形參a=4、b=1、c=5,自增后形參a=5、b=2、c=6,返回值為60,輸出60;當(dāng)k=1時,實參a=4,func()函數(shù)的形參a=4、b=1、c=6,自增后形參a=5、b=2、c=7,返回值為70,輸出70;當(dāng)k=2時,實參a=4,func()函數(shù)的形參a=4、b=1、c=7,自增后形參a=5、b=2、c=8,返回值為80,

36、輸出80。故本題答案為D選項。33. 有以下程序:#includemain()charb=abcdefg”,*chp=b;while(*chp)if(ehp-b)%3=0)putchar(*chp);+chp;)程序的運行結(jié)果是。(分?jǐn)?shù):1.00)A. cfB. defgC. adgVaceg解析:解析main()函數(shù)定義字符數(shù)組b,初始化的值為字符串a(chǎn)bcdefg,定義字符指針變量chp,將數(shù)組b的地址賦給chp;接著while循環(huán)通過chp指針遍歷字符數(shù)組,在遍歷過程中,若當(dāng)前字符與字符串首字符之間的字符數(shù)是3的倍數(shù)(chp-b是字符指針的差,即字符個數(shù)),那么輸出該字符。所以程序輸出結(jié)果

37、為:adg。故本題答案為C選項。34. 有下列程序:#include#includemain()charv410,*p4,*t;inti,j;for(i=0;iv4;i+)pi=vi;scanf(%s”,pi);)for(i=0;iv3;i+)for(j=i+1;jv4;j+)if(strcmp(pi,pj)0)t=pi;pi=pj;pj=t;for(i=0;iv4;i+)printf(%s”,pi);)程序執(zhí)行時若輸入:WelcomeyoutoBeijing回車,則輸出結(jié)果是。(分?jǐn)?shù):1.00)A. BeijingWelcometoyouVB. BeijingtoWelcomeyouC. W

38、elcomeyoutoBeijingtoyouBeijingWelcome解析:解析main()函數(shù)定義一個二維字符數(shù)組v,另外定義一個數(shù)組,包含4個字符指針元素,第一個for循環(huán)將數(shù)組v對應(yīng)下標(biāo)為i的字符串首地址賦給數(shù)組p的下標(biāo)為i的元素,使得p中的4個指針元素分別指向v中的4個字符串,然后使用scanf()函數(shù),輸入4個字符串賦給v中的4個元素,由此可知數(shù)組p的4個指針元素指向該4個字符串;接著再使用兩個嵌套的for循環(huán),對v中的4個字符串按照ASCII碼的大小排序,strcmp()函數(shù)是將pi、pj兩個字符串自左向右逐個字符比較ASCII碼,直到出現(xiàn)不同的字符或遇到/0為止,當(dāng)pipj時

39、,返回正數(shù),所以本題排序后,輸出結(jié)果為:BeijingWelcometoyouo故本題答案為A選項。35. 以下涉及字符串?dāng)?shù)組、字符指針的程序片段,沒有編譯錯誤的是。(分?jǐn)?shù):1.00)A. charline;line=:B. char*name10,*str;name=HelloWorld;C. charstr110,str210=prog.c;str1=str2;charname10,*str=HelloWorld;V解析:解析C語言中,字符指針變量可以直接使用字符串賦值,而字符數(shù)組不能直接使用字符串或字符數(shù)組賦值,選項A、B、C錯誤,選項D正確。故本題答案為D選項。36. 若要使int型變

40、量a、b、c、d的值都為0,以下寫法中錯誤的是。(分?jǐn)?shù):1.00)A. autointa,b,c,d;a=b=c=d=0;B. autointa=b=c=d=0;VC. autointa=0,b=a,c=b,d=c;staticinta,b,c,d;解析:解析選項B中,使用autoint定義了整型a,但b、c、d都是未定義的變量,所以不能做右值使用,錯誤;選項A、C都是正確的定義和初始化;選項D中,static變量定義了a、b、c、d,由于未初始化,在程序運行時首先將這四個變量賦值為0,正確。故本題答案為B選項。37. 有如下程序:#includemain()inta=1,b;b=(a2)%3

41、;printf(%d,%d,a,b);)程序運行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 1,1B. 2,0C. 1,0V2,1解析:解析”是右移運算符,功能是將一個數(shù)的各個二進(jìn)制位右移若干位,本題中將變量a(二進(jìn)制:00000001)右移2位,a2的結(jié)果為0,再對3求余,結(jié)果為0,賦給b的值為0、a的值不變,輸出結(jié)果為:1,0。故本題答案為C選項。38. 有下列程序:#includemain()(intx=3,y=5,z1,z2;z1=yAxAy:z2=xAyAx;printf(%d,%d/n”,z1,z2);)程序執(zhí)行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. 7,7B. 5,3C. 8,83,

42、5V解析:解析%”異或運算,其功能是參與運算的兩個數(shù),按位異或,如果兩個相應(yīng)位相同,結(jié)果為0,否則為1;異或運算滿足如下規(guī)則:(1)滿足交換律;(2)一個數(shù)與0異或的結(jié)果仍是原數(shù);(3)一個數(shù)與1異或的結(jié)果是原數(shù)按位取反。所以本題中,yAxAy等價于yAyAx,等價于0Ax,等價于x,即z1=x;海、等價于xAxAy,等價于0Ay,等價于y,即z2=y;輸出結(jié)果為:3,5。故本題答案為D選項。39. 有下列程序:#include#includetypedefstructstu(charname9;chargender;intscore;)STU;STUf(STUa)(STUc=(Sun,f,9

43、0);strcpy(,);a.gender=c.gender;a.score=c.score;returna;)main()(STUa=(Zhao,m,85),b=(Qian,f,95);b=f(a);printf(%s,%c,%d,%s,%c,%d,,a.gender,a.score,,b.gender,b.score);)程序執(zhí)行后的輸出結(jié)果是。(分?jǐn)?shù):1.00)A. Zhao,m,85,Sun,f,90VB. Zhao,m,85,Qian,f,95C. Sun,f,90,Sun,f,90Sun,f,90,Qian,f,95解析:解析程序首先

44、使用typedef定義一種新的類型名STU它包含3個數(shù)據(jù)成員:字符數(shù)組name字符變量gender和整數(shù)score。main()函數(shù)使用STU定義結(jié)構(gòu)體變量a和b并賦初值;再調(diào)用函數(shù)f,將a傳入;函數(shù)f()使用STl義結(jié)構(gòu)體變量c并賦初值,然后通過逐個引用成員變量將c的各個成員值賦給a,其中使用strcpy進(jìn)行字符串拷貝。由于形參a是結(jié)構(gòu)體類型,實參a未因形參的改變而改變;將改變后的形參a的值作為f()函數(shù)的返回值賦給b,所以b的值就是形參a改變后的值;而實參a的值沒有改變,f()函數(shù)執(zhí)行完后,main()函數(shù)中a的值不變,b的值被修改為f()函數(shù)中c的值,printf()函數(shù)輸出的值是a和c

45、。故本題答案為A選項。40. 二、程序填空題(總題數(shù):1,分?jǐn)?shù):18.00)下列給定程序中,函數(shù)fun的功能是:求ss所指字符串?dāng)?shù)組中長度最短的字符串所在的行下標(biāo),作為函數(shù)值返回,并把其串長放在形參n所指的變量中。ss所指字符串?dāng)?shù)組中共有M個字符串,且串長小于No請在程序的下劃線處填入正確的內(nèi)容,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#defineM5#defineN20intfun(char(*ss)N,int*n)inti,k=0,len=N;/*found*/for(i=0;iv1;i+)len=s

46、trlen(ssi);if(i=0)*n=len;/*found*/if(len2*n)*n=len;k=i;/*found*/return(3);main()charssMN=shanghai,guangzhou,beijing,tianjing,chongqing;intn,k,i;printf(/nTheoriginalstringsare:/n);for(i=0;ivM;i+)puts(ssi);k=fun(ss,&n);printf(/nThelengthofshorteststringis:%d/n”,n);printf(/nTheshorteststringis:%s/n,ssk);(分?jǐn)?shù):18.00)解析:Mk考點本題考查:for循環(huán)語句的

溫馨提示

  • 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

提交評論