國家二級(C++)筆試模擬試卷31_第1頁
國家二級(C++)筆試模擬試卷31_第2頁
國家二級(C++)筆試模擬試卷31_第3頁
國家二級(C++)筆試模擬試卷31_第4頁
國家二級(C++)筆試模擬試卷31_第5頁
已閱讀5頁,還剩85頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

眼家二級(C++)筆試模擬試卷第1套

一、公共基礎(chǔ)選擇題(本題共70題,每題7.0分,共

10分。)

1、循環(huán)鏈表的主要優(yōu)點(diǎn)是

A、不再需要頭指針了

B、從表中任一結(jié)點(diǎn)出發(fā)都能訪問到整個(gè)鏈表

C、在進(jìn)行插入、刪除運(yùn)算時(shí),能更好的保證鏈表不斷開

D、已知某個(gè)結(jié)點(diǎn)的位置后,能夠容易的找到它的直接前件

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:循環(huán)鏈表就是將單向鏈表中最后一個(gè)結(jié)點(diǎn)的指針指向頭結(jié)點(diǎn),使整個(gè)

鏈表構(gòu)成一個(gè)環(huán)形,這樣的結(jié)構(gòu)使得從表中的任一結(jié)點(diǎn)出發(fā)都能訪問到整個(gè)鏈表。

2、棧底至棧頂依次存放元素A、B、C、D,在笫五個(gè)元素E入棧前,棧中元素可

以出棧,則出棧序列可能是

A、ABCED

B、DCBEA

C、DBCEA

D、CDABE

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:棧操作原則上“后進(jìn)先出”,棧底至棧頂依次存放元素A、B、C、D,

則表明這4個(gè)元素中D是最后進(jìn)棧,B、C處于中間,A最早進(jìn)棧。所以出棧時(shí)一

定是先出D,再出C,最后出A。

3、n個(gè)頂點(diǎn)的強(qiáng)連通圖的邊數(shù)至少有

A^n-1

B、n(n-l)

C、n

D^n+1

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:在有向圖中,若任意兩個(gè)頂點(diǎn)都連通,則稱該圖是強(qiáng)連通圖,這樣的

有向圖的形狀是環(huán)狀,因而至少應(yīng)有n條邊。

4、在結(jié)構(gòu)化程序設(shè)計(jì)思想提出之前,在程序設(shè)計(jì)中曾強(qiáng)調(diào)程序的效率。與程序的

效率相比,人們更重視程序的

A、安全性

B、一致性

C、nJ理解性

D、合理性

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)出的程序具有明顯的優(yōu)點(diǎn)。其一,程序易于

理解、使用和維護(hù);其二,提交了編程工作的效率,降低了軟件開發(fā)成本。其中,

人們更重視前者。

5、模塊獨(dú)立性是軟件模塊化所提出的要求,衡量模塊獨(dú)立性的度量標(biāo)準(zhǔn)則是模塊

A、抽象和信息隱蔽

B、局部化和封裝化

C、內(nèi)聚性和耦合性

D、激活機(jī)制和控制方法

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:模塊的獨(dú)立程序是評價(jià)設(shè)計(jì)好壞的重要度量標(biāo)準(zhǔn)。衡量軟件的模塊獨(dú)

立性使用耦合性和內(nèi)聚性兩個(gè)定性的度量標(biāo)準(zhǔn)。

6、軟件開發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成

A、定義、開發(fā)、運(yùn)行維護(hù)

B、設(shè)計(jì)階段、編程階段、測試階段

C、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編程調(diào)試

D、需求分析、功能定義、系統(tǒng)設(shè)計(jì)

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程稱

為軟件生命周期。它可以分為軟件定義、軟件開發(fā)及軟件運(yùn)行維護(hù)3個(gè)階段。

7、在軟件工程中,白箱測試法可用于測試程序的內(nèi)部結(jié)構(gòu)。此方法將程序看做是

A、路徑的集合

B、循環(huán)的集合

C、目標(biāo)的集合

D、地址的集合

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:軟件的白盒測試方法是把測試對象看做一個(gè)打開的盒子,它允許測試

人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測試用例,對程序所有邏輯

路徑進(jìn)行測試。

8、在數(shù)據(jù)管理技術(shù)發(fā)展過程中,文件系統(tǒng)與數(shù)據(jù)廢系統(tǒng)的主要區(qū)別是數(shù)據(jù)庫系統(tǒng)

具有

A、特定的數(shù)據(jù)模型

B、數(shù)據(jù)無冗余

C、數(shù)據(jù)可共享

D、專門的數(shù)據(jù)管理軟件

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:在文件系統(tǒng)中,相互獨(dú)立的記錄其內(nèi)部結(jié)構(gòu)的最簡單形式是等長同格

式記錄的集合,易造成存儲空間大量浪費(fèi),不方便使用。而在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)

是結(jié)構(gòu)化的,這種結(jié)構(gòu)化要求在描述數(shù)據(jù)時(shí)不僅描述數(shù)據(jù)本身,還要描述數(shù)據(jù)間的

關(guān)系,這正是通過采用特定的數(shù)據(jù)模型來實(shí)現(xiàn)的。

9、數(shù)據(jù)庫設(shè)計(jì)包括兩個(gè)方面的設(shè)計(jì)內(nèi)容,它們是

A、概念設(shè)計(jì)和邏輯設(shè)計(jì)

B、模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)

C、內(nèi)模式設(shè)計(jì)和物理設(shè)計(jì)

D、結(jié)構(gòu)特性設(shè)計(jì)和行為特性設(shè)計(jì)

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:數(shù)據(jù)庫設(shè)計(jì)包括數(shù)據(jù)庫概念設(shè)計(jì)和數(shù)據(jù)庫邏輯設(shè)計(jì)兩個(gè)方面的設(shè)計(jì)內(nèi)

容。

10、實(shí)體是信息世界中廣泛使用的一個(gè)術(shù)語,它用于表示

A、有生命的事物

B、無生命的事物

C、實(shí)際存在的事物

D、一切事物

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:實(shí)體是客觀存在且可以相互區(qū)別的事物。實(shí)體可以是具體的對象,如

一個(gè)學(xué)生,也可以是一個(gè)抽象的事件,如一次出門旅游等。因此,實(shí)體既可以是有

生命的事物,也可以是無生命的事物,但它必須是客觀存在的,而且可以相互區(qū)

別。

二、選擇題(本題共25題,每題1.0分,共25分。)

11、面向?qū)ο蟪绦蛟O(shè)計(jì)思想的主要特征中不包括

A、繼承性

B、功能分解.,逐步求精

C、封裝性和信息隱藏

D、多態(tài)性

標(biāo)準(zhǔn)答案:2

知識點(diǎn)露析:面向?qū)ο蟪绦蛟O(shè)計(jì)的主要特征是繼承性,封裝性和信息隱藏,多態(tài)

性。

12、C++語言是以哪種語言為基礎(chǔ)逐漸發(fā)展演變而成的一種程序設(shè)計(jì)語言

A、ASP

B、C

C、VB

D、0

標(biāo)準(zhǔn)答案:4

知識之解析:本題考查簡單的if…else語句。先執(zhí)行條件if(aVB,顯然不成立,則

執(zhí)行else語句。

17、有以卜程序#include<string.h>#include<iostream.h>voidmain()

{char*p="abcdc\Ofghjik\O";cout<<strlen(p);J程序運(yùn)行后的輸出結(jié)果是

A、12

B、15

C、6

D、5

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:C++語言規(guī)定了一個(gè)字符串結(jié)束標(biāo)志,以字符、(T代表,在遇到、0'

時(shí),表示字符串結(jié)束,由它前面的字符組成字符串。

18、若有說明語句chara[]="Itismine1';char*p=nItismine";則以下不正確的敘述

A、a+1表示的是字符t的地址

B、p指向另外的字符串時(shí),字符串的長度不受限制

C、p變量中存放的地址值可以改變

D、a中只能存放10個(gè)字符

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:本題考查字符串?dāng)?shù)組和指針的引用方式。在C++語言中,系統(tǒng)在每

個(gè)字符串或數(shù)組的最后自動(dòng)加入一個(gè)字符'\0',作為字符的結(jié)束標(biāo)志,在本題中,

charismine”;所表示的a字符串實(shí)際含有11個(gè)字符。

19、以下程序的運(yùn)行結(jié)果是#include<iostream.h>voidsub(intx,inty,int*z){*z=y-

x;}voidmain(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);cout<<

a<<',"<<b<<V<<c<<en

A、5,2,3

B、-5,-12,-7

C、-5,-12,-17

D、5,-2,-7

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:在C++語言中,調(diào)用函數(shù)不可能改變實(shí)參指針變量的值,但可以改

變實(shí)參指針變量所指變量的值。了解了實(shí)參指針變量的改變情況,本題只剩下簡單

的“加減法”了。

20、下列程序是用來判斷數(shù)組中特定元素的位置所在,則輸出結(jié)果為#由4代0<

conio.h>#include<iostream.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0:i

A、7,431

B、6

C、980

D、6,980

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:本題中直接使用指針變量k,但在使用時(shí)要注意對k的指針運(yùn)算,此

外,一開始應(yīng)認(rèn)為*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。

21>執(zhí)行下列程序段,結(jié)果是#includeViostream.h>voidmain(){intx=40;char

y='C';intn;n=(x&0xff)&&(y>,B,);cout<<n:)

A、0

B、1

C、2

D、3

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:按位與運(yùn)算符是雙目運(yùn)算符。其功能是參與運(yùn)算的兩數(shù)各對應(yīng)的

二進(jìn)位相與。只有對應(yīng)的兩個(gè)二進(jìn)位均為1時(shí),結(jié)果位才為1,否則為0。參與運(yùn)

算的數(shù)以補(bǔ)碼方式出現(xiàn)。邏輯與運(yùn)算符“&&”需要兩邊的結(jié)果都為1時(shí),其結(jié)吳才

為lo

22、關(guān)于this指針的說明不正確的是

A、不能在程序中修改this指針

B、this指針可以給其他指針賦值,但不能修改Ihis指針

C、靜態(tài)成員函數(shù)中沒有this指針

D、this指針可以被賦值

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:C++的this指針是系統(tǒng)默認(rèn)產(chǎn)生的一個(gè)指針,它是const的,所以是

不能夠被改變,不能夠被賦值的。

23、卜面程序的結(jié)果是#includeViostream.h>classA{public:A(){cout<<

"construtA"<<endl:)virtual-A(){cout<<,'destructA"<<endl:}};classB:

publicA{};classC:publicA{);c

A、constructAdestructA

B、constructAconstructAdestructAdestructA

C、constructAconstructAconstructAdestructAdestructAdestructA

D、constructAonstructAconstructAconstructAdestructAdestructAdestructA

destructA

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:類D繼承了類C和類B,所以在構(gòu)造的時(shí)候分別構(gòu)造類B和類C。

24、關(guān)于虛函數(shù)下面說的正確的是

A、若在重定義虛函數(shù)時(shí)使用了virtual,則該重定義函數(shù)還是虛函數(shù)

B、虛函數(shù)不能聲明為友元

C、子類必須重定義父類的虛函數(shù)

D、虛函數(shù)不能是static的

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:虛函數(shù)一定不能定義為靜態(tài)的。虛函數(shù)可以聲明為友元,子類也不是

必須重定義父類的虛函數(shù),若在重定義虛函數(shù)時(shí)使用了virtual,則該重定義函數(shù)不

一定還是虛函數(shù)。

25、如果表達(dá)式++x/y中,++是作為友元函數(shù)重載的,/是作為成員函數(shù)重載的,則

該表達(dá)式還可為

A、(operator++(x)).operator/(y)

B、(operator++(0)).operator/(y)

C、operator/((operator++(x,0)),y)

D、operator/((operator+4-(0)),y)

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:C++中用成員函數(shù)重載++x為:x.operator++(),用友元函數(shù)重載十+x

為:operator++(x),用成員函數(shù)重載x/y為:x.operator/(y),用友元函數(shù)重載x/y

為:opcrator/(x,y)。

26、要想使23.78965421的輸出為23.7887應(yīng)用的語句是

A、cout<<23.78965421;

B、cout<<fixcd<<23.78965421;

C、cout<<23.78965421-0.001;

D、cout<<fixed<<23.78965421-0.001;

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:C++語言中默認(rèn)小數(shù)的輸出位一共是6位,fixed的意義是在小數(shù)點(diǎn)

后保留6位。

27、有以下語句,則對a數(shù)組元素的引用不正確的是(0WiW9)int

a[10]={0,123,4,5,6,7,8,9},*p=a;

A^a[p-a]

B、*(&a[i])

C、p[i]

D^*(*(a+i))

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:選項(xiàng)D第一層括號中為數(shù)組a中第i項(xiàng)元素的值,外面再加指針運(yùn)算

符沒有意義。

28、有以#include<iostreain.h>floatfun(intx,inty){return(x+y);}void

main(){inta=2,b=5,c=8;cout<<fun((int)fun(a+c,b),a-c);}程序運(yùn)行后的輸出

結(jié)果是

A、編譯出錯(cuò)

B、9

C>21

D、9

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:本題的運(yùn)算過程是fun((int)fun(a+c,B,a-C,fun((int)fun(10,5),2-

8),fun((int)15.000000,-6),fun(15,-6)=9o

29、下列程序的運(yùn)行結(jié)果是#include〈iostream.h>classLocation]private:int

X.Y:public:voidinit(int=O,int=O):voidvalueX(intval){X=val;)int

valueX(){returnX;}voidvalueY

A、5064

B、0064

C、5062

D、0062

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:本題中有成員函數(shù)和它的重載函數(shù),要注意它們的不同,在本題中先

調(diào)用了init函數(shù),初始化了X,Y,都為0,valueX⑸:又將X變?yōu)?,所以輸出5

和0,然后初始化init(6,2),接著又valueY(4);將X,Y設(shè)為6和4,所以輸出6

和4。

30、在C++語言中,封裝是借助于什么達(dá)到的?

A、結(jié)構(gòu)

B、類

C、數(shù)組

D、函數(shù)

標(biāo)準(zhǔn)答案:2

知識點(diǎn)謁析:C++基本的性質(zhì)就是它的封裝性,而封裝性主要是靠類來實(shí)現(xiàn)的。

31、在位運(yùn)算中,操作數(shù)每左移一位,其結(jié)果相當(dāng)于

A、操作數(shù)乘以2

B、操作數(shù)除以2

C、操作數(shù)除以4

D、操作數(shù)乘以4

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:左移運(yùn)算符“VV”是雙目運(yùn)算符。其功能把“VV”左邊的運(yùn)算數(shù)的各

二進(jìn)位全部左移若干位,由“VV”右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)

0o左移1位,相當(dāng)于該數(shù)乘以2。

32、有如卜程序#include<iostreain.h>#defineN2#defineMN+l#defineNUM

2*M+1voidmain(){inti;for(i=l,i<=NUM;i++)cout<<i;}該程序中的for循環(huán)執(zhí)

行的次數(shù)是

A、5

B、6

C、7

D、8

標(biāo)準(zhǔn)答案:2

知識之解析:這是一種簡單的情況:不帶參數(shù)的宏。關(guān)鍵要注意在對2*M+1進(jìn)行

宏替換時(shí),要將宏名M原樣替換,得到NUM的形式為2*N+1+1(千萬不要隨意把

給N+1加上小括號,使NUM變?yōu)?*(N+1)+1,這就是宏名和變量名之間的區(qū)

別)。

33、卜列程序的輸出結(jié)果是#include<iostream.h>intb=2;intfunc(inl*a)

{b+=*a;return(b);)voidmain(){inta=2,res=2;res+=func(&a);cout<<

res;)

A、4

B、6

C、8

D、10

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:在函數(shù)體語句中的b+=*a;的求是指針運(yùn)算符(也稱間接訪問運(yùn)算

符),*a就是main函數(shù)中a的值。

34、所有在函數(shù)中定義的變量,連同形式參數(shù),都屬于

A、全局變量

B、局部變量

C、靜態(tài)變量

D、寄存器變量

標(biāo)準(zhǔn)答案:2

知識點(diǎn)謁析:C++語言函數(shù)中定義的變量都是屬于這個(gè)函數(shù)的局部變量。

35、有如下程序:#include<iostream.h>longfib(intn){if(n>2)return(fib(n-

l)+fib(n-2));elsereturn(2);}voidmain(){cout<<fib(3);}該程序的輸出結(jié)果是

A、2

B、4

C、6

D、8

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:fib(3)=fib(2)+fib(l),而fib(2)的返回值為2,fib(l)的返回值也為2,

故輸出的fib⑶的值為4。

三、公共基礎(chǔ)填空題(本題共5題,每題分,共5

分。)

36、在算法正確的前提下,評價(jià)一個(gè)算法的兩個(gè)標(biāo)準(zhǔn)是【】。

標(biāo)準(zhǔn)答案:時(shí)間復(fù)雜度和空間復(fù)雜度

知識點(diǎn)解析:暫無解析

37、將代數(shù)式「4〃4轉(zhuǎn)換成程序設(shè)計(jì)中的表達(dá)式為【】。

標(biāo)準(zhǔn)答案:SQRT(x2+y2)/(a+b)

知識點(diǎn)解析:暫無解析

38、軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),入們提出了【】的原理來設(shè)

計(jì)軟件,這就是軟件工程誕生的基礎(chǔ)。

標(biāo)準(zhǔn)答案:軟件工程學(xué)

知識點(diǎn)解析:暫無解析

39、[]是數(shù)據(jù)庫設(shè)計(jì)的核心。

標(biāo)準(zhǔn)答案:數(shù)據(jù)模型

知識點(diǎn)解析:數(shù)據(jù)模型是對客觀事物及聯(lián)系的數(shù)據(jù)描述,它反映了實(shí)體內(nèi)部及實(shí)體

與實(shí)體之間的聯(lián)系。因此,數(shù)據(jù)模型是數(shù)據(jù)庫設(shè)計(jì)的核心。

40、在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè)【】。

標(biāo)準(zhǔn)答案;關(guān)系

知識點(diǎn)解析:在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè)關(guān)

系。表中的每一列稱為一個(gè)屬性,相當(dāng)于記錄中的一個(gè)數(shù)據(jù)項(xiàng),對屬性的命名稱為

屬性名;表中的一行稱為一個(gè)元組,相當(dāng)于記錄值。

四、填空題(本題共8題,每題7.0分,共8分。)

41、在C++語言的面向?qū)ο蟪绦蛟O(shè)計(jì)框架中,【】是程序的基本組成單元。

標(biāo)準(zhǔn)答案:類

知識點(diǎn)解析:C++語言面向?qū)ο蟪绦蛟O(shè)計(jì)的基本組成單兀是class,面向過程的程序

設(shè)計(jì)的基本組成單元是函數(shù)。

42、C++語言程序的注釋可以出現(xiàn)在程序中的任何地方,一個(gè)注釋以【】作為開

始和結(jié)束的標(biāo)記。

標(biāo)準(zhǔn)答案:/**/

知識點(diǎn)解析:C++語言程序的注釋可以出現(xiàn)在程序中的任何地方,一個(gè)注釋以“/*”

開始,以"*/''為結(jié)束。

43、以卜程序的輸出結(jié)果是[1°#include<iostream.h>voidfun(){staticint

a=0;a+=2;cout<<a<<"";}voidmain(){intcc;for(cc=1;cc<4;

cc++)fun();cout<<end1;)

標(biāo)準(zhǔn)答案:246

知識點(diǎn)解析:本題考查靜態(tài)局部變量的使用。用關(guān)鍵字static聲明的局部變量為

“靜態(tài)局部變量”,其值在函數(shù)調(diào)用結(jié)束后不消失而保留原值,即其占用的存儲單元

不釋放,在下一次該函數(shù)調(diào)用時(shí),該變量已有值,就是上一次函數(shù)調(diào)用結(jié)束時(shí)的

值。

44、用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個(gè)字節(jié)的動(dòng)態(tài)存儲

空間,請?zhí)羁铡t=(char*)[];

標(biāo)準(zhǔn)答案:malloc(l1)或malloc(sizeof(char)*l1)

知識點(diǎn)解析:malloc函數(shù)的參數(shù)可以是一個(gè)具體的常數(shù),也可以是一個(gè)表達(dá)式。在

本題中,可以是malloc(ll),也可以借助于sizeof運(yùn)算符來表示。

45、以下程序的輸出結(jié)果是【】。#include<iostream.h>unsignedfun(unsigned

num){unsignedk=1;do{k*=num%IO;num/=10;)while(num);returnk;)void

main(){unsignedn=26;cout<<fun(n)<<endl

標(biāo)準(zhǔn)答案:12

知識點(diǎn)解析:函數(shù)有一個(gè)形參num,循環(huán)前變量k置1,循環(huán)中,表達(dá)式num%10

是取num的個(gè)位,將num的個(gè)位值累乘于k中,然后num除以10。循環(huán)直至num

為0結(jié)束,這是逐一求出num十進(jìn)制表示的各位數(shù)字,并累乘于變量k的循環(huán)。

函數(shù)最后返回ko函數(shù)fun的功能是求整數(shù)的各位十進(jìn)數(shù)字積。

46、將x+y*z中的用成員函數(shù)重載,“”用友元函數(shù)重載應(yīng)寫為【】。

標(biāo)準(zhǔn)答案:operator+(operator*(y,z))

知識點(diǎn)解析:C++中用成員函冊重載x*y為:x.opcrator*(y),用友元函數(shù)重載x*y

為:operator*(x,y),用成員函數(shù)重載x+y為:x.operator+(y),用友元函數(shù)重載

x+y為:operator+(x,y)。

47、下列程序在構(gòu)造函數(shù)和析構(gòu)函數(shù)中申請和釋放類的數(shù)據(jù)成員int*a,申請時(shí)使

用形參b初始化a,請?zhí)羁铡lassA{public:A(intb);?A();private:int

*a;};A::A(intb){[];}A::?A(){[];}

標(biāo)準(zhǔn)答案:a=newint(B)deletea

知識點(diǎn)解析:C++中new和delete的使用有如卜兒種:(T)a=newint;deletea;

②a=newint(10);deletea;③a=newint[IO];delete[]a;。

48、C++語言中的多態(tài)性是在編譯時(shí)通過【】和模板體現(xiàn)的,在運(yùn)行時(shí)是通過

[J體現(xiàn)的。

標(biāo)準(zhǔn)答案:函數(shù)重載虛函數(shù)

知識點(diǎn)解析:C++中的多態(tài)性是在編譯時(shí)通過函數(shù)重載和模板體現(xiàn)的,在運(yùn)行時(shí)是

通過虛函數(shù)體現(xiàn)的。

國家二級(C++)筆試模擬試卷第2套

一、公共基礎(chǔ)選擇題(本題共10題,每題7.0分,共

10分。)

1、以下各運(yùn)算中,不屬于算術(shù)運(yùn)算的是()。

A、大于

B、加

C、乘

D、除

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:在一般的計(jì)算機(jī)系統(tǒng)中,基本的運(yùn)算和操作有以下4類:算術(shù)運(yùn)算、

邏輯運(yùn)算、關(guān)系運(yùn)算、數(shù)據(jù)傳輸。“大于”屬于邏輯運(yùn)算中的一種。選項(xiàng)中的加、

乘、除都屬于算術(shù)運(yùn)算。

2、下列敘述中,正確的是()。

A、一個(gè)數(shù)據(jù)結(jié)構(gòu)中的元素在計(jì)算機(jī)存儲空間中的位置關(guān)系與邏輯關(guān)系可能不同

B、一個(gè)數(shù)據(jù)結(jié)構(gòu)中的元素在計(jì)算機(jī)存儲空間中的位置關(guān)系與邏輯關(guān)系一定不同

C、一個(gè)數(shù)據(jù)結(jié)構(gòu)中的元素在計(jì)算機(jī)存儲空間中的位置關(guān)系與邏輯關(guān)系一定相同

D、數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的邏輯結(jié)構(gòu)是相同的

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:一個(gè)數(shù)據(jù)結(jié)構(gòu)中的元素在計(jì)算機(jī)存儲空間中的位置關(guān)系與邏輯關(guān)系不

一定相同。例如,在家庭成員的數(shù)據(jù)結(jié)構(gòu)中,“兒子”和“女兒”都是“父親”的后生

但在計(jì)算機(jī)存儲空間中,根本不能將“兒子”和“女兒”這兩個(gè)數(shù)據(jù)元素的信息都緊鄰

存放在“父親”這個(gè)數(shù)據(jù)元素后邊。但在一年四季的數(shù)據(jù)結(jié)構(gòu)中,“春”是“夏”的前

件,在計(jì)算機(jī)存儲空間中,就可以把“春''存儲在"夏''的前面。數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)

算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)。

3、一個(gè)棧的講棧順序是1,2,3,4,則出棧順序?yàn)椋ǎ?/p>

A、4,3,2,1

B、2,4,3,1

C、1,2,3,4

D、3,2,1,4

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析?:棧是一種特殊的線性表,棧的插入和刪除運(yùn)算都只在一端進(jìn)行,即它

的一端是封閉的,不允許進(jìn)行插入與刪除元素。一端是開口的,允許進(jìn)行插入與刪

除元素,棧中的數(shù)據(jù)是先進(jìn)后出的,答案是A。

4、二義樹是節(jié)點(diǎn)的有限集合,它有()根節(jié)點(diǎn)。

A、有0個(gè)或1個(gè)

B、有0個(gè)或多個(gè)

C、有且只有1個(gè)

D、有1個(gè)或1個(gè)以上

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:二叉樹是一種特殊的樹,它要求非空二叉樹只有一個(gè)根節(jié)點(diǎn),所以它

可以是空樹。答案為A。

5、編制一個(gè)好的程序,首先要確保它的正確性和可靠性,還應(yīng)強(qiáng)調(diào)良好的編程風(fēng)

格。在選擇標(biāo)識符的名字時(shí)應(yīng)考慮()。

A、名字長度越短越好,以減少源程序的輸入量

B、多個(gè)變量共用一個(gè)名字,以減少變量名的數(shù)目

C、選擇含義明確的名字,以正確提示所代表的實(shí)體

D、盡量用關(guān)鍵詞作名字,以使名字標(biāo)準(zhǔn)化

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:本題涉及程序的編程風(fēng)格,考生應(yīng)該掌握一些基本的良好編程風(fēng)格。

標(biāo)識符的名字應(yīng)能反映它所代表的實(shí)際東西,應(yīng)有一定實(shí)際意義。名字不是越長越

好,應(yīng)當(dāng)選擇精煉的意義明確的名字。必要時(shí)可使用縮寫名字,但這時(shí)要注意縮寫

規(guī)則要一致,并且要給每一個(gè)名字加注釋。同時(shí),在一個(gè)程序中,一個(gè)變量只應(yīng)用

于一種用途。

6、下面不屬于軟件工程的3個(gè)要素的是()。

A、工具

B、過程

C、方法

D、環(huán)境

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:軟件工程包括3個(gè)要素,即方法、工具和過程。方法是完成軟件工程

項(xiàng)目的技術(shù)手段:工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各

個(gè)環(huán)節(jié)的控制、管理。

7、結(jié)構(gòu)化方法的核心和基礎(chǔ)是()。

A、結(jié)構(gòu)化分析方法

B、結(jié)構(gòu)化設(shè)計(jì)方法

C、結(jié)構(gòu)化編程方法’

D、結(jié)構(gòu)化程序設(shè)計(jì)理論

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:結(jié)構(gòu)化方法是軟件開發(fā)方法之一。它包拈結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)

計(jì)方法、結(jié)構(gòu)化編程方法,而它的核心和基礎(chǔ)是結(jié)構(gòu)化程序設(shè)計(jì)理論。

8、在數(shù)據(jù)庫管理技術(shù)的發(fā)展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)

庫系統(tǒng)階段。其中數(shù)據(jù)獨(dú)立性最高的階段是()。

A、數(shù)據(jù)庫系統(tǒng)

B、文件系統(tǒng)

C、人工管理

D、數(shù)據(jù)項(xiàng)管理

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:文件系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的初級階段,提供了簡單的數(shù)據(jù)共享與數(shù)據(jù)管

理能力,其功能簡單,附屬于操作系統(tǒng)而不成為獨(dú)立的軟件,只能看作是數(shù)據(jù)庫系

統(tǒng)的雛形。人工管理主要用于科學(xué)計(jì)算,硬件無磁盤,直接存取,軟件沒有操作系

統(tǒng)。數(shù)據(jù)庫管理系統(tǒng)是從這兩個(gè)階段發(fā)展而來的,其數(shù)據(jù)獨(dú)立性必然更高。因此答

案為Ao

9、ER模型可以轉(zhuǎn)換成關(guān)系模型。當(dāng)兩個(gè)實(shí)體間聯(lián)系是M:N聯(lián)系時(shí),它通常可

轉(zhuǎn)換成關(guān)系模式的個(gè)數(shù)是()。

A、2

B、3

C、M+N

D、M*N

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析?:將ER圖轉(zhuǎn)換為關(guān)系模型的轉(zhuǎn)換方法有:一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系

模式:一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式;三個(gè)或三個(gè)以上實(shí)體間的一個(gè)多元聯(lián)

系轉(zhuǎn)換為一個(gè)關(guān)系模式。因此,本題答案為B。

10,所謂關(guān)系是指().

A、各條記錄中的數(shù)據(jù)彼此有一定的關(guān)系

B、一個(gè)數(shù)據(jù)庫文件與另一個(gè)數(shù)據(jù)庫文件之間有一定的關(guān)系

C、數(shù)據(jù)模型符合一定條件的二維表格式

D、數(shù)據(jù)庫中各個(gè)字段之間彼此有一定關(guān)系

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:每個(gè)關(guān)系都類似一張表,或者在某種程度上類似一個(gè)“平面”記錄文

件。

二、選擇題(本題共20題,每題1.0分,共20分。)

11、C++語言是以()語言為基礎(chǔ)逐漸發(fā)展演變而成的一種程序設(shè)計(jì)語言。

A、Pascal

B、C

C、B

D、Simula67

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:C++語言是以C語言為基礎(chǔ)而逐漸發(fā)展起來的。

12、設(shè)有a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、

n=2,則邏輯表達(dá)式(m=a>B)&&(n=c>D)運(yùn)算后,n的值為()

A、0

B、1

C、2

D、3

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:在&&運(yùn)算中,如果第1個(gè)表達(dá)式的值為假時(shí),第2個(gè)表達(dá)式將不再

計(jì)算。在表達(dá)式中第1個(gè)表達(dá)式m=a>b的值為0,也就是假,所以第2個(gè)表達(dá)式

將不再計(jì)算。所以n的值沒有變。

13、執(zhí)行完C++程序中的下列3條語句后,c指向()。inta,b,*c=&a;ini

*p=c;p=&b;

A、p

B、c

C、b

D、a

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:語句“inta,b,*c=&a;"執(zhí)行完后,指針c存放變量a的地址。語句

“int*p=c;”執(zhí)行完后,指針p存放變量a的地址。語句“p=&b;"執(zhí)行完后,指針

p存放變量b的地址,但是指針c仍然存放變量a的地址。語句“p=&b;”只是對指

針p進(jìn)行了重新賦值,但并沒有改變指針c的值。考核指針概念時(shí),經(jīng)常出此類

題。

14、不能作為函數(shù)重載的判斷依據(jù)的是()。

A、const

B、返回類型

C、參數(shù)個(gè)數(shù)

D、參數(shù)類型

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:所謂函數(shù)重載,是指同一個(gè)函數(shù)名可以對應(yīng)多個(gè)函數(shù)的實(shí)現(xiàn)。進(jìn)行函

數(shù)重載時(shí).要求同名函數(shù)在參數(shù)個(gè)數(shù)卜不同,或者參數(shù)類型卜不同.即重載函數(shù)不

許具有相同的形參列表。函數(shù)的返回類型不能作為函數(shù)重載的判斷依據(jù)。const是

函數(shù)的一部分參與函數(shù)的重載。

15、下列關(guān)于類與對象的說法中,不正確的是()。

A、對象是類的一個(gè)實(shí)例

B、任何一個(gè)對象只能屬于一個(gè)具體的類

C、一個(gè)類只能有一個(gè)對象

D、類與對象的關(guān)系和數(shù)據(jù)類型與變量的關(guān)系相似

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:C++中,類是用戶自定義的一種數(shù)據(jù)類型,對象是類的實(shí)例,類定義

了屬于該類的所有對象的共同特性。一個(gè)類作為一種數(shù)據(jù)類型,它可以定義多個(gè)對

象。

16、考慮下面的函數(shù)原型:voidf(inta,intb=7,charc='@');下面的函數(shù)調(diào)用

中,不合法的是()。

A、f(5)

B、f(5,8)

C、f(6,'&')

D、f(0,0,回)

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:當(dāng)一個(gè)函數(shù)中有多個(gè)默認(rèn)參數(shù)時(shí),則形參分布中默認(rèn)參數(shù)應(yīng)從右到左

逐漸定義。在函數(shù)調(diào)用時(shí),系統(tǒng)按從左到右的順序?qū)?shí)參與形參結(jié)合,當(dāng)實(shí)參的數(shù)

組不足時(shí),系統(tǒng)將按同樣的順序用說明或定義中的默認(rèn)值來補(bǔ)齊所缺少的參數(shù)。在

選項(xiàng)C中,函數(shù)調(diào)用中只有兩個(gè)實(shí)參,系統(tǒng)按從左到右的順序?qū)?shí)參與形參結(jié)合

時(shí)\實(shí)參,&,將賦值給血型形參b,顯然是非法的。

17、有如下類的定義。那么空格處的語句是()。classMyClass{int

x,y;public:MyClass(intxl=0,intyl=0){x=xl;y=yl;)staticvoidchange()

{x+=10;y+=10;}};

A、static

const

C、private

D、不需要填入內(nèi)容

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:靜態(tài)成員函數(shù)與靜態(tài)數(shù)據(jù)成員相似,也從屬于類,只要類存在,靜態(tài)

成員函數(shù)就可以使用,靜態(tài)成員函數(shù)的定義是在一般函數(shù)的定義前加上關(guān)鍵詞

statico本題程序中把成員函數(shù)change。定義成靜態(tài)成員函數(shù)。由于靜態(tài)成員函數(shù)只

能訪問靜態(tài)數(shù)據(jù)成員、靜態(tài)成員函數(shù)和類以外的函數(shù)和數(shù)據(jù),不能訪問類中的非靜

態(tài)數(shù)據(jù)成員(因?yàn)榉庆o態(tài)數(shù)據(jù)成員只有對象存在時(shí)才有意義)。所以類的數(shù)據(jù)成員x

和y也必須定義成靜態(tài)數(shù)據(jù)成員。

18、下列關(guān)于虛函數(shù)的描述中,正確的是()。

A、如果在重定義函數(shù)時(shí)使用了保留字virtual,則該重定義函數(shù)仍然是虛函數(shù)

B、虛函數(shù)不得聲明為靜態(tài)函數(shù)

C、虛函數(shù)不得聲明為另一個(gè)類的友元函數(shù)

D、派生類必須重新定義基類的虛函數(shù)

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:被關(guān)鍵詞virlual說明的函數(shù)稱為虛函數(shù)。對于虛函數(shù)有以下限制:

①只有類的成員函數(shù)才能說明為虛函數(shù)。這是因?yàn)椋摵瘮?shù)僅適用于有繼承關(guān)系

的類對象,所以普通函數(shù)不能說明為虛函數(shù)。②靜態(tài)成員函數(shù)不能是虛函數(shù),因

為靜態(tài)成員函數(shù)不受限于某個(gè)對象。③內(nèi)聯(lián)函數(shù)不能是虛函數(shù),因?yàn)閮?nèi)聯(lián)函數(shù)是

不能在運(yùn)行中動(dòng)態(tài)確定其位置。即使虛函數(shù)在類的內(nèi)部定義,編譯時(shí)仍將其看作是

非內(nèi)聯(lián)的。④構(gòu)造函數(shù)不能是虛函數(shù),因?yàn)闃?gòu)造時(shí)對象還是一片未定型的空間。

只有在構(gòu)造完成后,對象才能成為一個(gè)類的名副其實(shí)的實(shí)例。、⑤析構(gòu)函數(shù)可以

是虛函數(shù),而且通常說明為虛函數(shù)。說明虛函數(shù)的目的在丁?:使用delete運(yùn)算符刪

除一個(gè)對象時(shí),能確保析構(gòu)函數(shù)被正確地執(zhí)行。這是因?yàn)樵O(shè)汽虛析構(gòu)函數(shù)后,可.以

利用動(dòng)態(tài)聯(lián)編方式選擇析構(gòu)函數(shù)。⑥一般要求基類中說明了虛函數(shù)后,派生類說

明的虛函數(shù)應(yīng)該與基類中虛函數(shù)的參數(shù)個(gè)數(shù)相等,對應(yīng)參數(shù)的類型相同。如果不相

同,則將派生類虛函數(shù)的參數(shù)類型強(qiáng)制轉(zhuǎn)換為基類中虛函數(shù)的參數(shù)類型。

19、下列對模板的聲明中,正確的是()。

A、template<T>

B、template<classT1,T2>

C^template<classT1,classT2>

D、template<classll;class'12>

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:本題考核模板的定義。模板定義的〈類型參數(shù)表》中包含一個(gè)或多個(gè)

由逗號分隔的類型參數(shù)頂,每一項(xiàng)由關(guān)鍵詞class后跟一個(gè)用戶命名的標(biāo)識符,此

標(biāo)識符為類型參數(shù),它不是一種數(shù)據(jù)類型,但可以同一般數(shù)據(jù)類型一樣使用。在使

用類模板時(shí),必須將其實(shí)例化,即用實(shí)際的數(shù)據(jù)類型代替它。

20、若有—?個(gè)MyClass類,則執(zhí)行語句“MyClassobjl,obj2[2],*p;"后,自動(dòng)調(diào)

用該類的構(gòu)造函數(shù)()次c

A、2

B、3

C、4

D、5

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:本題考核溝造函數(shù)的調(diào)用。C++在創(chuàng)建一個(gè)對象時(shí),會自動(dòng)調(diào)用類的

構(gòu)造函數(shù),在構(gòu)造函數(shù)中可以執(zhí)行初始化成員變量的操作。語句“MyClassobjl,

obj2[2],*p;”創(chuàng)建了3個(gè)對象。objl、obj2[0]、obj2[l]和一個(gè)對象指針。在創(chuàng)

建。objl、obj2[0hobj2[l]對象時(shí)系統(tǒng)會調(diào)用類的構(gòu)造函數(shù)。但在創(chuàng)建對象指針p

時(shí),不調(diào)用類的構(gòu)造函數(shù),因?yàn)橹羔榩本身不定義類對象,而是定義了p可以指向

一個(gè)MyClass的對象。

21、以下程序的執(zhí)行結(jié)果為()。#include<iostream.h>Classsample{intn;

public:sample(inti){n=i;)operator++(){n++;(voiddisplayO{cout<<n<<

endI;}};voidmain(){sampleobj(5);obj++;

A、5

B、6

C、7

D、8

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:本題考核運(yùn)算重載的簡單應(yīng)用。程序中通過“++”運(yùn)算符重載將。bj++

轉(zhuǎn)換成對類的私有變量n的增1運(yùn)算。所以程序最后輸出為6。

22、有以下程序:#include<iostream>usingnamespacestd;intmain())inia=5,

b=4,c=3,d=2;if(a>b>c)cout<<d<<endl;elseif((c-1>=D)==1)cout<<

d+1<<end1;elsecout<<d+2<<end1;returnO;

A、2

B、3

C、4

D、編譯時(shí)有錯(cuò)、無結(jié)果

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:表面上看,本題很容易得到答案。其實(shí)不然,出題者在題中隱藏了一

個(gè)陷阱。粗心的讀者可能會想當(dāng)然地認(rèn)為if語句中的條件表達(dá)式:a>b>c成立(因

為a=5,b=4,c=3)o然后執(zhí)行if后面的語句,就得到錯(cuò)誤答案A)°要想正確解

答本題,先來了解關(guān)系運(yùn)算符的一些知識:在C++語言中,true(真)是不為。的任

何值,而false(假)是0。在使用關(guān)系運(yùn)算符和邏輯運(yùn)算符的表達(dá)式時(shí),若結(jié)果為

true(真)則返回1,若結(jié)果為false(假),則返回的是0。根據(jù)以上知識,第一步來判

斷if后面的條件表達(dá)式(a>b>C)是否成立,根據(jù)運(yùn)算符的結(jié)合性,先計(jì)算表達(dá)式

a>b,因?yàn)閍=5,b=4,所以可得到答案(rue,其返回值為1。再計(jì)算表達(dá)式1>

c,由于c=3,所以可得到答案為false(假),其返回值為0。因此if后面的條件表達(dá)

式不成立,繼續(xù)下面的條件判斷。第二步,計(jì)算elseif后面的條件表達(dá)式((c-l>

=D)==1),把c=3,d=2代入此條件表達(dá)式,可得到答案為irue,此條件表達(dá)式成

立,故執(zhí)行elseif后面的語句,輸出結(jié)果為3。

23、有以下程序:#includc<iostrcam>usingnamespacestd;intmain(){intx;for(int

i=l;i<=IOO;i++){x=i;if(++x%2==0)if(++x%3=0)if(++x%7=0)cout<

A、39,81

B、42,84

C、26,68

D、28,70

標(biāo)準(zhǔn)答案;8

知識點(diǎn)解析:程序最后輸出的x值所滿足的條件為:x本身能被7整除,(x-1)能被

3整除,(x-2)能被2整除。在1?100之間滿足條件的x值是28和70。

24、有以卜程序:#include<iostream>usingnamespacestd;ints=0;classsample

{staticintn;public:sample(inti){n=i;)staticvoidadd(){s+=n;));intsample::n=0;

A、2

B、5

C、7

D、3

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:程序中定義對象a(2)時(shí),通過構(gòu)造函數(shù)使靜態(tài)數(shù)據(jù)成員n=2,在定義

對象b(5)時(shí),通過構(gòu)造函數(shù)使靜態(tài)數(shù)據(jù)成員n=5(覆蓋了前面n=2),再執(zhí)行

"sample::add();”使全局變量s=5。注意:本題程序中盡管代碼中靜態(tài)數(shù)據(jù)成員

n的初始化語句“intsample::n=0;”沒有.意義(因?yàn)楦鲗ο笾械膎值由變量i賦

給),但不能省略,否則會出現(xiàn)編譯錯(cuò)誤。

25>有以下程序:#include<iostream.h>voidsort(intL[],intn){intj,k,flag,temp;

flag=n-l;while(flag>0){k=flag-1;flag=O;for(j=O;j<=k;j++){if(L|j|>L|j+l|){

A、123

B、3210

C、2130

D、1230

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:本題中的函數(shù)sori的功能是將輸入的數(shù)組L,按從小到大的順序排

序,并返回。所以程序最后的輸出為0123,即A選項(xiàng)。

26、有如下程序:#include<iostrcam>usingnamespacestd;Classx{protected:int

a;public:x(){a=l;});classx1:virtualpublicx{public:x1(){a+=I;cout<<

A、1

B、123

C、242

D、244

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:本題程序中引入了虛基類。在主函數(shù)中,執(zhí)行語句“yobj;”時(shí),先執(zhí)

行虛基類x的構(gòu)造函數(shù),使a=l,然后執(zhí)行類xl的構(gòu)造函數(shù),使a=2,并輸出值

20再執(zhí)行類x2的構(gòu)造函數(shù),使a=4,并輸出值4。最后執(zhí)行類y的構(gòu)造函數(shù),輸

出值4。

27、有如下程序:#inckide<iostream>usingnamespacestd;classAA{public:virtual

voidf(){cout<<"AA";}};classBB:publicAA{public:BB(){cout<<

"BB";)};cla

A、AA

B、AABBCC

C、BBAABBCC

D、BBBBAACC

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:本題中,函數(shù)f()在基類AA中派生類CC中都聲明為虛函數(shù),所以采

用動(dòng)態(tài)聯(lián)編。主函數(shù)首先定義類AA的對象aa和指針對象p,然后定義了類BB的

對象bb,此時(shí)調(diào)用了類BB的構(gòu)造函數(shù)輸出BB。再定義類CC的對象cc,由于類

CC是類BB的派生類,所以此時(shí)又調(diào)用類BB的構(gòu)造函數(shù)輸出BBo最后執(zhí)行涪句

“p=&cc;p->f();",輸出AA和CC。

28、有以下程序:#include<iostrcam>#includc<string>usingnamespacestd;

classbase(private:charbascNamc[10];public:base(){strepy(baseNamc,"Base");)

virtualchar*myName(){

A、DerivedBase

BaseBase

C、DerivedDcrived

D、BaseDerived

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:本題考核虛函數(shù)的應(yīng)用。類Derived是從基類Base公有派生而來

的。因此,Derived是基類Base的子類型。主函數(shù)中定義了一個(gè)基類對象bb和一

個(gè)派生類對象dd。從程序中可看出,派生類Derived的對象dd交給了處理基類

Base的對象的函數(shù)showPtr進(jìn)行處理。由于在基類中函數(shù)myName被定義成虛函

數(shù),所以在函數(shù)showPl「中調(diào)用的myName函數(shù)為派生類的成員函數(shù)mySame,從

而輸出Derived。然后輸出className,即基類名稱Base。

29、下面是類MyClass的定義,對定義中各語句描述正確的是()。classMyClass

{private:intx,y,z;public:voidMyClass(intA){x=a;)〃①intf(inta,intB)//@

{x=a;y=b;}intf(inta,

A、語句①是類MyClass的構(gòu)造函數(shù)的定義

B、語句②和③實(shí)現(xiàn)類成員函數(shù)的重載

C、語句④實(shí)現(xiàn)對類成員變量x的更新操作

D、語句①、②、③和④都不正確

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析?:在C++中構(gòu)造函數(shù)沒有返回類型,所以語句①是錯(cuò)誤的。語句②和

語句③在進(jìn)行f(x,y)調(diào)用時(shí)會產(chǎn)生二義性。靜態(tài)成員函數(shù)不能直接訪問類中說明的

非靜態(tài)成員。所以語句④也是錯(cuò)誤的。

30、有以下程序:#include<iostream>#include<fstream>usingnamespacestd;int

main(){ofstreamofile;charch;ofile.open("abc.txt");cin>>ch;while(ch!='#'){cin

>>ch;ofile.put(ch);

A、程序編譯時(shí)出錯(cuò)

B、abc#

C>abc

D、#

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:本題程序的功能是將從鍵盤終端輸入的內(nèi)容存儲到指定的文件中。

三、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5

分。)

31、【】是指反映數(shù)據(jù)元素之間邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu)。

標(biāo)準(zhǔn)答案:數(shù)據(jù)的邏輯結(jié)構(gòu)

知識點(diǎn)解析:本題考查數(shù)據(jù)的邏輯結(jié)構(gòu)的概念,數(shù)據(jù)的邏輯結(jié)構(gòu)是指反映數(shù)據(jù)元素

之間邏輯關(guān)系的數(shù)據(jù)結(jié)閡。邏輯關(guān)系是指數(shù)據(jù)元素之間的前后間關(guān)系。

32、在一個(gè)有n個(gè)元素的順序表的第i個(gè)元素(iSign);之前插入一個(gè)新元素時(shí),需

要向后移動(dòng)【1個(gè)元素。

標(biāo)準(zhǔn)答案:n-i+1

知識點(diǎn)解析:在一般情況下,要在第i個(gè)元素之前插入一個(gè)新元素時(shí),首先是從最

后一個(gè)元素開始,直到第i個(gè)元素之間共n-i+1個(gè)元素依次向后移動(dòng)一個(gè)位置。

33、結(jié)構(gòu)化程序設(shè)計(jì)所規(guī)定的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和【】。

標(biāo)準(zhǔn)答案:循環(huán)結(jié)構(gòu)

知識點(diǎn)解析:任何一個(gè)大型的程序都由三種基本結(jié)構(gòu)所組成,由這些基本結(jié)構(gòu)順序

地構(gòu)成了一個(gè)結(jié)構(gòu)化的程序。事實(shí)上,程序設(shè)計(jì)語言僅僅使用順序、選擇和循環(huán)三

種基本結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計(jì)方法。

34、將整個(gè)軟件劃分成若干單獨(dú)命名和可編程的部分,稱之為【】。

標(biāo)準(zhǔn)答案:模塊

知識點(diǎn)解析:模塊是軟件設(shè)計(jì)的一個(gè)重要概念。在解決復(fù)雜問題時(shí),把整個(gè)問題分

解成一個(gè)一個(gè)的模塊來降低復(fù)雜性。如高級語言中的過程、函數(shù)、子程序等。每個(gè)

模塊可以完成一個(gè)特定的功能。

35、在數(shù)據(jù)庫邏輯結(jié)構(gòu)的設(shè)計(jì)中,將ER模型轉(zhuǎn)換為關(guān)系模型應(yīng)遵循相關(guān)原則,對

于三個(gè)不同實(shí)體集和它們之間的多對多聯(lián)系m:n:p,最少可轉(zhuǎn)換為【】個(gè)關(guān)系模

式。

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:將ER圖轉(zhuǎn)換為關(guān)系模型的轉(zhuǎn)換方法有:一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系

模式;一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式;三個(gè)或三個(gè)以上實(shí)體間的一個(gè)多元聯(lián)

系轉(zhuǎn)換為一個(gè)關(guān)系模式。因此,本題答案為4。

四、填空題(本題共70題,每題1.0分,共10分。)

36、若要想進(jìn)行標(biāo)準(zhǔn)輸入輸出則頭文件必須包含件。

標(biāo)準(zhǔn)答案:iostream.h

知識點(diǎn)解析:暫無解析

37、在長度為n的有序線性表中進(jìn)行二分查找。最壞的情況下,需要的比較次數(shù)為

標(biāo)準(zhǔn)答案:log2n

知識點(diǎn)解析:暫無解析

38、假定一個(gè)一維數(shù)組的定義為“chara[8],b;”若把該數(shù)組最后一個(gè)元素賦值給

b,應(yīng)該采取的表達(dá)式為:。

標(biāo)準(zhǔn)答案:b=a⑺

知識點(diǎn)解析:暫無解析

39、成員函數(shù)中不能直接引用類中說明的非靜態(tài)成員。

標(biāo)準(zhǔn)答案:靜態(tài)

知識點(diǎn)解析:暫無解析

40、數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和3種。

標(biāo)準(zhǔn)答案:關(guān)系模型

知識點(diǎn)解析:暫無解析

41、實(shí)現(xiàn)比較兩個(gè)字符串大小的函數(shù)是o

標(biāo)準(zhǔn)答案:strcmp

知識點(diǎn)解析:暫無解析

42、空字符串的長度是o

標(biāo)準(zhǔn)答案:0

知識點(diǎn)解析:暫無解析

43、耦會和內(nèi)聚是評價(jià)模塊獨(dú)立性的兩個(gè)主要標(biāo)準(zhǔn),其中反映了模塊內(nèi)各成

分之間的聯(lián)系。

標(biāo)準(zhǔn)答案:內(nèi)聚

知識點(diǎn)解析:暫無解析

44、己知doublevar;是文件F1.CPP中的一個(gè)全局變量定義,若文件F2.CPP中

的某個(gè)函數(shù)也需要訪問,則在文件F2.CPP中var應(yīng)說明為。

標(biāo)準(zhǔn)答案:外部變量

知識點(diǎn)解析:暫無解析

45、程序文件的編譯錯(cuò)誤分為和兩類。

標(biāo)準(zhǔn)答案:語法錯(cuò)誤連接錯(cuò)誤

知識點(diǎn)解析:暫無解析

國家二級(C++)筆試模擬試卷第3套

一、公共基礎(chǔ)選擇題(本題共io題,每題1.0分,共

70分。)

1、下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是()。

A、自頂向下

B、逐步求精

C、模塊化

D、可復(fù)用

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:暫無解析

2、在深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為()。

A、31

B、32

C、16

D、15

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:暫無解析

3、結(jié)構(gòu)化程序設(shè)計(jì)方法的三種基本控制結(jié)構(gòu)中不包拈(.)。

A、循環(huán)結(jié)構(gòu)

B、遞歸結(jié)構(gòu)

C、順序結(jié)構(gòu)

D、選擇結(jié)構(gòu)

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

4、下列不屬于軟件調(diào)試技術(shù)的是()

A、強(qiáng)行排錯(cuò)法

B、集成測試法

C、回溯法

D、原因排除法

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

5、以卜不屬十?dāng)?shù)據(jù)庫系統(tǒng)模型的是()。

A、選擇型數(shù)據(jù)庫系統(tǒng)

B、關(guān)系型數(shù)據(jù)庫系統(tǒng)

C、層次型數(shù)據(jù)庫系統(tǒng)

D、網(wǎng)狀型數(shù)據(jù)庫系統(tǒng)

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:暫無解析

6、數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)的最主要區(qū)別是()。

A、數(shù)據(jù)庫系統(tǒng)復(fù)雜,而文件系統(tǒng)簡單

B、文件系統(tǒng)不能解決數(shù)據(jù)冗余和數(shù)據(jù)獨(dú)立性問題,而數(shù)據(jù)庫系統(tǒng)可以解決

C、文件系統(tǒng)只能管理程序文件,而數(shù)據(jù)庫系統(tǒng)能夠管理各種類型的文件

D、文件系統(tǒng)管理的數(shù)據(jù)量較少,而數(shù)據(jù)庫系統(tǒng)可以管理龐大的數(shù)據(jù)量

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

7、按照“后進(jìn)先出”原見組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

A、隊(duì)列

B、棧

C、雙向鏈表

D、二叉樹

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

8、軟件需求分析階段的工作,可以分為四個(gè)方面:需求獲取,需求分析,編寫需

求規(guī)格說明書,以及(),

A、階段性報(bào)告

B、需求評審

C、總結(jié)

D、都不正確

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

9、已知數(shù)據(jù)表A中每個(gè)元素距其最終位置不遠(yuǎn),為節(jié)省時(shí)間,應(yīng)采用的算法是

()o

A、堆排序

B、直接插入排序

C、快速排序

D、直接選擇排序

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

10、樹是結(jié)點(diǎn)的集合,它的根結(jié)點(diǎn)數(shù)目是()。

A、有且只有1

B、1或多于1

C、。或I

D、至少2

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:暫無解析

二、選擇題(本題共25題,每題1.0分,共25分。)

11、實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)性要使用

A、重載函數(shù)

B、析構(gòu)函數(shù)

C、構(gòu)造函數(shù)

D、虛函數(shù)

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:暫無解析

12、下列關(guān)于類和對象的敘述中,錯(cuò)誤的是()。

A、一個(gè)類只能有一個(gè)對象

B、對象是類的具體實(shí)例

C、類是對某一類對象的抽象.

D、類和對象的關(guān)系是一種數(shù)據(jù)類型與變量的關(guān)系

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:暫無解析

13、若有以下定義:inta[]={l,2,3,4,5,6,7);charcl='b',c2='2';則數(shù)值

不為2的表達(dá)式是()。

A、a|l]

B、B'?cl

C、a[3-c2]

D、c2-0

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:暫無解析

14、在C++語言中,main函數(shù)默認(rèn)返回一個(gè)()類型的值。

A、int

B、float

C、char

D、void

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:暫無解析

15、設(shè)有語句:charstr1[]=,,string,,,str2[8],*str3,*str4=,,string";,則下列對庫函數(shù)

strcpy調(diào)用不正確的是()。

A、strcpyCstrl/'Hellol");

strcpy(str2,"Hello2");

C、strcpy(str3,"Hcllo3");

D、strcpy(str4,MHenllo4");

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:暫無解析

16、不能作為函數(shù)重載的判斷依據(jù)的是()。

A^const

B、返回類犁

C、參數(shù)個(gè)數(shù)

D、參數(shù)類型

標(biāo)準(zhǔn)牝索.?

知識之解析:哲無解析

17、卜,面程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;int

main(){intn=10;while(n>7){n—;cout<<11<<\';]cout<<endl;}

A、10,9,8,

B、9,8,7,

C、10,9,8,7,

D、9,8,76

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

18、已知枚舉類型定義語句為:enum

Token{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};則下列敘述中錯(cuò)誤的是

()o

A、枚舉常量NAME的值為1

B、枚舉常量NUMBER的值為1

C、枚舉常量MINUS的值為6

D、枚舉常量PRINT的值為10

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:暫無解析

19、已知:intn=10;那么下列語句中錯(cuò)誤的是()。

A、int*p=newlong|n];

B、intp[n];

C>int*p=newlong(n);

D、intp[10|;

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

20、用鏈表表示線性表的優(yōu)點(diǎn)是()。

A、便于隨機(jī)存取

B、花費(fèi)的存儲空間較順序存儲少

C、便于插入和刪除操作

D、數(shù)據(jù)元素的物理順序與邏輯順序相同

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:暫無解析

21、下列關(guān)于指針的運(yùn)算中,()是非法的。

A、兩個(gè)指針在一定條件下,可以進(jìn)行相等或不等的比較運(yùn)算

B、可以將一個(gè)空指針賦值給某個(gè)指針

C、一個(gè)指針可以加上兩個(gè)整數(shù)之差

D、兩個(gè)指針在一定條件下可以相加

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:暫無解析

22、假定MyClass為一類,執(zhí)行MyClassa[3],*p[2];語句時(shí)會自動(dòng)調(diào)用該類構(gòu)造

函數(shù)()次。

A、2

B、3

C、4

D、5

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

23、以卜程序的輸出結(jié)果是()。#include<ioslream.h>main(){intm=5;if(m++>

5)cout<<m:elsecout<<m—;}

A、7

B、6

C、5

D、4

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

24、有如下程序:#inchde<iostream.h>voidfun(int&x,inty){intt=x;x=y;

y=t;}intmain(){inta[2]={23,42);fun(a[l]?a|0]);std::cout<<a[0]<<n,'*<

<a[l]<<Std::endl;return0;)執(zhí)行后的輸出結(jié)臭是()。

A、42,42

B、23,23

C、23,42

D、42,23

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

25、下列類的定義中,有()處語法錯(cuò)誤。classBase{public:Base()(}Basc(inti)

{data=i;)ptivate:inidata;);classDeriVe:publicBase{public:

Derive():Base(0){)Derive(intx){d=x:}voidsetvalue(inti){data=i;}private:

d;);

A、1

B、2

C、3

D、4

標(biāo)準(zhǔn)答案:2

知識點(diǎn)解析:暫無解析

26、假定MyQass為一個(gè)類,則該類的拷貝初始化構(gòu)造函數(shù)的聲明語句為()。

A、MyClass&(MyClassx);

B、MyClass(MyClassx)

C、MyClass(MyClass&x);

D、MyClass(MyClass*x)

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:暫無解析

27、下面敘述錯(cuò)誤的是()。

A、派生類可以使用private派生

B、對基類成員的訪問必須是無二義性的

C、基類成員的訪問能力在派生類中維持不變

D、賦值兼容規(guī)則也適用于多繼承的組合

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:暫無解析

28、()提供了類對外部的接口,私有成員是類的內(nèi)部實(shí)現(xiàn),而保護(hù)成員不允許外界

訪問,但允許派生類的成員訪問,這樣既有一定的隱藏能力,又提供了開放的接

口。

A、公有成員

B、私有成員

C、私有成員函數(shù)

D、保護(hù)成員

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:暫無解析

29、當(dāng)需要將一個(gè)函數(shù)boolisnumber(charc)聲明為內(nèi)聯(lián)函數(shù)時(shí),則此內(nèi)聯(lián)函數(shù)的

函數(shù)原型為()。

A、cnumboolisnumbcr(charc);

B、defineboolisnumberfcharc);

C^inlineboolisnumber(charc);

D、externboolisnumbcrfcharc);

標(biāo)準(zhǔn)答案:4

知識點(diǎn)解析:暫無解析

30、有如下程序:#includc<iostrcam>usingnamespacestd;classTest{public;

Test(){n+=2;}~Tesl(){n-=3;)staticintgetNum(){returnn;)private:staticint

n:|;intTest::n=l;intmain()(Test*p=newTest:deletep;cout<<nn="<<

Test::getNum()<<endl;retumO;}執(zhí)行后的輸出結(jié)果是()。

A、n=0

B、n=l

C、n=2

D、n=3

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:暫無解析

31、若有以下程序:#include<iostream>usingnamespacestd;classBase

{public:Base(){x=0;)intx;};classDerivedkvirtualpublicBase{public:

Derivedl(){X=10;});ClassDerived2:VirtualpublicBase{public:Dedved2()

{x=20;)};classDcnvcd:publicDclivcdl,protectedDcnvcd2{};intmain()

{Derivedobj;cout<<obj.X<<endl;return0;}該程序運(yùn)行后的輸出結(jié)果是

()。

A、20

B、30

C、10

D、0

標(biāo)準(zhǔn)答案:1

知識點(diǎn)解析:暫無解析

32、假定MyClass為一個(gè)類,那么下列的函數(shù)說明中,()為該類的析構(gòu)函數(shù)。

A、void~MyClass();

B、-MyClass(intn);

C>MyClass();

D、~MyClass();

標(biāo)準(zhǔn)答案:8

知識點(diǎn)解析:暫無解析

33、執(zhí)行語句序列ofsireamoulfile("data.dat");if(...)cout<<Ho

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論