C語言筆試題帶答案_第1頁
C語言筆試題帶答案_第2頁
C語言筆試題帶答案_第3頁
C語言筆試題帶答案_第4頁
C語言筆試題帶答案_第5頁
已閱讀5頁,還剩349頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一、選擇題(1)(10)每小題2分, (11)(50)每小題1分,共60分)下列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請將正確的選項(xiàng)涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。(1)在數(shù)據(jù)結(jié)構(gòu)中,從邏輯上可以把數(shù)據(jù)結(jié)構(gòu)分為_。A)動(dòng)態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu) B)緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)C)線性結(jié)構(gòu)和非線性結(jié)構(gòu) D)內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)答案:C評(píng)析:邏輯結(jié)構(gòu)反映數(shù)據(jù)元素之間的邏輯關(guān)系,線性結(jié)構(gòu)表示數(shù)據(jù)元素之間一對(duì)一的關(guān)系,非線性結(jié)構(gòu)表示數(shù)據(jù)元素之間一對(duì)多或多對(duì)一的關(guān)系。(2)若進(jìn)棧序列為l,2,3,4,進(jìn)棧過程中可以出棧,則下列不可能的一個(gè)出棧序列是_。A)1,4,3,2 B)2,3,4,

2、lC)3,1,4,2 D)3,4, 2,1答案:C評(píng)析:棧是一種后進(jìn)先出表,選項(xiàng)c中,先出棧的是3,說明此時(shí)棧內(nèi)必然有1,2,由于l先于2進(jìn)棧,所以l不可能在2之前出棧,故選項(xiàng)C這種出棧序列是不可能的。(3)排序方法中,將整個(gè)無序序列分割成若干小的子序列并分別進(jìn)行插入排序的方法,稱為_。A)希爾排序 B)冒泡排序 C)插入排序 D)選擇排序答案:A評(píng)析:希爾排序法的基本思想是:將整個(gè)無序序列分割成若干小的子序列分別進(jìn)行插入排序。(4)在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關(guān)鍵碼值11,所需的關(guān)鍵碼比較次數(shù)為_。A)2 B)3 C)4 D)5答案:

3、C評(píng)析:二分法查找是用關(guān)鍵碼與線性表的中間元素比較,然后根據(jù)比較結(jié)果來判斷是結(jié)束查找,還是在左邊或者右邊子表按相同的方法繼續(xù)查找。本題中,與ll比較的關(guān)鍵碼分別為15,8,10,12四個(gè)。(5)對(duì)于n個(gè)結(jié)點(diǎn)的單向鏈表(無表頭結(jié)點(diǎn)),需要指針單元的個(gè)數(shù)至少為_。A)n-1 B)n C)n+l D)2n答案:C評(píng)析:在n個(gè)結(jié)點(diǎn)的單向鏈表(無表頭結(jié)點(diǎn))中,每個(gè)結(jié)點(diǎn)都有一個(gè)指針單元(即指針域),加上頭指針,至少需要n+1個(gè)指針單元。(6)在軟件開發(fā)過程中,軟件結(jié)構(gòu)設(shè)計(jì)是描述_。A)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu) B)軟件體系結(jié)構(gòu) C)軟件結(jié)構(gòu)測試 D)軟件控制過程答案:B評(píng)析:從工程管理角度來看,軟件設(shè)計(jì)分兩步完成:概

4、要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)(又稱結(jié)構(gòu)設(shè)計(jì))將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)、確定系統(tǒng)級(jí)接口、全局?jǐn)?shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式。(7)模塊本身的內(nèi)聚是模塊獨(dú)立性的重要性度量因素之一。在7類內(nèi)聚中,具有最強(qiáng)內(nèi)聚 的一類是_。A)順序性內(nèi)聚 B)過程性內(nèi)聚 C)邏輯性內(nèi)聚 D)功能性內(nèi)聚答案:D評(píng)析:內(nèi)聚性是一個(gè)模塊內(nèi)部各元素間彼此結(jié)合的緊密程度的度量。內(nèi)聚共有7類,它們之間的內(nèi)聚性由弱到強(qiáng)排列順序?yàn)椋号既粌?nèi)聚、邏輯內(nèi)聚、時(shí)間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。(8)數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)流都是_,僅僅是所處的狀態(tài)不同。A)分析結(jié)果 B)事件 C)動(dòng)作 D)數(shù)據(jù)答案:D評(píng)析:數(shù)據(jù)流圖有4種成分:源點(diǎn)或終點(diǎn)、處

5、理、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)流。數(shù)據(jù)存儲(chǔ)是處于靜止?fàn)顟B(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運(yùn)動(dòng)中的數(shù)據(jù)。(9)數(shù)據(jù)的完整性是指數(shù)據(jù)的正確性、有效性和_。A)可維護(hù)性 B)獨(dú)立性 C)安全性 D)相容性答案:D評(píng)析:數(shù)據(jù)模型的完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)及其狀態(tài)的變化,以保證數(shù)據(jù)的正確性、有效性和相容性。(10)關(guān)系代數(shù)運(yùn)算是以_為基礎(chǔ)的運(yùn)算。A)關(guān)系運(yùn)算 B)謂詞運(yùn)算 C)集合運(yùn)算 D)代數(shù)運(yùn)算答案:C評(píng)析:關(guān)系代數(shù)運(yùn)算是以關(guān)系代數(shù)作為運(yùn)算對(duì)象的一組高級(jí)運(yùn)算的集合。它的基本操作是并、交、差、笛卡爾積,另外還包垂直分割(投影)、水平分割(選擇)、關(guān)系的結(jié)

6、合(連接)等。(11)能將高級(jí)語言程序轉(zhuǎn)換成目標(biāo)語言程序的是_。A)調(diào)試程序 B)解釋程序 C)編譯程序 D)編輯程序答案:C評(píng)析:用高級(jí)語言編寫的程序稱為“源程序”,而計(jì)算機(jī)只能識(shí)別和執(zhí)行由0和l組成的二進(jìn)制指令,所以高級(jí)語言必須先用一種稱為“編譯程序”的軟件,把源程序翻譯成二進(jìn)制形式的“目標(biāo)程序”。(12) _是構(gòu)成c語言程序的基本單位。A)函數(shù) B)過程 C)子程序 D)子例程答案:A評(píng)析:c程序是由函數(shù)構(gòu)成的。一個(gè)c源程序至少包含一個(gè)main函數(shù),也可以包含一個(gè)main函數(shù)和若干個(gè)其他函數(shù),因此,函數(shù)是c程序的基本單位。(13)可以在C語言中用做用戶標(biāo)識(shí)符的是_。A)void B)as

7、_b3 C)for D)2cdefine _123 -abc DoWORD If cas SIG答案:B評(píng)析:c語言規(guī)定,標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種符號(hào)組成,而且第一個(gè)字符必須是字母或下劃線。另外還需要注意的是關(guān)鍵字不能作標(biāo)識(shí)符。選項(xiàng)A中void,C中for都為關(guān)鍵字,D中2c以字母開頭。(14)若有以下類型說明語句:char w;int x;float y,z;則表達(dá)式w*x+z-y的結(jié)果為_類型。A)float B)char C)int D)double答案:A評(píng)析:在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)參加運(yùn)算,需要先將其轉(zhuǎn)換成同一類型的數(shù)據(jù),然后再進(jìn)行運(yùn)算。轉(zhuǎn)換的順序由低到高為:char

8、,shortintunsignedlongdoublefloat,故結(jié)果為float型。(15)main() float x=123A56;printf(“-52fn”,x);以上程序輸出的結(jié)果是_。A)1234 B)1235 C)12345 D)12346答案:D評(píng)析:f格式符,用來輸出實(shí)數(shù),以小數(shù)形式輸出。“-mnf”的含義是:輸出數(shù)據(jù)共占m列,其中n位小數(shù),如果輸出位數(shù)小于m。則右端補(bǔ)空格。如果總長度大于列數(shù),則按實(shí)際情況四舍五入輸出。(16)下面語句的輸出結(jié)果是_。Printf(“dn”,strlen(“t”065xffn”);A)14 B)8C)5 D)輸出項(xiàng)不合法,無正常輸出答案:

9、C評(píng)析:在c語言中,以“”開頭的字符均為轉(zhuǎn)義字符,其中“”后可跟l3位八進(jìn)制數(shù)或在“”后跟字母x及l(fā)2位十六進(jìn)制數(shù),以此來代表一個(gè)特定的字符。(17)下列程序的輸出結(jié)果是_。main() int a=0,b=0,c=0;if(+a0lI+b0)+c;printf(“na=d,b=d,c=d”,a,b,C);A)a=0,b=0,c=0 B)a=l,b=l,c=1C)a=l,b=O, c=I D)a=0, b=1c=1答案:C評(píng)析:“”是或運(yùn)算,它有個(gè)“短路”的特點(diǎn)需特別注意,當(dāng)“”運(yùn)算符左邊的表達(dá)式的值為真時(shí),則程序就不再對(duì)“”右邊的表達(dá)式的值進(jìn)行運(yùn)算,而是使得整個(gè)表達(dá)式的值直接為真。(18)下

10、列程序的輸出結(jié)果是_。Main() int i;for(i=1;i+l;i+) if(i4)printlf(”d”,i+);break;printf(“d”,i+);A)55 B)56C)程序錯(cuò)誤,沒有輸出 D)循環(huán)條件永遠(yuǎn)為真,死循環(huán)答案:B評(píng)析:本程序中有個(gè)for循環(huán),但注意到for循環(huán)的條件是“i+l”,也就是只要i+l的值為真(非零值均為真),就執(zhí)行循環(huán)。當(dāng)i=l的時(shí),i+l的值為真,判斷if條件不成立,執(zhí)行i+,輸出i的值為5。(19)下列程序的輸出結(jié)果是_。#define A 100main() int i=O,sum=O;do if(I=(i2)*2)continue;sum+=

11、i;while(+iA);printf(“dn”,sum);A)2500 B)2050 C)4 D)O答案:A評(píng)析:本題程序的功能是求1到_99之問(包括1和99)所有奇數(shù)之和。程序中的while循環(huán)的終止條件為+i=100,在while循環(huán)體內(nèi),如果i是偶數(shù),則執(zhí)行continue,跳過這一次循環(huán),執(zhí)行下一次循環(huán),否則求和。最后輸出的值是1到99之間(包括l和99)所有奇數(shù)之和(1+99)*502=2500。(20)下列程序的輸出結(jié)果是_。main() int I=3;switch(i) case 1:case 2:printf(”d”,i);case 3:case 4:break;defa

12、ult:printf(”O(jiān)K”);A)0 B)3 C)OK D)沒有任何輸出答案:D評(píng)析:在題中,i的值為3,由于“case 3:”后面沒有break語句,所以繼續(xù)向下執(zhí)行“case 4:”后面的語句,由于“case 4:”后面的語句為break強(qiáng)行退出switch語句,所以,本題沒有任何輸出。(21)下列程序執(zhí)行后的輸出結(jié)果是_。main() int m3=1,4,7,2,5,8,3,6,9;int i,k=2:for(I=0;i3;i+)printf(”d”,mki);A)456 B)258 C)369 D)789答案:C評(píng)析:根據(jù)二維數(shù)組的定義得出:mOO=1,mO1=4,mO2=7,m

13、10=2,rail1=5,m12=8,m20=3,m2l=6,m22=9,所以本題的輸出是第3行的值m20,m21,m22,即369。(22)設(shè)已定義洱口k為int類型變量,則以下for循環(huán)語句_。for(i=0;k=-1,k=1;i+,k+)printf(”*n”);A)判斷循環(huán)結(jié)束的條件不合法 B)是無限循環(huán)C)循環(huán)一次也不執(zhí)行 D)循環(huán)只執(zhí)行一次答案:B評(píng)析:本題定義了一個(gè)for循環(huán),循環(huán)變量是i,但由于本題并沒有設(shè)置循環(huán)條件,所以循環(huán)的條件永遠(yuǎn)默認(rèn)為真,即無限次執(zhí)行循環(huán)。(23)下面程序的輸出結(jié)果是_。unsigned fun(unsigned num) unsigned k=1;do

14、k*=numlO;num=lO;while(num);return(k);main() unsigned n。26;printf(”dn”,fun(n);A)0 B)4 C)12 D)無限次循環(huán)答案:C評(píng)析:本題定義了一個(gè)fun函數(shù),用于num求和,具體執(zhí)行過程如下:num=26:k=k*(num10)=1*(2610),所以k=6,num=num10=2;num=2:k=k*(num10)=6*(210),所以k=12,num=numlO=O;num=O:while條件不成立,所以返回k的值12(24)已知字母A的ASCII碼值是65,字母a的ASCII碼值是97,以下程序_。main()

15、char a=A;int b=20;printf(“d,o”,(a=a+a,a+b,b),a+a-A,b);A)表達(dá)式非法,輸出零或不確定值B)因輸出項(xiàng)過多,無輸出或輸出不確定值C)輸出結(jié)果為20,141D)輸出結(jié)果為20,141,20答案:C評(píng)析:本題中首先輸出逗號(hào)表達(dá)式“a=a+a,a+b,b”的值,即20。然后以八進(jìn)制的形式輸出a+a-A的值為97對(duì)應(yīng)的八進(jìn)制數(shù)141,由于最后一個(gè)表達(dá)式b沒有對(duì)應(yīng)輸出格式的輸出項(xiàng)表列就不會(huì)輸出。(25)C語言函數(shù)返回值的類型是由_決定的。A)return語句中的表達(dá)式類型 B)調(diào)用函數(shù)的主調(diào)函數(shù)類型C)調(diào)用函數(shù)時(shí)臨時(shí) D)定義函數(shù)時(shí)所指定的函數(shù)類型答案:

16、D評(píng)析:函數(shù)值的類型應(yīng)當(dāng)是在定義函數(shù)時(shí)指定的。在定義函數(shù)時(shí)對(duì)函數(shù)值說明的類型一般應(yīng)該和return語句中的表達(dá)式類型一致,如果不_致,則以函數(shù)類型為準(zhǔn),即函數(shù)類型決定返回值的類型。(26)下列程序執(zhí)行后輸出的結(jié)果是_。int d=l:fun(int p) int d。5;d+=p+;printf(”d,”,d);main() int a=3;fun(a);d+=a+:printf(”dn”,d);A)8,12 B)9,13 C)8,4 D)9,5答案:C評(píng)析:本題執(zhí)行過程如下:首先調(diào)用fun函數(shù),使得實(shí)參a的值3傳遞給形參p,得到局部變量d=8,打印出局部變量d的值8;返回主函數(shù)執(zhí)行“d+=a

17、+”,此處的d為全局變量,所以d=1+3=4(由于本題是值傳遞,所以在函數(shù)fun中對(duì)p值的改變并不能引起a的改變),故本題的輸出是8,4。(27)已知下面的程序段,正確的判斷是_。#define A 3#define B(A)(_A+1)a)int a=3:X=3*(A+B(7);A)程序錯(cuò)誤,不允許嵌套定義 B)X=93C)X=8l D)程序錯(cuò)誤,宏定義不允許有參數(shù)答案:C評(píng)析:本題的宏定義是合法的,宏定義展開為3*(3+(A+1)*a)=3*(3+(7+1)*3)=81。(28)定義int*swap()指的是_。A)一個(gè)返回整型值的函數(shù)swap()B)一個(gè)返回指向整型值指針的函數(shù)swap(

18、)C)一個(gè)指向函數(shù)swap()的指針,函數(shù)返回一個(gè)整型值D)以上說法均錯(cuò)答案:B評(píng)析:一個(gè)函數(shù)可以帶回一個(gè)整型值、字符值、實(shí)型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號(hào)和號(hào),由于f)優(yōu)先級(jí)高于t。故它是一個(gè)返回整型指針的函數(shù)。(29)以下程序段的輸出結(jié)果是_。main() char s110,s210,s310;scanf(”s”,s1);gets(s2);gets(s3);puts(s 1);puts(s2);puts(s3);輸入數(shù)據(jù)如下: (此處代表回車符)aaabbbA)aaa B)aaa C)aaa0bbb0 D)aaabbbbbbbbb答案:B評(píng)析:scanf是標(biāo)

19、準(zhǔn)輸入函數(shù),在輸入字符串a(chǎn)aa時(shí),實(shí)際的內(nèi)容為“aaa0”,“0”是由系統(tǒng)自動(dòng)加入的;gets的功能是從終端讀入一行字符,即一直讀到換行符為止,并由系統(tǒng)自動(dòng)以“0”代替換行符。(30)下述函數(shù)功能是_。Int fun(char*x) char*y=x;while(*y+);return y-x-l;A)求字符串的長度 B)求字符串存放的位置C)比較兩個(gè)字符串的大小 D)將字符串x連接到字符串y后面答案:A評(píng)析:在函數(shù)體內(nèi)定義一字符型指針并指向形參,然后遍歷其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的長度。(31)以下程序的輸出結(jié)果是_。main() char str12=s

20、,t,r,i,n, g;printf(”dn”,strlen(str);A)6 B)7 C)ll D)12答案:A評(píng)析:在c語言中,字符串的長度是其首字符到NULL(不含)字符的總字符個(gè)數(shù)。本題定義字符數(shù)組str的同時(shí),對(duì)第7個(gè)元素,由系統(tǒng)自動(dòng)添加上“0”,故字符串的長度為6。(32)請讀程序段:char str=”ABCD”,*p=str;printf(”dn”,*(p+4);程序段的輸出結(jié)果是_。A)68 B)0C)字符D的地址 D)不確定的值答案:B評(píng)析:在對(duì)字符數(shù)組賦字符串值時(shí),系統(tǒng)會(huì)自動(dòng)在字符串的末尾加上一個(gè)字符串結(jié)束標(biāo)志“0”,故指向字符數(shù)組的指針p的+(p+4)的值為“0”。由于

21、“0”的編碼值就是0,所以本題輸出為0。(33)若有定義:int a410;,則以下選項(xiàng)中對(duì)數(shù)組元素aij引用錯(cuò)誤的是_。(0=i4,0=j10)A)*(aOO+10*i+j) B)*(a+i)+jC)*(*(a+i)+j) D)*(ai+j)答案:B評(píng)析:本題中選項(xiàng)B是錯(cuò)誤的引用,*(a+i)+j只代表了aii的地址。(34)設(shè)有以下語句:char strl=”string”,str28,。str3,。str4=”strin;則_不是對(duì)庫函數(shù)的正確調(diào)用。A)strcpy(strl,”HELLOl”); B)strcpy(str2,”HELL02”);C)strcpy(str3,”HELL03

22、”); D)strcpy(str4,”HELL04”);答案:C評(píng)析:c語言中:sgcpy(stl,st2);,其兩個(gè)參數(shù)均為字符指針或字符數(shù)組,選項(xiàng)c中的目的串指針str3沒有指向具體有效的存儲(chǔ)單元,故是錯(cuò)誤的調(diào)用。(35)請讀程序:#include#includemain() char*sl=”AbCdEf”,*s2=”aB”;s1+;s2+;printf(”dn”,strcmp(s 1,s2);上面程序的輸出結(jié)果是_。A)正數(shù) B)負(fù)數(shù) C)零 D)不確定的值答案:A評(píng)析:函數(shù)strcmp的功能是比較字符串s1和s2,如果sls2,則返回個(gè)正數(shù);如果sls2,所以函數(shù)的值為正數(shù)。(36)

23、下面程序的輸出是_。char s=”ABcD”;main() char*p;for(p=s;ps+4;p+)printf(”sn”,p);A)ABCD B)A C)D D)ABCDBCD B C ABCCD C B ABD D A A答案:A評(píng)析:在第一次執(zhí)行for循環(huán)時(shí),字符數(shù)組的首地址賦給了指針變量p,使得指針變量p指向了s的首地址,輸出p所指向的字符串;第二次執(zhí)行for循環(huán)時(shí),p值增加1,p指向了s的第二個(gè)元素輸出BCD;第三次輸出CD;第四次輸出D;直到p指向字符串的結(jié)束字符“0”,for循環(huán)終止執(zhí)行。(37)以下程序輸出的結(jié)果為_。main() char* alpha6=“ABCD”

24、,EFGH”,”IJKL”,”MNOP”,”QRST”,”UVwX”;char*p;int i:p=alpha;for(I=0;i4;i+)printf(”s”,pI);A)ABCDEFGHIJKL B)ABCDC)ABCDEFGHIJKLMNOP D)AEIM答案:C評(píng)析:alphaO指向“ABCD”的首地址;alpha1指向“EFGH”的首地址;alpha2指向“IJKL”的首地址,依此類推。當(dāng)執(zhí)行p=alpha后,p指向指針數(shù)組alpha的首地址。for循環(huán)中輸出了4個(gè)字符串。(38)下面程序的輸出結(jié)果是_。#includemain() char*p=”B00L”,”0PK”,”H”,”

25、SP”;int i:for(i=3;i=0;i,i)printf(“c”,*pi);printf(”n”);A)SO B)SP C)SPOPK D)SHOB答案:A評(píng)析:p0存放的是“BOOL0”的首地址;p1存放的是“OPK0”的首址等。在printf語句中輸出的+pI表示pi字符串的第一個(gè)字符。在for循環(huán)中,i的初值為3,那么輸出的第一個(gè)字符為“s”,接著兩次i,則輸出的值為+p1,即字符“0”,所以本題的輸出為SO。(39)以下程序的輸出結(jié)果是_。#includevoid prt(int*x,int*y,int*z) printf(”d,d,dn”,+*x,+*y*(z+);int a

26、=10,b=40,c=20;main() prt(&a,&b&C);prt(&a,&b,&C);A)ll,42,3l B)ll,41,20 C)1l,21,40 D)11,41,2l12,22,41 12,42,20 11,2l,41 12,42,22答案:B評(píng)析:由于實(shí)參傳送的是變量的地址,所以對(duì)形參指針?biāo)赶虻膯卧獌?nèi)容的改變,即對(duì)實(shí)參內(nèi)容的改變。(40)若一個(gè)外部變量的定義形式為static int x;,那么,其中static的作用應(yīng)該是_。A)將變量存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū)B)使變量x可以由系統(tǒng)自動(dòng)初始化C)使x只能在本文件內(nèi)引用D)使x的值可以永久保留答案:C評(píng)析:事實(shí)上,無論有無stati

27、c修飾,外部變量都具有A、B和c三種特性。作為一種修飾,static僅是限制此類型外部變量的引用范圍:只能在定義它的文件范圍內(nèi)使用。(41)以下程序的輸出結(jié)果是_。#include#define SQR(x)x*xmain() int a,k=3;a=+SQR(k+1);printf(”dn”,a);A)8 B)9 C)17 D)20答案:B評(píng)析:本題宏替換中遇到形參x以實(shí)參k+l代替,其它字符不變。sQR(k+1)展開后應(yīng)為字符串k+l*k+l。(42)下面是對(duì)宏定義的描述,不正確的是_。A)宏不存在類型問題,宏名無類型,它的參數(shù)也無類型B)宏替換不占用運(yùn)行時(shí)間C)宏替換時(shí)先求出實(shí)參表達(dá)式的

28、值,然后代入形參運(yùn)算求值D)宏替換只不過是字符替代而已答案:C評(píng)析:宏替換實(shí)質(zhì)上就是字符替代,它不可能進(jìn)行計(jì)算,故c錯(cuò)誤。帶參數(shù)的宏與函數(shù)相比,宏在程序編譯之前已經(jīng)將代碼替換到程序內(nèi),執(zhí)行時(shí)不會(huì)產(chǎn)生類似于函數(shù)調(diào)用的問題,可以說不占用運(yùn)行時(shí)間。(43)以下程序(程序左邊的數(shù)字為附加的行號(hào))_。1#include2#include3main()4char s=”string”;5 puts(s);6 strcpy(s,”hello”);7 printf(”3sn”,s);A)沒有錯(cuò) B)第l行有錯(cuò) C)第6行有錯(cuò) D)第7行有錯(cuò)答案:B評(píng)析:字符串復(fù)制函數(shù)strcpy包含在頭文件stringh中,

29、因此,程序中的第l行文件包含命令是錯(cuò)誤的。(44)若有如下說明,則_的敘述是正確的。struct st int a;int b2l;a;A)結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名,定義是非法的B)程序只在執(zhí)行到該定義時(shí)才為結(jié)構(gòu)體st分配存儲(chǔ)單元C)程序運(yùn)行時(shí)為結(jié)構(gòu)體st分配6個(gè)字節(jié)存儲(chǔ)單元D)類型名struct st可以通過extern關(guān)鍵字提前引用(即引用在前,說明在后)答案:D評(píng)析:結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名是合法的定義,引用成員a的方法是aa,變量a處于不同的“層次”上,系統(tǒng)完全能夠分清。st是一個(gè)結(jié)構(gòu)體名,不會(huì)為結(jié)構(gòu)體名分配存儲(chǔ)空間,應(yīng)該是在運(yùn)行時(shí)為結(jié)構(gòu)體變量a分配6個(gè)字節(jié)的存儲(chǔ)單元,故選

30、項(xiàng)B和選項(xiàng)C錯(cuò)誤。(45)若有以下結(jié)構(gòu)體定義,則_是正確的引用或定義。struct example int x;int y;v1;A)examplex=10 B)example v2x=10C)struct v2;v2x=lO D)struct example v2=10;答案:D評(píng)析:在定義結(jié)構(gòu)體變量時(shí),不能只用結(jié)構(gòu)體名example或關(guān)鍵字strum進(jìn)行定義,必需要用結(jié)構(gòu)體類型名struct example定義,在引用結(jié)構(gòu)體成員變量時(shí),需要用結(jié)構(gòu)體變量名進(jìn)行引用,所以選D。(46)下列程序的執(zhí)行結(jié)果是_。#includeunion un int i;char c21;void main()

31、 union un x;xc0=10:xc1=1:printf(“nd”,xi);A)266 B)ll C)265 D)138答案:A評(píng)析:由于本題定義的是共用體,所以成員表列中的整型變量x與字符數(shù)組c共占用同一個(gè)存儲(chǔ)單元,且此存儲(chǔ)單元為2個(gè)字節(jié),通常cO位于低字節(jié),c1位于高字節(jié),所以xi的值為266。(47)已知形成鏈表的存儲(chǔ)結(jié)構(gòu)如下圖所示,則下述類型描述中的空白處應(yīng)填_。struct linkDatanext char data;_node;A)struct link next B)link*nextC)struct next link D)struct link*next答案:D評(píng)析:

32、在單向鏈表中,由于每個(gè)結(jié)點(diǎn)需要存儲(chǔ)下一個(gè)結(jié)點(diǎn)的地址,且下一個(gè)結(jié)點(diǎn)的數(shù)據(jù)類型與前一個(gè)結(jié)點(diǎn)的數(shù)據(jù)類型完全相同,故應(yīng)為struct link*next。(48)已知小寫字母a的ASCII碼為97,大寫字母A的ASCII碼為65,以下程序的結(jié)果是_。main() unsigned int a=32,b=66;printf(“cn”,atb);A)66 B)98 C)b D)B答案:C評(píng)析:位運(yùn)算符“l(fā)”的作用是按位或,即兩個(gè)二進(jìn)制數(shù)的相應(yīng)位中只要有一個(gè)為1,該位的結(jié)果值為l。最后以字符型輸出, 98對(duì)應(yīng)的字符“b”。(49)C語言庫函數(shù)龜ets(str,n,fp)的功能是_。A)從fp指向的文件中讀取

33、長度n的字符串存入str指向的內(nèi)存B)從fp指向的文件中讀取長度不超過n-l的字符串存入str指向的內(nèi)存C)從fp指向的文件中讀取n個(gè)字符串存Xstr指向的內(nèi)存D)從str讀取至多n個(gè)字符到文件fp答案:B評(píng)析:fgets函數(shù)的作用是從指定的文件讀入一個(gè)字符串。fgets(str,n,fp);中的n為要求得到的字符的個(gè)數(shù),但只從fb指向的文件輸入n-1個(gè)字符,然后在最后加一個(gè)O字符,因此得到的字符串共有n個(gè)字符。(50)下述程序向文件輸出的結(jié)果是_。#includevoid main() FILE*fp=fopen(“TEST”,”wb”);fprintf(fp,”d50fcd”,58,762

34、730,-,2278);fclose(fp);A)58 76273-2278 B)5876273。000000-2278C)5876273-2278 D)因文件為二進(jìn)制文件而不可讀答案:C評(píng)析:fprintf函數(shù)工作時(shí),多個(gè)數(shù)據(jù)間不會(huì)自動(dòng)加分隔符,選項(xiàng)A錯(cuò)誤;浮點(diǎn)數(shù)的輸出格式是“50f”表明其小數(shù)部分輸出O位,即沒有輸出,所以選項(xiàng)B也是錯(cuò)誤的。二、填空題(每空2分,共40分)請將每空的正確答案寫在【l】至【20】序號(hào)的橫線上,答在試卷上不得分。(1)對(duì)于長度為n的順序存儲(chǔ)的線性表,當(dāng)隨機(jī)插入和刪除一個(gè)元素時(shí),需平均移動(dòng)元素 的個(gè)數(shù)為 【l】 。答案:【1】n2評(píng)析:刪除一個(gè)元素,平均移動(dòng)的元素

35、個(gè)數(shù)為(n-l+n-2+0)n=(n-1)2;插入一個(gè)元素,平均移動(dòng)元素個(gè)數(shù)為(n+n-l+n-2+1)n=(n+1)2;所以總體平均移動(dòng)元素個(gè)數(shù)為n2。(2)注釋說明了程序的功能,它分為 【2】 注釋和功能性注釋。答案:【2】序言性評(píng)析:注釋一般分為序言性注釋和功能性注釋。(3)軟件測試中路徑覆蓋測試是整個(gè)測試的基礎(chǔ),它是對(duì)軟件 【3】 進(jìn)行測試。答案:【3】結(jié)構(gòu)評(píng)析:路徑測試是白盒測試方法中的一種,它要求對(duì)程序中的每條路徑最少檢查一次,目的是對(duì)軟件的結(jié)構(gòu)進(jìn)行測試。(4)數(shù)據(jù)庫技術(shù)的主要特點(diǎn)為數(shù)據(jù)的集成性、數(shù)據(jù)的高 【4】 和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理與控制。答案:【4】共享性評(píng)析:

36、數(shù)據(jù)庫技術(shù)的主要特點(diǎn)有以下幾個(gè)方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)韻獨(dú)立性,數(shù)據(jù)統(tǒng)一管理與控制。(5)數(shù)據(jù)元素之間 【5】 的整體稱為邏輯結(jié)構(gòu)。答案:【5】邏輯關(guān)系評(píng)析:數(shù)據(jù)元素之間邏輯關(guān)系的整體稱為邏輯結(jié)構(gòu)。數(shù)據(jù)的邏輯結(jié)構(gòu)就是數(shù)據(jù)的組織形式。(6)若有定義int m=5,y=2,則執(zhí)行表達(dá)式y(tǒng)+=y-=m*=y后,y的值為 【6】 。答案:【6】16評(píng)析:將賦值運(yùn)算符右側(cè)的“表達(dá)式”的值賦給左側(cè)的變量,并且賦值運(yùn)算符按照“白右而左”的結(jié)合順序,本題表達(dá)式應(yīng)先算m的值為10,再運(yùn)算y的值為8,最后計(jì)算y=y+(-8)=-8+(-8)=-16。(7)若x和y都是double型變量,

37、ix的初值為30,y的初值為20,則表達(dá)式pow(y,fabs(x)的值為 【7】 。答案:【7】8000000評(píng)析: fabs函數(shù)功能是求x的絕對(duì)值,計(jì)算結(jié)果為double型。pow功能是計(jì)算x的y次方的值,計(jì)算結(jié)果同樣為double型。所以本題表達(dá)式相當(dāng)于20的30次方,結(jié)果為8000000。(8)設(shè)有char a,b;,若要通過a&b運(yùn)算屏蔽掉a中的其它位,只保留第2位和第8位(右起為第1位),則b的二進(jìn)制是 【8】 。答案:【8】10000010評(píng)析:運(yùn)算“&”的規(guī)則是只有當(dāng)兩個(gè)相應(yīng)的二進(jìn)制位都為1時(shí),該位的結(jié)果才為1。要保留第2、8位,只要將其與二進(jìn)制數(shù)10000010相與。(9)下

38、列程序執(zhí)行后輸出的結(jié)果是 【9】 。f(int a) static c=0;C=a+C+:return(C);main() int a=2,i,k;for(i=O;i2;i+)k=f(a+);printf(”dn”,k);答案:【9】7評(píng)析:在程序執(zhí)行時(shí),static變量僅初始化一次,下次使用時(shí)將使用上次保存的值。(10)下面程序執(zhí)行后輸出的結(jié)果是 【10】 。int m=13:int fun(int x,int y) int m=3;return(x*y-m);main() int a=7,b=5;printf(”dn”,fun(a,b)m);答案:【10】2評(píng)析:本題變量m既是外部變量(值

39、是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,ftm(a,b)m中的m應(yīng)取外部變量的值13,因此輸出2。(11)下列程序執(zhí)行后輸出的結(jié)果是 【11】 。main() nt arr10,i,k=0;for(I=0;il0;i+)arrI=i;for(I=1;i4;i+)k+=arri+i;printf(”dn”,k);答案:【11】12評(píng)析:本題的第一個(gè)fur循環(huán)用于給數(shù)組arr賦初值,第二個(gè)for循環(huán)用于求和運(yùn)算。由于第二個(gè)fur循環(huán)初始值為1,而循環(huán)條件為ix);答案:【12】11評(píng)析:程序中結(jié)構(gòu)體數(shù)組data首地址(即&da

40、ta0)賦值給結(jié)構(gòu)體指針變量p,+(p-x)表示先將p所指向的結(jié)構(gòu)體變量的成員x值加1,然后將此x(即data01x輸出。(13)下面程序有兩個(gè)printf語句,如果第一個(gè)printf語句輸出的是194,則第二個(gè)print語句的輸出結(jié)果是 【13】 。main() int a 10=1,2,3,4,5,6,7,8,9,0,*p;p=a;printf(”Xn”,p);printf(”xn”,p+9);答案:【13】la6評(píng)析:對(duì)于指針變量的運(yùn)算,就是對(duì)地址的運(yùn)算。本題中由于指針指向的是整型變量,所以,使指針變量移動(dòng)9個(gè)位置也就是移動(dòng)18個(gè)字節(jié)。注意,本題是以16進(jìn)制輸出的。(14)以下函數(shù)的功能

41、是計(jì)算s=l+l2!+l3!+ln!,請?zhí)羁?double fun(int n) double s=OO,fac=1O;int i,k=1;for(i=l;i3:printf(”x=o”,x);答案:【15】x=11評(píng)析:在對(duì)無符號(hào)數(shù)的右移是高位補(bǔ)0。(16)函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個(gè)字符開始的n個(gè)字符,請?zhí)羁?。void delete(char s,int i,int n) int j,k,length=O;while(s1ength)【16】 ;i:j=i;if( 【17】 ) k=i+n;if(i+n=length)while(klength)sj+=s

42、k+;sj=0;答案:【16】length+【17】ilength評(píng)析:第一個(gè)循環(huán)極有可能是計(jì)算串的長度,在i=length時(shí)字符才被刪除,被刪除的是從第i個(gè)到第i+n或最后一個(gè)間的所有字符。刪除前,應(yīng)判斷i=length。由于已經(jīng)進(jìn)行了一i運(yùn)算,故實(shí)際應(yīng)填入ilength。(17)下述函數(shù)統(tǒng)計(jì)一個(gè)字符串中的單詞個(gè)數(shù),單詞是指處在空格之間的字符序列,請?zhí)羁?。int word(char*s) int num=O,flag=O;while(*s) if( 【18】 =”)flag=O;else if( 【19】 )flag=1;num+return 【20】 ;答案:【18】*s+【19】flag

43、=O或*(s-1)=”【20】num評(píng)析:在統(tǒng)計(jì)字符串單詞個(gè)數(shù)的算法中,本題的flag是為了記錄一個(gè)單詞是否結(jié)束。第18空應(yīng)填*s+;如果某個(gè)字符不是空格,則必需判斷它是否是單詞,如是,則使得flag的標(biāo)志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=O,否則判斷前一個(gè)字符是否是空格,如果是則說明這個(gè)字符是一個(gè)單詞的開始,將flag標(biāo)志為1,num的值加1,如果不是,則不必記錄。故第19空應(yīng)flag=O或*(s-1)=”;最后一個(gè)空格需填寫的是返回的單詞的個(gè)數(shù),即num。一、選擇題(1)(10)每小題2分,(11)-(50)每小題1分,共60分)下

44、列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請將正確選項(xiàng)涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。(1)下面敘述正確的是_。A)算法的執(zhí)行效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無關(guān)B)算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)C)算法的有窮性是指算法必須能在執(zhí)行有限個(gè)步驟之后終止D)算法的時(shí)間復(fù)雜度是指執(zhí)行算法程序所需要的時(shí)間答案:C評(píng)析:算法的設(shè)計(jì)可以避開具體的計(jì)算機(jī)程序設(shè)計(jì)語言,但算法的實(shí)現(xiàn)必須借助程序設(shè)計(jì)語言中提供的數(shù)據(jù)類型及其算法。數(shù)據(jù)結(jié)構(gòu)和算法是計(jì)算機(jī)科學(xué)的兩個(gè)重要支柱。(2)以下數(shù)據(jù)結(jié)構(gòu)屬于非線性數(shù)據(jù)結(jié)構(gòu)的_。A)隊(duì)列 B)線性表 C)二叉樹 D)棧答案:C評(píng)析:線性表、棧

45、和隊(duì)列等數(shù)據(jù)結(jié)構(gòu)所表達(dá)和處理的數(shù)據(jù)以線性結(jié)構(gòu)為組織形式。棧又稱后進(jìn)先出表(Last In First Out);隊(duì)列又稱先進(jìn)先出表(First:In First Out)。二叉樹的數(shù)據(jù)結(jié)構(gòu)是樹型結(jié)構(gòu),結(jié)構(gòu)中數(shù)據(jù)元素之間存在著一對(duì)多的關(guān)系,因此它是一種非線性數(shù)據(jù)結(jié)構(gòu)。(3)在一棵二叉樹上第8層的結(jié)點(diǎn)數(shù)最多是_。A)8 B)16 C)128 D)256答案:C評(píng)析:根據(jù)二叉樹的性質(zhì):二叉樹第i(i1)層上至多有2i-1個(gè)結(jié)點(diǎn)。得到第8層的結(jié)點(diǎn)數(shù)最多是128。(4)下面描述中,不符合結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格的是_。A)使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)表示程序的控制邏輯B)自頂向下C)注重提高程

46、序的執(zhí)行效率D)限制使用goto語句答案:C評(píng)析:結(jié)構(gòu)化程序設(shè)計(jì)方法的四條原則是:1自項(xiàng)向下;2逐步求精;3模塊化;4限制使用goto語句。(5)下面概念中,不屬于面向?qū)ο蠓椒ǖ氖莀。A)對(duì)象、消息 B)繼承、多態(tài) C)類、封裝 D)過程調(diào)用答案:D評(píng)析:面向?qū)ο蠓椒ㄊ且环N運(yùn)用對(duì)象、類、封裝、繼承、多態(tài)和消息等概念來構(gòu)造、測試、重構(gòu)軟件的方法。面向?qū)ο蠓椒◤膶?duì)象出發(fā),發(fā)展出對(duì)象、類、消息、繼承等概念。(6)在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是_。A)可行性分析 B)需求分析 C)詳細(xì)設(shè)計(jì) D)程序編碼答案:B評(píng)析:軟件開發(fā)階段包括需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼

47、和測試五個(gè)階段。其中需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典。(7)軟件生命周期中所花費(fèi)用最多的階段是_。A)詳細(xì)設(shè)計(jì) B)軟件編碼 C)軟件測試 D)軟件維護(hù)答案:D評(píng)析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運(yùn)行維護(hù)3個(gè)階段。本題中詳細(xì)設(shè)計(jì)、軟件編碼和軟件測試都屬于軟件開發(fā)階段;維護(hù)是軟件生命周期的最后一個(gè)階段。(8)數(shù)據(jù)庫系統(tǒng)的核心是_。A)數(shù)據(jù)模型 B)DBMS C)軟件工具 D)數(shù)據(jù)庫答案:B評(píng)析:數(shù)據(jù)庫管理系統(tǒng)DBMS是數(shù)據(jù)庫系統(tǒng)的核心。DBMS是負(fù)責(zé)數(shù)據(jù)庫的建立、使用和維護(hù)的軟件。DBMS建立在操作系統(tǒng)之上,實(shí)施對(duì)數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過DBMS。(9)下列敘述中正確的_。A)數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程B)數(shù)據(jù)庫設(shè)計(jì)是指設(shè)計(jì)數(shù)據(jù)庫管理系統(tǒng)C)如果一個(gè)關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個(gè)關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字D)關(guān)系中的每列稱為元組,一個(gè)元組就是一個(gè)字段答案:C評(píng)析:數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,故選項(xiàng)A敘述錯(cuò)誤;設(shè)計(jì)數(shù)據(jù)庫的目的實(shí)質(zhì)上是設(shè)計(jì)出滿足實(shí)際應(yīng)用需求的實(shí)際關(guān)系模型;關(guān)系中的行稱為元組,對(duì)應(yīng)存儲(chǔ)文件中的記錄,關(guān)系中的列稱為屬性,對(duì)應(yīng)存儲(chǔ)文件中的字段,故D選項(xiàng)敘述錯(cuò)誤。(10)下列模式中,_是用戶模式。A)內(nèi)模式 B

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論