版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、二級C語言真題2017年09月-(2)(總分:100.00,做題時間:90分鐘)1. 一、選擇題(總題數(shù):40,分數(shù):40.00)下列敘述中錯誤的是。(分數(shù):1.00)A. 向量是線性結(jié)構(gòu)B. 非空線性結(jié)構(gòu)中只有一個根節(jié)點沒有前件C. 非空線性結(jié)構(gòu)中只有一個終節(jié)點沒有后件只有一個根節(jié)點和一個葉子節(jié)點的結(jié)構(gòu)必定是線性結(jié)構(gòu)V解析:解析向量也是一種線性結(jié)構(gòu)。非空線性結(jié)構(gòu)中只有根節(jié)點無前件,只有終端節(jié)點無后件,其他所有節(jié)點只有一個前件也只有一個后件。二叉樹可以只有一個根節(jié)點和一個葉子節(jié)點,但二叉樹是非線性結(jié)構(gòu)。故答案為D選項。2. 設(shè)順序表的長度為40,對該表進行冒泡排序。在最壞情況下需要的比較次數(shù)為
2、。(分數(shù):1.00)A. 820B. 780VC. 4041解析:解析冒泡排序在最壞情況下,對長度為n的線性表排序,需要經(jīng)過n/2遍的從前住后的掃描和n/2遍的從后住前的掃描,需要比較的次數(shù)為n(n-1)/2。本題中為40X(40-1)+2=78d故答案為B選項。3. 設(shè)二叉樹的前序序列為ABDEGHCFIJ中序序歹U為DBGEHACIFJ則后序序列為。(分數(shù):1.00)A. DGHEBIJFCAVB. JIHGFEDCBAC. GHIJDEFBCAABCDEFGHIJ解析:解析二叉樹遍歷可以分為3種:前序遍歷(訪問根節(jié)點在訪問左子樹和訪問右子樹之前)、中序遍歷(訪問根節(jié)點在訪問左子樹和訪問右
3、子樹兩者之間)、后序遍歷(訪問根節(jié)點在訪問左子樹和訪問右子樹之后)。二叉樹的前序遍歷序列為ABDEGHCFIJ中序序列為DBGEHACIFJ可知該樹A為根節(jié)點,右子樹節(jié)點為CFIJ,左子樹節(jié)點為BDEGH則后序序列為DGHEBIJFCA故A選項正確。4. 設(shè)表的長度為n。在下列算法中,最壞情況下時間復(fù)雜度最高的是。(分數(shù):1.00)A. 堆排序B. 希爾排序VC. 有序鏈表查找循環(huán)鏈表中尋找最大項解析:解析最壞情況下,希爾排序所需要比較次數(shù)為n1.5,循環(huán)鏈表中尋找最大項需要n-1次,有序鏈表查找需要n次,堆排序次數(shù)為nlog2n。因此希爾排序復(fù)雜度最高。故答案為B選項。5. 數(shù)據(jù)流圖(DFD
4、)中的有向箭頭(r)表示。(分數(shù):1.00)A. 控制流B. 數(shù)據(jù)流VC. 輸入流輸出流解析:解析數(shù)據(jù)流圖(DFD)中帶箭頭的線段表示的是數(shù)據(jù)流,即沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名。故答案為B選項。6. 下面不屬于結(jié)構(gòu)化程序設(shè)計風(fēng)格的是。(分數(shù):1.00)A. 程序結(jié)構(gòu)良好B. 程序的易讀性C. 不濫用goto語句程序的執(zhí)行效率V解析:解析良好的程序設(shè)計風(fēng)格可以使程序結(jié)構(gòu)清晰合理,程序代碼便于維護。按結(jié)構(gòu)化程序設(shè)計方法設(shè)計出的程序具有程序易于理解、使用和維護。可見結(jié)構(gòu)化程序設(shè)計風(fēng)格強調(diào)的是易讀性。結(jié)構(gòu)化程序設(shè)計的重要原則是自頂向下、逐步求精、模塊化及限制使用goto語句。故答案
5、為D選項。7. 軟件測試的目的是。(分數(shù):1.00)A. 避免程序中的錯誤B. 修改程序中的錯誤C. 發(fā)現(xiàn)程序中的錯誤V發(fā)現(xiàn)和修改程序中的錯誤解析:解析軟件測試就是在軟件投入運行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤。故答案為C選項。8. 能夠減少相同數(shù)據(jù)重復(fù)存儲的是。(分數(shù):1.00)A. 記錄B. 字段C. 文件數(shù)據(jù)庫V解析:解析數(shù)據(jù)庫系統(tǒng)具有高共享性和低冗余性,不僅減少了不必要的存儲空間,更為重要的是可能避免數(shù)據(jù)的不一致性。故答案為D選項。9. 數(shù)據(jù)庫管理系統(tǒng)(DBMS是。(分數(shù):1.00)A. 系統(tǒng)軟件VB. 硬件系統(tǒng)C. 一個完整的數(shù)據(jù)庫應(yīng)用系統(tǒng)既包括硬件也包括軟件的系統(tǒng)解析:解析數(shù)據(jù)庫管
6、理系統(tǒng)(DBMS是數(shù)據(jù)庫的機構(gòu),它是一種系統(tǒng)軟件,負責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等。故答案為A選項。10. 在關(guān)系模式A(S,SN,D)和B(D,CNNM沖,關(guān)系A(chǔ)的主鍵是S,關(guān)系B的主鍵是D,則屬性D在關(guān)系A(chǔ)中稱為。(分數(shù):1.00)A. 超鍵B. 主鍵C. 候選鍵外鍵V解析:解析候選鍵(碼)是二維表中能唯一標(biāo)識元組的最小屬性集。若一個二維表有多個候選碼,則選定其中一個作為主鍵(碼)供用戶使用。若表M中的某屬性集是表N的候選鍵或者主鍵,則稱該屬性集為表M的外鍵(碼)。本題中關(guān)系A(chǔ)中的屬性D是關(guān)系B的主鍵,那么屬性D是關(guān)系A(chǔ)的外鍵(碼)。故答案為D選項。11.
7、 以下敘述正確的是。(分數(shù):1.00)A. C程序的執(zhí)行是從源文件的開頭,一行一行向下執(zhí)行,每行都會被執(zhí)行到B. 對于只包含表達式語句的程序段,執(zhí)行順序與書寫順序一致VC. C程序的執(zhí)行一定是從主函數(shù)開始,從主函數(shù)結(jié)束每個C源文件都應(yīng)當(dāng)有一個主函數(shù)解析:解析C語言程序的執(zhí)行是從main()函數(shù)開始的,但不一定在main()函數(shù)結(jié)束,在任何其他地方可以調(diào)用exit()函數(shù)結(jié)束程序的運行,選項A、C敘述錯誤;對于只包含表達式語句的程序段,執(zhí)行順序與書寫順序一致,選項B敘述正確;每個C語言程序都有且只有一個主函數(shù),選項D敘述錯誤。故本題答案為B選項。12. 以下選項中不是C語言數(shù)據(jù)類型的是o(分數(shù):
8、1.00)A. intB. floatC. charstringV解析:解析C語言的數(shù)據(jù)類型包括基本數(shù)據(jù)類型,即整型int、實型float和double、字符類型char等。string是C+沖的數(shù)據(jù)類型,不屬于C語言的數(shù)據(jù)類型。故本題答案為D選項。13. 若有如下定義和語句:doublex=1.5;x+;則以下敘述中正確的是。(分數(shù):1.00)A. 變量x經(jīng)自增1運算后的值是2.5VB. x是實型變量,不可以做自增1運算C. 變量x經(jīng)自增1運算后的值是1.6變量x經(jīng)自增1運算后的值是2.0解析:解析C語言中自增自減運算符的運算對象可以是整型、實型、字符型、枚舉型,作用就是對運算數(shù)進行自增1或
9、自減1,本題中的例子是將double類型的變量x自增1,自增后x的值為2.5。故本題答案為A選項。14. 若有程序段:inta,b;chard;scanf("%d%c%d”,&a,&d,&b);若想把12輸入給變量a,字符”k”輸入給變量d,34輸入給變量b,程序運行時正確的輸入是。(分數(shù):1.00)A. 12”k”34B. 12k34C. 12k34V12”k”34解析:解析在本題中,scanf()函數(shù)的格式字符串有3個格式字符“d%c%d,它們之間沒有任何間隔符,輸入的數(shù)據(jù)順序也應(yīng)該是整數(shù)、字符、整數(shù)且之間不能有任何間隔符,所以選項AB、D錯誤。故本題答案
10、為C選項。15. 以下不能定義為用戶標(biāo)識符的是。(分數(shù):1.00)A. sizeofVB. MainC. _int解析:解析C語言的標(biāo)識符是由字母、數(shù)字、下劃線構(gòu)成的字符序列,必須以字母或下劃線開頭;它分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,其中關(guān)鍵字是C語言定義的留著特殊用處的標(biāo)識符,用戶標(biāo)識符是用戶根據(jù)需要自己定義的標(biāo)識符。用戶標(biāo)識符不能是關(guān)鍵字,選項A是關(guān)鍵字,不能定義為用戶標(biāo)識符;選項B中,Main不同于main,可以作為用戶標(biāo)識符;選項C的下劃線滿足用戶標(biāo)識符的要求;選項D中,_int以下劃線開頭,也滿足用戶標(biāo)識符的要求。故本題答案為A選項。16. 以下說法正確的是。(分數(shù):1.00)
11、A. C語言中的常量是指在程序運行過程中經(jīng)常被改變數(shù)據(jù)類型的量B. C語言中的常量是指在程序運行過程中經(jīng)常被改變值的量C. C語言中的常量是指在程序運行過程中經(jīng)常被用到的變量C語言中的常量是指在程序運行過程中其值不能被改變的量V解析:解析C語言中的常量是指在程序運行過程中其值不能被改變的量,所以本題答案是D選項。17. 有以下程序:#include<stdio.h>main()(inti,x,k=0,m;for(i=0;iv5;i+)(scanf("%d”,&x);x/=10;switch(x)(case0:case1:case2:k+;m=1;default:k
12、+;m=2;case3:k+;m=3;case4:k+;m=4;printf("%d,%d",k,m);程序運行時輸入:35205240106回車,則輸出結(jié)果是。(分數(shù):1.00)A. 5,2B. 13,4VC. 15,25,4解析:解析程序中k的初值為0,for循環(huán)每次輸入一個整數(shù)賦給x,然后執(zhí)行x/=10,x除以10后賦給自身,switch語句判斷x的值,執(zhí)行不同的case語句。當(dāng)輸入“35205240106v回車”時,i=0,x=35,x/=10結(jié)果x=3,執(zhí)行case3,k=1,m=3由于沒有break語句,接著會執(zhí)行case4,k=2,m=4;i=1,x=20,x
13、/=10結(jié)果x=2,執(zhí)行case2,k=3,m=1;再執(zhí)行default:k=4,m=2再執(zhí)行case3:k=5,m=3再執(zhí)行case4:k=6,m=4i=2,x=52,x/=10結(jié)果x=5,執(zhí)行default:k=7,m=Z再執(zhí)行case3:k=8,m=3再執(zhí)行case4:k=9,m=4;i=3,x=40,x/10結(jié)果x=4,執(zhí)行case4:k=10,m=4;i=4,x=106,x/10結(jié)果x=10,執(zhí)行default:k=11,m=Z再執(zhí)行case3:k=12,m=3再執(zhí)行case4:k=13,m=4;最終程序輸出:13,4。故本題答案為B選項。18. 有如下程序:#include<
14、stdio.h>main()(inti;for(i=0;iv3;i+)putchar("K"-i);程序運行后的輸出結(jié)果是。(分數(shù):1.00)A. 012B. KLMC. LMNKJIV解析:解析字母字符的ASCII碼是按字母順序遞增的,程序中i=0時,"K"-0結(jié)果為"K”,輸出"K"i=1時,"K"-1結(jié)果為"J”,輸出”J”;i=2時,"K"-2結(jié)果為"I”,輸出”I”。故本題答案為D選項。19. 對于循環(huán)語句:for(i=0;i<=10;i+)(
15、;下面各選項中敘述錯誤的是。(分數(shù):1.00)A. 省略i+,可引起無限循環(huán)B. 省略i<=10,可引起無限循環(huán)C. 省略i=0,可引起無限循環(huán)V圓括號()內(nèi)三個表達式都省略,可引起無限循環(huán)解析:解析在本題中,for循環(huán)的第一個表達式i=0對循環(huán)變量i賦初值0,第二個表達式iv=10是判斷循環(huán)條件是否滿足,第三個表達式i+是控制循環(huán)變量i,完成i的自增運算。若省略i+;那么i的值永遠等于0,iv=10永遠滿足,循環(huán)無限執(zhí)行,選項A正確;若省略iv=10,沒有了循環(huán)條件,循環(huán)無限執(zhí)行,選項B正確;若3個表達式都省略,同樣沒有循環(huán)條件,也可引起無限循環(huán),選項D正確;若省略i=0,那么i會有一
16、個未知的值,若i的未知值小于10,那么經(jīng)過n輪循環(huán),i自增n后,i的值就會大于10,導(dǎo)致循環(huán)終止,所以省略i=0可能不會引起無限循環(huán),選項C錯誤。故本題答案為C選項。20. 有以下程序:#include<stdio.h>main()(inti=0,j=0,x=0;while(i<2)(x+;for(;jv=3;j+)(if(j%2)continue;x+;x+;i+;printf("x=%d/n",x);程序運行后的輸出結(jié)果是。(分數(shù):1.00)A. x=5B. x=4C. x=6Vx=8解析:解析i、j、x初值為0,while循環(huán)中首先將x自增1,然后f
17、or循環(huán)判斷j的值,若j的值為2的倍數(shù),那么x又自增1,否則進入下一輪for循環(huán),for循環(huán)結(jié)束后再將x、i自增1。當(dāng)i=0時,x+后x的值為1,此時j=0、2都會執(zhí)行x+,x的值為3;for循環(huán)執(zhí)行完畢后j的值為4,再執(zhí)行x+,x的值為4;i=1時,x+后x的值為5,此時j的值為4,for循環(huán)不會執(zhí)行,再執(zhí)行x+后x的值為6。故本題答案為C選項。21. 以下敘述中錯誤的是。(分數(shù):1.00)A. while語句的循環(huán)體至少會被執(zhí)行一次VB. break語句只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用C. 執(zhí)行continue語句時將跳過本次循環(huán)體中余下尚未執(zhí)行的語句在C語言中有3種可以構(gòu)成循環(huán)結(jié)
18、構(gòu)的循環(huán)語句:while、dc-while和for解析:解析while語句的循環(huán)體可能一次都不會執(zhí)行,do.while語句的循環(huán)體至少會執(zhí)行一次,選項A敘述錯誤;break語句是跳出當(dāng)前的語句塊,只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用,選項B敘述正確;執(zhí)行continue語句時將跳過本次循環(huán)體中余下尚未執(zhí)行的語句,選項C敘述正確;在C語言中有3種可以構(gòu)成循環(huán)結(jié)構(gòu)的循環(huán)語句:while、do.while和for,選項D敘述正確。故本題答案為A選項。22. 有下列程序:#include<stdio.h>main()inta=7,i;for(i=1;i<=3;i+)if(a>
19、;13)break;if(a%2)a+=3;continue;a=a+4;printf("%d,%d",i,a);程序執(zhí)行后的輸出結(jié)果是。(分數(shù):1.00)A. 3,18B. 3,14VC. 4,182,10解析:解析程序中,a的初值為乙for循環(huán)中判斷a的值,若a的值大于13,那么執(zhí)行break語句;若a%2為1,a自增3后執(zhí)行continue語句;最后將a自增4;i=1時,a=7,a>13為假,不執(zhí)行break語句;a%2為1,a自增3,a的值為10,執(zhí)行continue語句;i=2時,a=10,a>13為假,不執(zhí)行break語句;a%2為0,執(zhí)行a=a+4
20、,a自增后值為14;i=3時,a=14,a>13為真,執(zhí)行break語句;輸出i的值為3,a的值為14。故本題答案為B選項。23. 有如下程序:#include<stdio.h>voidchange(int*array,intlen)for(;len>=0;len-)arraylen+=2;main()inti,array6=1,2,3;change(array,5);for(i=0;iv5;i+)printf("%d,”,arrayi);程序運行后的輸出結(jié)果是。(分數(shù):1.00)A. 1,2,0,0,0,B. 3,4,5,6,7,C. 2,3,4,5,6,3
21、,4,5,2,2,V解析:解析change()函數(shù)接收一個數(shù)組array和整數(shù)len,通過for循環(huán)逆序遍歷數(shù)組array中的前l(fā)en+1個元素,然后將每個元素的值自增2;main()函數(shù)定義并初始化一個數(shù)組array,它包含6個元素,分別是1,2,3,0,0,0;然后將array和5傳給change()函數(shù),所以通過change()函數(shù)的調(diào)用,array中的元素值分別是3,4,5,2,2,2。故本題答案為D選項。24. 有以下程序:#include<stdio.h>intf1(inta)returna*3;intf2(int*b)return*b*5;main()intx=3,y
22、=5;printf("%d,%d/n”,f1(x),f2(&y);程序的運行結(jié)果是。(分數(shù):1.00)A. 9,125B. 9,25VC. 3,153,45解析:解析f1()函數(shù)接收整型數(shù)a,將a的值乘以3,結(jié)果作為函數(shù)返回值返回;f2()接收整型變量的地址,將地址中的值取出后乘以5,結(jié)果作為返回值返回;main()函數(shù)定義兩個變量x、y,初值分別是3和5,所以調(diào)用f1(x)返回值為9,調(diào)用f2(&y)返回值是25。故本題答案為B選項。設(shè)有定義:inta10,*p=a,k;以下為數(shù)組a的10個元素依次讀入數(shù)據(jù)的程序段中錯誤的是。(分數(shù):1.00)A. for(k=0;
23、kv10;k+)scanf("%d”,p+);B. for(k=0;kv10;k+)scanf("%d”,a+k);C. for(k=0;kv10;k+)scanf("%d”,a+);Vfor(;p-a<10;p+)scanf("%d”,p);解析:解析本題定義了一個整型數(shù)組a,它包含10個整型元素,另外定義一個整型指針p,將數(shù)組a的首地址賦給p。選項C中,a+是錯誤的,因為a是數(shù)組名,它是一個常量,不能執(zhí)行自增運算。選項AB、D都可以對數(shù)組a的10個元素完成賦值。故本題答案為C選項。25. 有下列程序:#include<stdio.h>
24、;voidfun(inta,intn,intflag)inti=0,j,t;for(i=0;ivn-1;i+)for(j=i+1;j<n;j+)if(flag(aivaj):(ai>aj)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,5,0);for(i=0;iv10;i+)printf("%d,",ci);程序執(zhí)行后的輸出結(jié)果是(分數(shù):1.00)A. 5,4,3,2,1,6,7,8,9,10,B. 6,7,8,9,10,5,4,3,2,1,C. 6,7,8,9,10,
25、1,2,3,4,5,10,9,8,7,6,1,2,3,4,5,解析:解析在本題中,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é)果為:10,9,8,7,6,5,4,3,2,1;然后再次調(diào)用fun()函數(shù),將數(shù)組c、元素個數(shù)5和0傳給fun()函數(shù),將c中前5個元素升序排列,結(jié)果為:6,7,8,9,10,5,4,3,2,1。故本題答案為B選
26、項。若函數(shù)fun定義如下fun(void)doubled;longt=rand();d=t*0.618;returnd;則函數(shù)返回值的類型是(分數(shù):1.00)A. voidB. doubleC. intVlong解析:解析fun()函數(shù)中,使用rand()函數(shù)生成一個隨機無符號整數(shù),然后該無符號整數(shù)自動轉(zhuǎn)換為long類型賦給t;然后計算t與0.618的乘積,先將long自動轉(zhuǎn)換為double類型再運算,結(jié)果賦給d。當(dāng)函數(shù)的返回類型為int類型時,可以省略函數(shù)的返回類型,由于fun()函數(shù)定義時,返回類型省略了,可知fun()函數(shù)的返回值是int類型。綜上所述,返回值d自動轉(zhuǎn)換為int類型。故本
27、題答案為C選項。26. 運算符內(nèi)的數(shù)據(jù)類型只能是。(分數(shù):1.00)A. int和charVB. floatC. doublechar解析:解析運算符中必須是整型數(shù),選項B、C錯誤;另外char類型可以作為整數(shù),所以選項A正確;選項D中沒有int類型。故本題答案為A選項。27. 若有定義語句:intx3=1,2,3,4,5,6;,則以下選項中與該語句等價的是。(分數(shù):1.00)A. intx3=1,2,3,4,5,6;B. intx3=1,2,3,4,5,6;C. intx3=1,2,3,4,5,6;intx3=1,2,3,4,5,6;V解析:解析二維數(shù)組初始化時,可以省略第一維的大小,但是不
28、能省略第二維大小,這是由編譯器原理限制的。事實上,編譯器是這樣處理數(shù)組的:設(shè)有數(shù)組intamn,如果要訪問aij的值,編譯器的尋址方式為:&aij=&a00+i*sizeof(int)*n+j*sizeof(int);(注意n為第二維的維數(shù)),所以第一維大小可以省略,第二維大小不可以省略。當(dāng)定義并初始化二維數(shù)組省略第一維大小時,第一維的大小按以下規(guī)則決定:(1)當(dāng)初值的大小能被第二維的常量表達式的值除盡時,所得商數(shù)就是第一維的大小;當(dāng)初值的個數(shù)不能被第二維的常量表達式的值除盡時,則第一維的大小等于所得的商數(shù)+1。本題中,二維數(shù)組a的初始值個數(shù)為6,第二維大小為3,所以第二維大小
29、為2(6/3),所以a中包含兩個元素,每個元素又是一個包含3個元素的數(shù)組,和選項D等價。故本題答案為D選項。28. 有以下程序:#include<stdio.h>#include<string.h>main()charstr10="One”,"Three”,"Five",*p=str0;printf("%s,",p+10);printf("%d/n",strlen(p+=10);執(zhí)行后的輸出結(jié)果是。(分數(shù):1.00)A. Three,4B. 出錯C. Three,5VFive,5解析:解析本
30、題中定義一個二維字符數(shù)組str,它包含3個字符串,每個字符串存放在一個長度為10的一維數(shù)組中,指針變量p指向strp0,即第一個字符串"Ong,由于"Ong存放在長度為10的一維數(shù)組,p+10指向下一個字符串"Three”,長度為5。故本題答案為C選項。29. 有以下程序:#include<stdio.h>main()chara510="China","beijing","very","welcome","you"char*p5;inti;for(i=3
31、;iv5;i+)pi=*(a+i);printf("%s",pi);printf("%c",*pi);程序執(zhí)行后的輸出結(jié)果是。(分數(shù):1.00)A. wwyyB. ChinaCbeijingbC. veryvwelcomewwelcomewyouyV解析:解析本題中定義一個二維字符數(shù)組a,它包含5個字符串,每個字符串存放在一個長度為10的一維數(shù)組中,指針數(shù)組p包含5個字符指針元素;for循環(huán)中,每次將*(a+i)賦給pi,再輸出pi和*pi;由于*(a+i)等價于ai,每次都是將下標(biāo)為i的字符串首地址賦給pi,再輸出該字符串和該字符串的首字符。i=3時,
32、輸出字符串"welcome',輸出字符”w”;i=4時,輸出字符串“you”,輸出字符”y”,綜上輸出結(jié)果為:"welcomewyouy。故本題答案為D選項。30. 有如下程序:#include<stdio.h>#include<string.h>main()chara=”THIS/0”,*b=”O(jiān)K/0/0”;printf(”d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b);)程序運行后的輸出結(jié)果是(分數(shù):1.00)A.4,62,4B.4,44,1C.652,1D.642,4解析:解析s
33、trlen()函數(shù)求得參數(shù)中字符串的長度(不包括字符串結(jié)束符”/0”),sizeof()運算符求得參數(shù)這種類型所占存儲空間的長度。題意中a是數(shù)組名,由于定義時省略維數(shù)大小,數(shù)組大小是初始化的字符個數(shù),a的數(shù)組大小為6。綜上所述,strlen(a)只計算字符"T"、"H”、"I”、"S”,結(jié)果為4;sizeof(a)是求得數(shù)組a的大小,結(jié)果為6;另外指針b指向一個字符串"OK/0/0”,所以strlen(b)只計算字符”0”、”K”,結(jié)果為2;sizeof(b)求得指針占用存儲空間的大小,結(jié)果為4。故本題答案為A選項。31. 有以下程序
34、:#include<stdio.h>main()(charca35=”A”,”BB”,”CCC”;char*pa3=”a”,”bb”,”ccc”;printf("d,%d/n”,sizeof(ca0),sizeof(pa0);程序的運行結(jié)果是。(分數(shù):1.00)A. 7,4B. 3,5C. 5,4V2,2解析:解析sizeof()運算符的功能是計算參數(shù)這種類型所占存儲空間的長度。題意中首先定義二維字符數(shù)組ca,它包含3個字符串,它們分別存放在3個長度為5的一維數(shù)組中;還定義一個字符指針數(shù)組pa,它包含3個字符指針,分別指向3個字符串。ca0相當(dāng)于ca中第1個數(shù)組的數(shù)組名,
35、使用sizeof()可以計算該數(shù)組的長度是5;pa0是一個字符指針類型,sizeof()求得指針類型的長度是4;程序輸出結(jié)果為5,4。故本題答案為C選項。32. 有如下程序:#include<stdio.h>#include<string.h>main()char*str="0/n0123/4":printf(”%d”,strlen(str);程序運行后的輸出結(jié)果是。(分數(shù):1.00)A. 3B. 6C. 87V解析:解析strlen()函數(shù)求得參數(shù)中字符串的長度(不包括字符串結(jié)束符”/0”)。程序定義一個字符指針變量str,并使用字符串“0/n01
36、23/4”初始化,然后將str傳給strlen()函數(shù),用strlen()函數(shù)計算該字符串的長度,該字符串中的字符分別是:”0”、”/n”、”0”、”1”、”2”、”3”、”/4”、"/0”。其中”/4”表示菱形符號”。除了”/0”,其他字符都屬于strlen()函數(shù)的計算字符,結(jié)果為7。故本題答案為D選項。33. 有以下程序:#include<stdio.h>inta5=7,10,3;intn=3;int*p=a;voidmain()inti;inta2=1,0;for(i=0;ai;i+)printf("%4d”,ai);for(i=0;ai;i+)inta
37、3=100,200,300;printf("%4d”,ai);printf("/n");程序的運行結(jié)果是。(分數(shù):1.00)A. 1100VB. 10100200300C. 11002003001100200解析:解析在本題中,語句inta5=7,10,3中的數(shù)組a是全局變量,作用域是整個程序,我們假設(shè)它為a5。main()函數(shù)中語句inta2=1,0的數(shù)組a是局部變量,作用域是整個main()函數(shù),我們假設(shè)它為a2ofor循環(huán)中inta3=100,200,300的數(shù)組a也是局部變量,作用域是第二個for循環(huán)的循環(huán)體,我們稱它為a3o第一個for循環(huán)中,a2屏蔽了
38、全局變量a5,所以輸出的是a2的元素,且由于a1=0,當(dāng)i=1時,循環(huán)條件ai為假,僅輸出第一個元素1。第二個for循環(huán)的循環(huán)條件ai也是a2中的元素,當(dāng)i=0時,a0=1,循環(huán)條件為真,且循環(huán)體內(nèi)的a3屏蔽了a2和a5,所以輸出的是a3中的第一個元素100;當(dāng)i=1時,循環(huán)條件a1=0,循環(huán)不執(zhí)行,最后輸出換行符,本題運行結(jié)果為:1100。故本題答案為A選項。34. 有以下程序:#include<stdio.h>voidmain()charch7="43ab21"inti,s=0;for(i=0;chi>="0"&&c
39、hi<="9"i+=2)s=10*s+chi-"0"printf("%d/n",s);程序運行后的輸出結(jié)果是。(分數(shù):1.00)A. 48B. 12ba34C. 43214V解析:解析main()函數(shù)定義一個字符數(shù)組ch,并使用字符串初始化,for循環(huán)從ch下標(biāo)為0的字符開始,遍歷所有下標(biāo)為偶數(shù)的字符,由循環(huán)條件chi>="0"&&chi<="9”可知,若當(dāng)前的字符是數(shù)字字符,那么執(zhí)行循環(huán)體,否則終止循環(huán)。循環(huán)體中,將當(dāng)前字符的ASCII碼與"0"的A
40、SCII碼相減,與s的10倍相加重新賦給s,所以當(dāng)i=0時,ch0是"4”,滿足循環(huán)條件,執(zhí)行循環(huán)體,s=4;當(dāng)i=2時,ch2是"a”,不滿足循環(huán)條件,循環(huán)終止,輸出s的值。故本題答案為D選項。35. 有以下程序:#include<stdio.h>main()(intx=3,y=5,z1,z2;z1=xAy;z2=x+y;printf("%d,%d/n”,z1,z2);)程序執(zhí)行后的輸出結(jié)果是。(分數(shù):1.00)A. 9,8B. 8,8C. 35,86,8V解析:解析%”是異或運算符,兩個運算數(shù)的二進制位逐位進行異或運算,當(dāng)相應(yīng)位的數(shù)值相同時,結(jié)果為
41、0,當(dāng)相應(yīng)位的數(shù)值不同時,結(jié)果為1。題意中,x=3,二進制位00000011,y=5,二進制為00000101,異或運算后的二進制數(shù)為:00000110,所以z1的結(jié)果為6;z2=x+y,結(jié)果為8。故本題答案為D選項。36. 有以下程序:#defineOut(n)n%2=0"%c":"%d"#include<stdio.h>main()(intx;for(x=65;x<69;x+)printf(Out(x),x);)程序的運行結(jié)果是。(分數(shù):1.00)A. 65867DVB. A66C68C. 65666768ABCD解析:解析題意中O
42、ut(n)是一個帶參數(shù)的宏定義,所以main()函數(shù)中printf()函數(shù)宏替換后如下:printf(x%2=0?"%c":"%d",x);所以當(dāng)x的值為奇數(shù)時,條件表達式的結(jié)果為“d,將x按十進制形式輸出;當(dāng)x的值為偶數(shù)時,條件表達式的結(jié)果為“c,將x按字符形式輸出。x=65時,輸出65;x=66時,輸出ASCII碼為66的字符,即"B"x=67時,輸出67;x=68時,輸出ASCII碼為68的字符,即”D”;綜上所述,輸出結(jié)果為:65867D。故本題答案為A選項。37. 有如下程序:#include<stdio.h>s
43、treetperson(charName10;intAge;);main()(structpersonroom4="Zun”,11,"Liu”,10,"He”,12,"Zhao”,13;printf("%s:%d",(room+3)->Name,(room+1)->Age);程序運行后的輸出結(jié)果是。(分數(shù):1.00)A. Liu:10B. Zun:12C. Zhao:10VHe:11解析:解析程序定義一個person類型的結(jié)構(gòu)體,該類型包含兩個成員:字符數(shù)組Name整型數(shù)Age。main()函數(shù)中使用結(jié)構(gòu)體類型person
44、定義了room數(shù)組,它包含4個person類型的元素,并完成了初始化,所以(room+3)->Name價于room3.Name,(room+1)->Age等價于room1.Age!,程序輸出結(jié)果為:Zhao:10。故本題答案為C選項。有如下代碼#include<stdio.h>structnodecharid;structnode*next;a="A",b="B",c="C",*p=&a,*pt;main()p->next=&b:p=p->next;p->next=&c
45、;p=p->next;p->next=NULL;p=&a;若代碼經(jīng)運行后形成下圖所示的數(shù)據(jù)結(jié)構(gòu):則以下可以刪除中間節(jié)點b的正確選項是o(分數(shù):1.00)A. pt=p->next;p->next=p->next->next;free(pt);VB. pt=p->next;p->next=p->next->next->next;free(pt);C. pt=&b;free(pt);pt=&b;p->next=p->next->next->next;free(pt);解析:解析在本題中
46、,a、b、c三個節(jié)點都是node類型,它們都有兩個成員:字符成員id,node指針成員next。由于a的next指向b,b的next指向c,a、b、c構(gòu)成了鏈表。要想刪除b節(jié)點,只需要將a節(jié)點的next(p->next)指向c(p->next->next),然后將節(jié)點b的存儲空間釋放即可,所以刪除b節(jié)點的語句如下:pt=p->next;p->next=p->next->next;free(pt);故本題答案為A選項。41, 二、程序填空題(總題數(shù):1,分數(shù):18.00)下列給定程序中,函數(shù)fun的功能是:將S所指字符串中的所有數(shù)字字符移到所有非數(shù)字字符
47、之后,并保持數(shù)字字符串和非數(shù)字字符串原有的次序。例如,s所指的字符串為“def35adh3kjsdf7”,執(zhí)行后結(jié)果為“defadhkjsdf3537”。請在程序的下劃線處填入正確的內(nèi)容,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(char*s)(inti,j=0,k=0;chart180,t280;for(i=0;si!="/0”;i+)if(si>="0"&&siv="9")(t2j=si;1;)else(
48、t1k+=si;)t2j=0;t1k=0;for(i=0;ivk;i+)2;for(i=0;iv3;i+)sk+i=t2i;)main()(chars80="ba3a54j7sd567sdffs"pfintf("/nTheoriginalstringis:%s/n",s);fun(s);pfintf("/nTheresultis:%s/n",s);)(分數(shù):18.00)解析:j+或j+=1或+j或j=j+1si=t1ij考點本題考查:指針型變量;數(shù)組變量賦值;for循環(huán)語句。解析填空1:根據(jù)函數(shù)fun()中的內(nèi)容可知,數(shù)組t1存儲了s中的非數(shù)字字符,數(shù)組t2存儲了s中的數(shù)字字符,為了存儲下一個數(shù)字字符,下標(biāo)j要進行加1操作。42, 填空2:將s串中的數(shù)字與非數(shù)字字符分開后,要先將非數(shù)字字符
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年場項目投標(biāo)失敗后的合同履行監(jiān)督與違約責(zé)任合同4篇
- 二零二五版高性能門窗材料供應(yīng)與加工合同4篇
- 2025年度苗木種植項目招投標(biāo)合同4篇
- 2025年度廢油品回收處理承包合同樣本4篇
- 2025年度重型卡車維修場地使用權(quán)轉(zhuǎn)讓合同4篇
- 基于物聯(lián)網(wǎng)的2025年度智能農(nóng)業(yè)種植管理與銷售合同3篇
- 二零二五年純凈水生產(chǎn)線環(huán)保設(shè)施升級合同3篇
- 個性化借款利息合同樣本2024版一
- 二零二四年危險品運輸司機車輛維護保養(yǎng)聘用合同范本3篇
- 2025年城市綜合體沉降觀測與景觀設(shè)計合同4篇
- 2025年溫州市城發(fā)集團招聘筆試參考題庫含答案解析
- 2025版高考物理復(fù)習(xí)知識清單
- 2024年度工作總結(jié)與計劃標(biāo)準(zhǔn)版本(2篇)
- 全球半導(dǎo)體測試探針行業(yè)市場研究報告2024
- 2024年注冊計量師-一級注冊計量師考試近5年真題附答案
- 2023-2024學(xué)年深圳市高一年級下冊英語期末考試題(含答案)
- 工程管理重大風(fēng)險應(yīng)對方案
- 直播帶貨助農(nóng)現(xiàn)狀及發(fā)展對策研究-以抖音直播為例(開題)
- 《光伏發(fā)電工程工程量清單計價規(guī)范》
- (完整版)保證藥品信息來源合法、真實、安全的管理措施、情況說明及相關(guān)證明
- 營銷專員績效考核指標(biāo)
評論
0/150
提交評論