參考答案及分析
一、選擇題
(1)D
解析: 假設(shè)線(xiàn)性表的長(zhǎng)度為n,則在最壞情況下,冒泡排序要經(jīng)過(guò)n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。
(2)D
解析: 算法分析是指對(duì)一個(gè)算法的運(yùn)行時(shí)間和占用空間做定量的分析,一般計(jì)算出相應(yīng)的數(shù)量級(jí),常用時(shí)間復(fù)雜度和空間復(fù)雜度表示。分析算法的目的就是要降低算法的時(shí)間復(fù)雜度和空間復(fù)雜度,提高算法的執(zhí)行效率。
(3)D
解析: 線(xiàn)性表可以為空表;第一個(gè)元素沒(méi)有直接前件,最后一個(gè)元素沒(méi)有直接后件;線(xiàn)性表的定義中,元素的排列并沒(méi)有規(guī)定大小順序。
(4)A
解析: 頭結(jié)點(diǎn)不僅標(biāo)識(shí)了表中首結(jié)點(diǎn)的位置,而且根據(jù)單鏈表(包含頭結(jié)點(diǎn))的結(jié)構(gòu),只要掌握了表頭,就能夠訪(fǎng)問(wèn)整個(gè)鏈表,因此增加頭結(jié)點(diǎn)目的是為了便于運(yùn)算的實(shí)現(xiàn)。
(5)C
解析: 軟件工程概念的出現(xiàn)源自于軟件危機(jī)。為了消除軟件危機(jī),通過(guò)認(rèn)真研究解決軟件危機(jī)的方法,認(rèn)識(shí)到軟件工程是使計(jì)算機(jī)軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念。
(6)D
解析: 軟件測(cè)試過(guò)程中,輔助資源包括測(cè)試用例(測(cè)試數(shù)據(jù))、測(cè)試計(jì)劃、出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告等。
(7)D
解析: 數(shù)據(jù)流相當(dāng)于一條管道,并有一級(jí)數(shù)據(jù)(信息)流經(jīng)它。在數(shù)據(jù)流圖中,用標(biāo)有名字的箭頭表示數(shù)據(jù)流。數(shù)據(jù)流可以從加工流向加工,也可以從加工流向文件或從文件流向加工,并且可以從外部實(shí)體流向系統(tǒng)或從系統(tǒng)流向外部實(shí)體。
(8)D
解析: 分布式數(shù)據(jù)庫(kù)系統(tǒng)具有數(shù)據(jù)分布性、邏輯整體性、位置透明性和復(fù)制透明性的特點(diǎn),其數(shù)據(jù)也是分布的;但分布式數(shù)據(jù)庫(kù)系統(tǒng)中數(shù)據(jù)經(jīng)常重復(fù)存儲(chǔ),數(shù)據(jù)也并非必須重復(fù)存儲(chǔ),主要視數(shù)據(jù)的分配模式而定。若分配模式是一對(duì)多,即一個(gè)片段分配到多個(gè)場(chǎng)地存放,則是冗余的數(shù)據(jù)庫(kù),否則是非冗余的數(shù)據(jù)庫(kù)。
(9)A
解析: 關(guān)系表中,每一行稱(chēng)為一個(gè)元組,對(duì)應(yīng)表中的一條記錄;每一列稱(chēng)為表中的一個(gè)屬性,對(duì)應(yīng)表中的一個(gè)字段;在二維表中凡能惟一標(biāo)識(shí)元組的最小屬性集稱(chēng)為該表的鍵或碼。
(10)C
解析: 關(guān)系模型較之格式化模型(網(wǎng)狀模型和層次模型)有以下方面的優(yōu)點(diǎn),即數(shù)據(jù)結(jié)構(gòu)比較簡(jiǎn)單、具有很高的數(shù)據(jù)獨(dú)立性、可以直接處理多對(duì)多的聯(lián)系,以及有堅(jiān)實(shí)的理論基礎(chǔ)。
(11)A
解析: C++語(yǔ)言標(biāo)識(shí)符只能由數(shù)字,字母和下劃線(xiàn)組成,并且只能以字母和下劃線(xiàn)為開(kāi)頭。
(12)D
解析: C語(yǔ)言是一種面向過(guò)程的程序設(shè)計(jì)語(yǔ)言,而C++語(yǔ)言是一種面向?qū)ο蟮脑O(shè)計(jì)語(yǔ)言,C++語(yǔ)言是C語(yǔ)言的超集,它包含了C語(yǔ)言的所有語(yǔ)言特性,并進(jìn)行了擴(kuò)充。
(13)A
解析: 該字符串中包含的字符是′\t′(跳格符)、′\"′(雙引號(hào))、′\065′(ASCII值為八進(jìn)制065,也即十進(jìn)制為51的字符)、′\xff′(ASCII值為十六進(jìn)制ff,也即十進(jìn)制為255的字符)、′\n′(換行符)。
(14)C
解析: 在C++語(yǔ)言中,實(shí)數(shù)有兩種形式表示,即十進(jìn)制數(shù)形式和指數(shù)形式,在指數(shù)形式中,e3,2.1e3.5,.e3,e等都是不合法的指數(shù)形式。再如123e3或123E3都代表123乘以10的3次方。注意,字母e的前面必須有數(shù)字,且e的后面必須是整數(shù)。
(15)B
解析: do-while 語(yǔ)句的一般格式為do 循環(huán)體語(yǔ)句 while(表達(dá)式);,先執(zhí)行循環(huán)體語(yǔ)句一次,再判斷表達(dá)式的值,若為真則繼續(xù)執(zhí)行循環(huán),否則終止循環(huán)。本題中,先執(zhí)行x=x-2,即為1。判斷表達(dá)式的值,!(--x)為真,x=0,繼續(xù)循環(huán)。再次執(zhí)行循環(huán)體語(yǔ)句后,x=-2,此時(shí)表達(dá)式的值為0,結(jié)束循環(huán)。
(16)D
解析: 選項(xiàng)A)for循環(huán)可以用于循環(huán)次數(shù)不確定的情況;選項(xiàng)B)for循環(huán)是先判斷表達(dá)式,后執(zhí)行循環(huán)體語(yǔ)句;選項(xiàng)C)在for循環(huán)中,可以用break語(yǔ)句跳出循環(huán)體,從而接著執(zhí)行循環(huán)體后面的語(yǔ)句。
(17)B
解析: p表示的是變量a的地址,定義后*p表示的是變量a的值。
(18)D
解析: x數(shù)組共有10個(gè)元素,在花括弧內(nèi)只提供3個(gè)初值,這表示只給前面的3個(gè)成員賦值,后7個(gè)元素的值為0,所以,一共有20個(gè)字節(jié)。
(19)B
解析: 本題考查函數(shù)中變量的作用范圍,在主函數(shù)中給變量x,y,z賦值,然后將其作為實(shí)參傳遞給了函數(shù)fun(),雖然在函數(shù)fun()中改變了這3個(gè)變量的值,但只是同名的局部變量,不影響函數(shù)中變量的值,所以在調(diào)用函數(shù)fun()結(jié)束后,主函數(shù)3個(gè)變量的值未改變。
(20)D
解析: 在C++語(yǔ)言中,所有的函數(shù)都是平行的,即在定義函數(shù)時(shí)是互相獨(dú)立的,一個(gè)函數(shù)并不從屬于另一個(gè)函數(shù),即函數(shù)不能嵌套定義,但可以互相調(diào)用。但是不能調(diào)用main()函數(shù)。
(21)A
解析: const int *p;是只能改變指針地址,int * const p;是只能改變*p的內(nèi)容,const int *const p;是指針的地址和*p的內(nèi)容都不能改變,int *p;是兩者都能改變。
(22)A
解析: 在C++中定義數(shù)組時(shí),數(shù)組的范圍參數(shù)在靜態(tài)定義時(shí)必須是一個(gè)常數(shù),而在動(dòng)態(tài)分配內(nèi)存定義時(shí)可以是常數(shù),也可以是一個(gè)賦了值得參數(shù)。故選項(xiàng)A)是錯(cuò)誤的定義方法。
(23)C
解析: 類(lèi)A,類(lèi)B,中都有showa()函數(shù),類(lèi)C繼承后再次重寫(xiě)showa()函數(shù)就解決了繼承的二義性,這時(shí)c.showa()函數(shù)顯示的就是類(lèi)C中的showa()的值。
(24)C
解析: 基類(lèi)和其繼承類(lèi)同時(shí)出現(xiàn)同名函數(shù),則在繼承類(lèi)中實(shí)現(xiàn)對(duì)象中調(diào)用該函數(shù)是使用繼承類(lèi)中的定義,這種情況下是不會(huì)產(chǎn)生二義性的。
(25)A
解析: C++中用成員函數(shù)重載x*y為:x. operator*(y),用友元函數(shù)重載x*y為:operator*(x,y),用成員函數(shù)重載x+y為:x. operator+(y),用友元函數(shù)重載x+y為:operator+(x,y)。
(26)C
解析: 對(duì)于template
T add(T x,T y){return x+y;}
調(diào)用時(shí)可以省略模板實(shí)參的聲明,但是要求x和y的數(shù)據(jù)類(lèi)型必須是一樣的。
(27)A
解析: C++語(yǔ)言中setfill的意思是在空格的地方填上setfill函數(shù)中的參數(shù)字符,setw的意思是設(shè)置整個(gè)輸出字符串的字符個(gè)數(shù),本題中用*來(lái)代替空格。
(28)B
解析: this指針是C++語(yǔ)言實(shí)現(xiàn)封裝的一種機(jī)制,它將對(duì)象和該對(duì)象調(diào)用的成員函數(shù)連接在一起,在外部看來(lái),每一個(gè)對(duì)象都擁有自己的函數(shù)成員。
(29)D
解析: 語(yǔ)句r=func(func(x,y),z);中,fun(x,y)是一次調(diào)用函數(shù),它的值作為func另一次調(diào)用的實(shí)參。注意本題調(diào)用兩次函數(shù)。
(30)A
解析: 在Myclass類(lèi)中定義了兩個(gè)同名函數(shù)show,其中一個(gè)是常成員函數(shù)。在main函數(shù)中定義了兩個(gè)對(duì)象my1,my2,其中對(duì)象my2是常對(duì)象。這兩個(gè)對(duì)象調(diào)用成員函數(shù)show時(shí),通過(guò)對(duì)象my1調(diào)用的是沒(méi)有用const修飾的一般成員函數(shù),而通過(guò)對(duì)象my2調(diào)用的是const修飾的常成員函數(shù)。
(31)D
解析: 帶有純虛函數(shù)的類(lèi)稱(chēng)為抽象類(lèi),抽象類(lèi)中的純虛函數(shù)沒(méi)有具體的定義,所以不能說(shuō)明抽象類(lèi)的對(duì)象。
(32)A
解析: C++的I/O系統(tǒng)是通過(guò)一種稱(chēng)為流的機(jī)制來(lái)實(shí)現(xiàn)文件和控制臺(tái)的I/O操作。簡(jiǎn)單地說(shuō),在C++中,輸入輸出操作是通過(guò)流來(lái)完成的。而文件流以磁盤(pán)文件以及其他可按文件方式進(jìn)行管理的外部設(shè)備為輸入輸出對(duì)象。每個(gè)文件流都應(yīng)當(dāng)與一個(gè)打開(kāi)的文件相聯(lián)系;關(guān)閉一個(gè)文件就是取消這種聯(lián)系。
(33)B
解析: 函數(shù)的參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù),還可以是指針類(lèi)型。它的作用是將一個(gè)變量的地址傳送到另一個(gè)函數(shù)中去。在本題解析中,我們?cè)噲D將這一問(wèn)題解釋清楚!
大家可以考慮一下利用下面這函數(shù)可不可以實(shí)現(xiàn)a和b的互換。
swap(int x,int y)
{ int t;
t=x;
x=y;
y=t;
}
如果在main函數(shù)中用swap(a,b),會(huì)有甚么結(jié)果呢?在函數(shù)調(diào)用開(kāi)始時(shí),a的值傳送給x,b的值傳遞給y 。執(zhí)行完swap()函數(shù)后,x和y的值是互換了,但main()函數(shù)中的a和b并未互換。也就是說(shuō)由于"單向傳遞"的"值傳遞"方式,形參值的改變無(wú)法傳遞給實(shí)參。
為了使在函數(shù)中改變了的變量值能被main()函數(shù)所用,不能采取上述辦法,而應(yīng)該用指針變量做函數(shù)參數(shù)。在函數(shù)執(zhí)行過(guò)程中使指針變量所指向的變量值發(fā)生變化,函數(shù)調(diào)用結(jié)束后,這些變量值的變化被保留下來(lái),這樣就實(shí)現(xiàn)了調(diào)用函數(shù)改變變量的值,在主調(diào)函數(shù)中使用這些改變了的值的目的。
swap(int *p1,int *p2)
{ int p;
p=*p1;
*p1=*p2;
*p2=p;
}
注意交換*p1和*p2的值是如何實(shí)現(xiàn)的,如果寫(xiě)成下面這樣就有問(wèn)題了!
swap(int *p1,int *p2)
{ int *p;
*p=*p1; /*此語(yǔ)句有問(wèn)題*/
*p1=*p2;
*p2=*p;
}
*p1就是a,是整型變量。而*p是指針變量p所指向的變量,但p中并無(wú)確切地址,用*p可能會(huì)造成破壞系統(tǒng)的正常工作狀態(tài)。應(yīng)該將*p1的值賦給一個(gè)整型變量,用整型變量作為過(guò)渡變量實(shí)現(xiàn)*p1和*p2的交換。
(34)C
解析: for語(yǔ)句中的表達(dá)式可以部分或全部省略,但兩個(gè)";"不能省略,若三個(gè)表達(dá)式均省略,會(huì)因?yàn)槿鄙贄l件判斷,導(dǎo)致循環(huán)無(wú)限執(zhí)行,而形成死循環(huán)。本題中當(dāng)i的值為5的時(shí)候,循環(huán)終止。
(35)D
解析: 字符型數(shù)據(jù)在計(jì)算機(jī)內(nèi)部是以ASCII碼存儲(chǔ)的,英文大寫(xiě)字母和小寫(xiě)字母在ASCII碼表中都是連續(xù)的。大寫(xiě)字母A~Z是從65~90,小寫(xiě)字母a~z是從97~122。所以只要變量c大于等于a并且等于小于z就能保證其為小寫(xiě)字母。
二、填空題
(1)時(shí)間復(fù)雜度和空間復(fù)雜度
(2)SQR(x^2+y^2)/(a+b)
(3)軟件工程學(xué)
(4)數(shù)據(jù)模型
解析: 數(shù)據(jù)模型是對(duì)客觀事物及聯(lián)系的數(shù)據(jù)描述,它反映了實(shí)體內(nèi)部及實(shí)體與實(shí)體之間的聯(lián)系。因此,數(shù)據(jù)模型是數(shù)據(jù)庫(kù)設(shè)計(jì)的核心。
(5)關(guān)系
解析: 在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱(chēng)為一個(gè)關(guān)系。表中的每一列稱(chēng)為一個(gè)屬性,相當(dāng)于記錄中的一個(gè)數(shù)據(jù)項(xiàng),對(duì)屬性的命名稱(chēng)為屬性名;表中的一行稱(chēng)為一個(gè)元組,相當(dāng)于記錄值。
(6)編譯
解析: C++語(yǔ)言程序開(kāi)發(fā)的基本步驟是編輯、編譯、鏈接、運(yùn)行和調(diào)試。
(7)1
解析: 計(jì)算表達(dá)式!a (8)1000~10
解析: 對(duì)于define宏定義語(yǔ)句,系統(tǒng)會(huì)在編譯前進(jìn)行替換。本題替換過(guò)程如下:
i1=1000/s(N)
i1=1000/s(10)
i1=1000/10*10
i1=1000
i2=1000/f(N)
i2=1000/f(10)
i2=1000/(10*10)
i2=10
(9)友元函數(shù)
解析: C++語(yǔ)言中友元類(lèi)中的函數(shù)都是另一個(gè)類(lèi)的友元函數(shù)。
(10)靜態(tài)聯(lián)編`靜態(tài)綁定~動(dòng)態(tài)聯(lián)編`動(dòng)態(tài)綁定
解析: C++語(yǔ)言編譯時(shí)多態(tài)性的機(jī)制是靜態(tài)綁定,實(shí)現(xiàn)C++語(yǔ)言運(yùn)行時(shí)多態(tài)性的機(jī)制是動(dòng)態(tài)綁定。
(11)++x
解析: C++語(yǔ)言中用成員函數(shù)重載++x為x. operator++()用友元函數(shù)重載++x為:operator++(x)
(12)16
解析: 解答本題的關(guān)鍵是要分析清楚表達(dá)式a+=(a=8)中,a的值已經(jīng)被賦為8,而不是0。
(13)ifstream fin("C:\test.dat" ,ios_binary);`ifstream
解析: C++中打開(kāi)文件有兩種方式① ifstream fin("test.dat");② ifstream fin;fin.open("test.dat");,ios_binary的意義是以二進(jìn)制文件打開(kāi)。
相關(guān)推薦:
各地2012年計(jì)算機(jī)等級(jí)考試費(fèi)用匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |