國家二級(jí)C++機(jī)試(選擇題)模擬試卷39_第1頁
國家二級(jí)C++機(jī)試(選擇題)模擬試卷39_第2頁
國家二級(jí)C++機(jī)試(選擇題)模擬試卷39_第3頁
國家二級(jí)C++機(jī)試(選擇題)模擬試卷39_第4頁
國家二級(jí)C++機(jī)試(選擇題)模擬試卷39_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

國家二級(jí)C++機(jī)試(選擇題)模擬試卷

第1套

一、選擇題(本題共23題,每題1.0分,共23分。)

1、一個(gè)棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入

棧,然后再依次出棧,則元素出棧的順序是()。

A、12345ABCDE

B、EDCBA54321

C、ABCDE12345

D、54321EDCBA

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

知識(shí)點(diǎn)解析:棧是按照“先進(jìn)后出”或“后進(jìn)先出”的原則組織數(shù)據(jù)的。所以出棧順序

是EDCBA5432R

2、對(duì)如下二叉樹進(jìn)行后序遍歷的結(jié)果為()。

A、ABCDEF

B、DBEAFC

C、ABDECF

D、DEBFCA

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

知識(shí)點(diǎn)解析:所謂后序遍歷是指在訪問根據(jù)結(jié)點(diǎn)、遍歷左子樹與遍歷右予樹這三者

中,首先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點(diǎn),并且,在遍歷左、右子

樹時(shí),仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根點(diǎn)。因此,后序遍歷二叉

樹的過程也是一個(gè)遞歸過程。其簡(jiǎn)單描述為:若二叉樹為空,則結(jié)束返回;否則,

先后序遍歷左子樹,然后后序遍歷右子樹,最后訪問根結(jié)點(diǎn)。對(duì)于后序遍歷,第一

個(gè)訪問的結(jié)點(diǎn)一定是最左下的結(jié)點(diǎn),最后一個(gè)訪問的結(jié)點(diǎn)一定是根結(jié)點(diǎn),所以選項(xiàng)

D為正確答案。

3、以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是()。

A、public

static

C>protected

D、private

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

知識(shí)點(diǎn)解析:類的成員訪問權(quán)限有3種:public(公用)、protected(保護(hù))、private私

旬。

4、若己定義inta[]={0,。2,3,4,5,6,7,8,9),*p=a,i;其中叱達(dá)9,則

對(duì)a數(shù)組元素不正確的引用是()。

A、a|p-a]

B、*(&a[i])

C、pLiJ

D、a[10]

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

知識(shí)點(diǎn)解析:數(shù)組有N個(gè)元素,則數(shù)組元素引用為a(0)?a(N.1),共計(jì)N個(gè),沒

有a(10)這個(gè)元素,最后的元素是a(9)。

5、結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括()。

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

B、GOTO跳轉(zhuǎn)

C、選擇(分支)結(jié)構(gòu)

D、重復(fù)(循環(huán))結(jié)構(gòu)

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

知識(shí)點(diǎn)解析:結(jié)構(gòu)化程序的基本結(jié)構(gòu)有;順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),沒有

GOTO跳轉(zhuǎn)結(jié)構(gòu)。

6、下面的描述中,正確的是()。

A、virtual可以用來聲明虛函數(shù)

B、含有純虛函數(shù)的類是不可以用來創(chuàng)建對(duì)象的,因?yàn)樗翘摶?/p>

C、即使基類的構(gòu)造函數(shù)沒有參數(shù),派生類也必須建立構(gòu)造函數(shù)

D、靜態(tài)數(shù)據(jù)成員可以通過成員初始化列表來初始化

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

知識(shí)點(diǎn)解析:在基類中用viilual聲明成員函數(shù)為虛函數(shù),所以A是正確的。純虛

函數(shù)是在聲明虛函數(shù)時(shí)被“初始化”為0的虛函數(shù)。純虛函數(shù)是一種特殊的虛函數(shù),

它沒有具體的實(shí)現(xiàn)。靜態(tài)數(shù)據(jù)成員函數(shù)只能在類外進(jìn)行初始化。

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

A、MyClass(MyClassx);

B、MyClass(MyClass&x);

C^MyClass(&x);

D、MyClass(x);

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

知識(shí)點(diǎn)解析:拷貝構(gòu)造函數(shù)也是構(gòu)造函數(shù),所以函數(shù)名字為MyClass,但它只有一

個(gè)參數(shù),這個(gè)參數(shù)是本類的對(duì)象,即x;而且采用對(duì)象的引用的形式,也就是

&xo所以本題答案是B。

8、下列枚舉類型的定義中,包含枚舉值3的是()。

A、enumtest{RED,YELLOW,BLUE,BLACK);

B、enumtest(RED,YELLOW=4,BLUE,BLACK);

C、enumtesl{RED=l,YELLOW,BLUE,BLACK};

D、enumtest{RED,YELLOW=6,BLUE,BLACK);

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

知識(shí)點(diǎn)常析:聲明枚舉類型的語法格式為:enum<類型名>{〈枚舉值表>};<

枚舉值表>包含多個(gè)枚舉值,它們用逗號(hào)隔開,每個(gè)枚舉值就是一個(gè)枚舉常量。枚

舉值有兩種定義形式:一是〈值名>;二是〈值名>=〈整型常量關(guān)于枚舉類

型有以下4點(diǎn)說明:①一個(gè)enum類型實(shí)際上是im類型的一個(gè)子集,其每一個(gè)枚

舉值代表一個(gè)整數(shù)。②n個(gè)枚舉值全部未賦常量值時(shí),它們自左至右分別與整數(shù)

0,I,…n-1對(duì)應(yīng)。③若第i個(gè)枚舉值賦常量值為n則其未賦常量值的后續(xù)枚舉

值分別與整數(shù)m+1,m+2…對(duì)應(yīng),直到下一個(gè)賦了值的枚舉值或結(jié)束。因此,為枚

舉值賦的整型常量值應(yīng)從左到右遞增。④枚舉類型的聲明也可作為組聲明若干整

型符號(hào)常星的方法。也就是說,把每個(gè)要聲明的符號(hào)常星作為一個(gè)枚舉值,符各個(gè)

枚舉值合在一起定義成一個(gè)枚舉類型。對(duì)于本題來說,在選項(xiàng)A)中,對(duì)4個(gè)枚舉

值沒有賦常量值,所以它們從左到右與整數(shù)0,1,2,3相對(duì)應(yīng)。因而選項(xiàng)A)為正

確選項(xiàng)。

9、計(jì)算斐波那契數(shù)列第n項(xiàng)的函數(shù)定義如下:intfib(intn){if(n==O)relurn1;else

if(n=l)return2:elsereturnfib(n一l)+fib(n-2):}若執(zhí)行函數(shù)調(diào)用表達(dá)式

fib(2),函數(shù)fib被調(diào)用的次數(shù)是()。

A、1

R、2

C、3

D、4

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

知識(shí)點(diǎn)解析:斐波那契數(shù)列是遞歸函數(shù),所以fib(2)=fib(1)+fib(0)

=2+1=3。因而執(zhí)行函數(shù)調(diào)用表達(dá)式fib(2)時(shí),函數(shù)fib被調(diào)用的次是2次。

10、若需要為XV類重載乘法運(yùn)算符,運(yùn)算結(jié)果為XV類型,在將其聲明為類的成

員函數(shù)時(shí),下列原型聲明正確的是()。

A、XVoperator*(XV,XV);

B、XV*(XV);

C、operator*(XV);

D、XVoperator*(XV);

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

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

知識(shí)點(diǎn)解析:此題考查的是派生類對(duì)基類成員的訪問。基類的成員有公有、保護(hù)和

私有三種訪問屬性;類的繼承方式也有公有繼承、保護(hù)繼承和私有繼承三種。無論

那種繼承方式,派生類中的成員都不能訪問基類中的私有成員,但可以訪問基類中

的公有成員和保護(hù)成員,

15>有如下類聲明:classBase(protected;intamount;public;Base(intn=0):

amount(n){}intgetAmounl()const{returnamount;)};classDerived:public

Base{protected;intvalue;public;Derived(intm,intn):value(m).Base(n){)Int

gctData()const{returnvaluc+amount;));已知x是一個(gè)Dcnvcd對(duì)象,則下列表達(dá)

式中正確的是()。

A^x.value+x.getAmount。

B、x.gctData()—x.getAmount。

C、x.getData()—x.amount

D^x.vabled一x.aount

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

知識(shí)點(diǎn)解析:此題考查的是派生類對(duì)基類成員的訪問權(quán)限。派生類中的成員不能訪

問基類中的私有成員,可以訪問基類中的公有成員和保護(hù)成員。派生類從基類公有

繼承時(shí),基類的公有成員和保護(hù)成員在派生類中仍然是公有成員和保護(hù)成員;派生

類從基類私有繼承時(shí),基類的公有成員和保護(hù)成員在派生類中都變成私有成員;派

生類從基類保護(hù)繼承時(shí),基類的公有成員在派生類中變成保護(hù)成員,基類的保護(hù)成

員在派生類中仍然是保批成員。

16、有如下程序:#include<iostream>usingnamespacestd;classA{public:

A(){coutVV"A";}-A(){coutVV"~A":)};classB:publicA(A*p;

public:B(){cout<<"B";p=newA();)~B(){coutVV"?B";deletep;}};int

main().{Bobj;return0;}執(zhí)行這個(gè)程序的輸出結(jié)果是()。

A、RAA?A?R?A

B、ABA?B?A?A

C、BAA~B~A?A

D、ABA~A~B?A

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

知識(shí)點(diǎn)解析:此題考查的是派生類對(duì)象的構(gòu)造與析構(gòu)。建立派生類對(duì)象時(shí),構(gòu)造函

數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)基類被定義時(shí)聲明的

順序(自左向右).>執(zhí)行成員對(duì)象的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)成員對(duì)象在類

中聲明的順序.>執(zhí)行派生類的構(gòu)造函數(shù)。所以本題在建立派生類B的對(duì)象。bj是

會(huì)先調(diào)用基類A的構(gòu)造函數(shù),然后調(diào)用自身的構(gòu)造函數(shù)。注意:B類中定義的成

員p是A類的指針而不是一個(gè)對(duì)象,故在調(diào)用自身構(gòu)造函數(shù)前不需要構(gòu)造。而在

B類構(gòu)造函數(shù)中使用new操作符動(dòng)態(tài)地構(gòu)造了一個(gè)A類的對(duì)象,所以整個(gè)構(gòu)造結(jié)

果是輸出:ABA。派生類對(duì)象的析構(gòu)與構(gòu)造嚴(yán)格相反,即先析構(gòu)自身,然后析構(gòu)

自身所包含的成員對(duì)象,最后調(diào)用基類的析構(gòu)函數(shù)。故本題中當(dāng)main。函數(shù)返回

時(shí),析構(gòu)B類的對(duì)象obj:首先調(diào)用一B(),接著再調(diào)用一A()因?yàn)樵?B()函數(shù)中釋

放了動(dòng)態(tài)創(chuàng)建的A類對(duì)象,故整個(gè)析構(gòu)所輸出的結(jié)果是?B?A?A。所以這個(gè)程

序輸出結(jié)果為ABA?B?A?A

17、下列運(yùn)算符中,不能被重載的是()。

A、&&

B、!=

C、.

D、++

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

知識(shí)點(diǎn)解析:此題考查的是運(yùn)算符重載。在C++中,只有.、.*、一>小、

::、?:這五個(gè)運(yùn)算符不能重載。

18、有如下類定義classMyClasspublic:Private:intdata;);若要為

MyClass類重載流輸入運(yùn)算符>>,使得程序中可以“cin>>obj形式輸入

MyClass類的對(duì)象obj,則橫線處的聲明語句應(yīng)為()。

A、friendistream&operator>>(istream&is,MyClass&a);

B、friendistream&operator>>(istream&is,MyClassa);

C、istream&operator>>(istream&is,MyClass&a);

D、istream&operator>>(istream&is,MyClassa);

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

知識(shí)點(diǎn)解析:C++的輸入運(yùn)算符>>作為非類成員函數(shù)重載。在一個(gè)類中,可將輸

入運(yùn)弓符>>聲明為友元函數(shù),在類MyClass重載輸入運(yùn)算符>>的形式如選項(xiàng)

A)所示。

19^在語句cin>>data;中,cin是()。

A、C++的關(guān)鍵字

B、類名

C、對(duì)象名

D、函數(shù)名

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

知識(shí)點(diǎn)解析:此題考查的是預(yù)定義流對(duì)象。C++有4個(gè)預(yù)定義的流對(duì)象:cin—標(biāo)準(zhǔn)

輸入:cout—標(biāo)準(zhǔn)輸出:cerr—標(biāo)準(zhǔn)出錯(cuò)信息輸出:clog一帶緩沖的標(biāo)準(zhǔn)出錯(cuò)信息輸

出。

20、下面是類shape的定義:classShape{public:VirtualvoidDraw()=0;};下

列關(guān)于Shape類的描述中,正確的是()。

A、類Shape是虛基類

類Shape是抽象類

C、類Shape中的Draw函數(shù)聲明有誤

D、語句"Shapes;”能夠建立Shape的一個(gè)對(duì)象s

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

知識(shí)點(diǎn)解析:因?yàn)轭怱hape中包含純虛函數(shù)Draw(),所以類Shape是抽象類。

21、若磁盤上已存在某個(gè)文本文件,其全路徑文件名為d:\ncre\test.ixt,下列語句

中不能打開該文件的是()。

A^ifstreamflle("d:\ncre\test.txt");

B>ifstreamfile("d:\\ncre\\tesl.txt");

C、ifstreamfile;file.open("d:\\ncre\\test.txt'*);ifstream("d:WncreWtest.txt");

D^ifstream*pFile=new

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

知識(shí)點(diǎn)解析:此題考查的是轉(zhuǎn)義字符。在字符常量或字符串中,以開頭的一系

列字符被看做是一個(gè)轉(zhuǎn)義字符。要表示字符,必須使用轉(zhuǎn)義字符

22、下列關(guān)于函數(shù)模板的描述中,錯(cuò)誤的是()。

A、從模板實(shí)參表和從模板函數(shù)實(shí)參表獲得信息矛盾時(shí),以模板實(shí)參的信息為淮

B、對(duì)于常規(guī)參數(shù)所對(duì)應(yīng)的模板實(shí)參,任何情況下都不能省略

C、虛擬類型參數(shù)沒有出現(xiàn)在模板函數(shù)的形參表中時(shí),不能省略模板實(shí)參

D、模板參數(shù)表不能為空

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

知識(shí)點(diǎn)解析:在調(diào)用一個(gè)模板函數(shù)時(shí),如果編譯系統(tǒng)能夠從模板實(shí)參表判斷其中或

全部虛擬類型參數(shù)對(duì)應(yīng)的實(shí)際參數(shù),而且它們正好是參數(shù)表中最后的若干參數(shù),剛

模板實(shí)參表中的那幾個(gè)參數(shù)可以省略。

23、在下列枚舉符號(hào)中,用來表示“相對(duì)于當(dāng)前位置”文件定位方式的是()。

A、ios_base::cur

B、ios_base::beg

C、ios_base::out

D、ios_base::end

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

知識(shí)點(diǎn)解析:C++流的定位方式(也就是指針移動(dòng)方式)有三種,被定義為

ios_base::seekdir中的一組枚舉符號(hào):iosbase::beg相當(dāng)于文件首:ios

base::cur相當(dāng)于當(dāng)前位置(負(fù)數(shù)表示當(dāng)前位力之前);iosbase::end相對(duì)于文

件尾。

國家二級(jí)C++機(jī)試(選擇題)模擬試卷

第2套

一、選擇題(本題共22題,每題1.0分,共22分。)

1、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。

A、數(shù)據(jù)字典

B、詳細(xì)設(shè)計(jì)說明書

C、數(shù)據(jù)流圖說明書

D、軟件需求規(guī)格說明書

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

知識(shí)點(diǎn)解析:需求分析的最終結(jié)果是生成軟件需求規(guī)格說明書,可以為用戶、分析

人員和設(shè)計(jì)人員之間的交流提供方便。

2、有如下程序:#include<ioslream>usingnamespacestd;voidfunction2(intn);

voidfunctionl(intn){if(n<=O)return;function2(n-2);)voidfunction2(intn){if(n

<=O)return;tunctionl(n—1);)intmain(){fimctionl(5);return0:)下列關(guān)于程序

運(yùn)行情況的描述手,正確的是()。__

A、functionl運(yùn)行1次,function2運(yùn)行2次

B、functionl運(yùn)行2次,function2運(yùn)行1次

C、functionl運(yùn)行2次,function2運(yùn)行3次

D^functionl運(yùn)行2次,function2運(yùn)行2次

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

知識(shí)點(diǎn)解析:在主函數(shù)中執(zhí)行主nctionl(5)時(shí),會(huì)調(diào)用解nction2(3),function2(3)X

會(huì)調(diào)用functionl(2),function]。)又會(huì)調(diào)用function2(0),到此相互調(diào)用結(jié)束。所以

func【ionl()和function2()各執(zhí)行了2次。

3、有一如下程序:#includeusingnamespacestd;classA{public:virtualvoid

fiincl(){cout?,,Ar,;}voidfunc2(){cout?,,A2,,;)};classB:publicA{public:

voidfuncl(){cout?vBr,;)voidfunc2(){cout?^^B2^^;));intmain(){A*P=ncw

B:P—>funcl();P—〉func2();deletep;return0;}執(zhí)行這個(gè)程序的輸出結(jié)果

是()。

A、B182

B、A1A2

「、R1A2

D、A1B2

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

知識(shí)點(diǎn)解析:本題考查虛函數(shù)。虛函數(shù)指在基類中聲明為virtual并在一個(gè)或多個(gè)

派生類中被重新定義的成員函數(shù)。題中定義了一個(gè)派生類對(duì)象B,并使用類A的

時(shí)象指針指向B,由于基類A中的fund為虛函數(shù),所以會(huì)執(zhí)行派生類的fund,輸

出B1,而基類中的func2不是虛函數(shù),所以p->func2()會(huì)執(zhí)行基類的func2,輸出

A2o故答案為C。

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

A^自頂向下

B、逐步求精

C、模塊化

D、可復(fù)用

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

知識(shí)點(diǎn)解析:結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為:自頂向下,逐步求精,

模塊化,限制使用got。語句。自頂向下是指程序設(shè)計(jì)時(shí)應(yīng)先考慮總體,后考慮細(xì)

節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo)。逐步求精是指對(duì)復(fù)雜問題應(yīng)設(shè)計(jì)一些子目

標(biāo)過渡,逐步細(xì)化。模塊化是把程序要解決的總目標(biāo)先分解成分目標(biāo),再進(jìn)一步分

解成具體的小目標(biāo),把每個(gè)小目標(biāo)稱為一個(gè)模塊??蓮?fù)用性是指軟件元素不加修改

成稍加修改便可在不同的軟件開發(fā)過程中重復(fù)使用的性質(zhì)。軟件可復(fù)用性是軟件工

程追求的目標(biāo)之一,是提高軟件生產(chǎn)效率的最主要方法,不屬于結(jié)構(gòu)化程序設(shè)計(jì)方

法。

5、設(shè)循環(huán)隊(duì)列的存儲(chǔ)空間為Q(l:m),初始狀態(tài)為front二rear=m。經(jīng)過一系列正

常的操作后,front=l,rear=mo為了在該隊(duì)列中尋找值最大的元素,在最壞情況

下需要的比較次數(shù)為

A、m

B、m-1

C、m-2

D、1

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

知識(shí)點(diǎn)解析:經(jīng)過一系列正常的操作后,fronts,rear=m,那么最壞情況下需要的

比較次數(shù)為rear-front-1=m-1-1=m-2。

6、下列關(guān)于類定義的說法中,正確的是()。

A、類定義中包括數(shù)據(jù)成員和函數(shù)成員的聲明

B、類成員的缺省訪問權(quán)限是保護(hù)的

C、數(shù)據(jù)成員必須被聲明為私有的

D、成員函數(shù)只能在類體外進(jìn)行定義

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

知識(shí)點(diǎn)解析:此題考查的是類的定義。類中缺省的訪問權(quán)限是私有的,所以選項(xiàng)B

錯(cuò)誤:類的數(shù)據(jù)成員和成員函數(shù)的訪問捽制權(quán)限均可被聲明為公有、私有和保護(hù)中

的一種,所以選項(xiàng)c錯(cuò)誤:成員函數(shù)的實(shí)現(xiàn)可以在類體內(nèi)定義,也可以在類體外定

義,所以選項(xiàng)D錯(cuò)誤。

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

A、對(duì)基類成員的訪問能力在private派生類中和public派生類中是相同的

B、基類的private成員在public派生類中不可訪問

C、基類中的public成員隨protected派生類中是protected的

D^基類中的public成員在protected派生類中仍然是public的

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

知識(shí)點(diǎn)解析:基類的公有成員和保護(hù)成員在保護(hù)派生類中都成了保護(hù)成員,其私有

成員仍為基類私有。

8、以下程序的執(zhí)行結(jié)果是()。#include<iostream.h>#include<iomanip.h>void

fun(intn){if(n!=O){fun(n-l);for(inti=l:i<=n;i++)cout<<setw(3)<<i;cout

<<endl;))voidmain(){fun(3);

A、001012

B、112123

C、122333

D、123

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

知識(shí)點(diǎn)解析:首先由程序中的主函數(shù)main入手,調(diào)用fun函數(shù),參數(shù)為3。fun(n)

函數(shù)在其內(nèi)部,當(dāng)n不等于0時(shí),遞歸調(diào)用fun(n?l)。當(dāng)參數(shù)為3時(shí),fun(3)調(diào)用

fun(2)…,然后利用for循環(huán)輸出i值,當(dāng)n=l時(shí),只輸出I,輸出回車后,就跳入

fun(2),輸出1,2,最后輸出是1,2,3o

T

rnrzi

FJLIJ

LZJLIJ0J

PJ

LZJLIJLLJ

則由關(guān)系R得到關(guān)系T的操作是()。

A、選擇

B、投影

C、交

D、并

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

知識(shí)點(diǎn)解析:由關(guān)系R和T所包含的元素可知,關(guān)系R經(jīng)過選擇操作就可以得到

關(guān)系To

10、下列字符串中,不可以用作C++標(biāo)識(shí)符的是()。

A、y_2006

B、_TEST_H

CNReturn

D、switch

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

知識(shí)點(diǎn)解析:此題考查的是標(biāo)識(shí)符。標(biāo)識(shí)符是由數(shù)字、字母以及下劃線構(gòu)成,其第

一個(gè)字符必須是字母或下劃線,中間不能有空格;標(biāo)識(shí)符的長(zhǎng)度是任意的,但由于

編譯系統(tǒng)的限制一般不超過31個(gè)字符:標(biāo)識(shí)符中的大小寫字母是不同的:定義標(biāo)

識(shí)符時(shí)不能采用系統(tǒng)的保留字。

11、有如下程序:intx=3;do{x―=2;cout<<x,)while(!(------x));執(zhí)行這個(gè)程序

的輸出結(jié)果是()。

A、1

B、30

C、1—2

D、死循環(huán)

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

知識(shí)點(diǎn)解析:此題考查的是do—while循環(huán)語句。do—while循環(huán)首先執(zhí)行do語句

中的循環(huán)體,再判斷是否需要繼續(xù)執(zhí)行循環(huán)。題目中do語句“x-=2",while語句

中,,—x唧x為0,取反為非0,循環(huán)繼續(xù)執(zhí)行:執(zhí)行“x-2”和“——x”取反后,

循環(huán)結(jié)束程序退出。

12、如果不使用多態(tài)機(jī)制,那么通過基類的指針雖然可以指向派生類對(duì)象,但是只

能訪問從基類繼承的成員。有如下程序,沒有使用多態(tài)機(jī)制。includeusing

namespacestd:classBase{inta,b:public:Base(intX,intY){a=x:b=y:)void

show(){cout<

A、10,20

B、30,40

C、20,30

D、50,50

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

知識(shí)點(diǎn)解析:此題考查的是多態(tài)性。在C++中,一個(gè)基類指針可以用于指向它的

派生類對(duì)象,而且通過這樣的指針調(diào)用虛函數(shù)時(shí),被調(diào)用的是該指針實(shí)際所指向的

府象類的那個(gè)重定義版本。在實(shí)函數(shù)的情況下。通過基類指針?biāo){(diào)用的只能是基類

的那個(gè)函數(shù)版本,無法調(diào)用到派生類中重定義函數(shù)。此題中,通過指針pb所調(diào)用

的是基類的版本,即輸出a和b的值10,20。

13、下面是重載為非成員函數(shù)的運(yùn)算符函數(shù)原型,其中錯(cuò)誤的是()。

A、Fractionoperator+(Fraction,Fraction);

B>Fractionoperator一(Fraction);

C、Fraction&operator=(Fraction&,Fraction);

D、Fraction&operator+=(Fraction&,Fraction);

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

知識(shí)點(diǎn)。析:此題考查的是運(yùn)算符重載。C++語言規(guī)定,運(yùn)算符只能作為成員

函數(shù)重載。

14、有如下程序:#includeusingnamespacestd;classPoint]intx,y;public:

Point(intxl=0,intyl=0):x(xl),y(yl){}intget(){returnx+y;}};class

Circle{Pointcenter;intradius;public:Circle(intex,intcy,intr):center(cx,

cy),radius(r){)intget(){returncenter.get()+radius;}};intmain(){Circlec(3.

4,5);couK

A、5

B、7

C、9

D、12

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

知識(shí)點(diǎn)解析:根據(jù)類Point和類Circle的定義可知,類Circle的實(shí)例c(3,4,5)的成員

函數(shù)c.get()返回值為3+4+5=12。

15、下列各組類型聲明符中,含義相同的一組是(),

A、unsignedlongint和long

B>signedshortint和short

C、unsignedshort和short

D、shortint和int

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

知識(shí)點(diǎn)解析:此題考查的是基本類型和派生型。C++語言中,基本類型的字長(zhǎng)及其

取值范圍可以放大和縮小,改變后的類型就叫做基本類型和派生類型。本題A選

項(xiàng)中,unsignedlongint的省略形式為unsignedlong;選項(xiàng)B中,signedshortint的

省略形式是short;選項(xiàng)C中,unsignedshort的省略形式是unsignedshort;選項(xiàng)D

中,shortint的省略形式是shorto

16、有如下程序:#include<iostrcarn>usingnamespacestd;classtest{private:

inta;public:,testO{cout+,,constructor"+endl;)test(inta){cout+a+endl;}

test(consttest&test){a=test.a:cout+"copyconstmctor"+endl;}

test(){Cout+"destructor"+endl;}};intmain()(testA(3);return0;}運(yùn)行時(shí)輸出

的結(jié)果是()。

A、3

B、constructordestmetor

C、copyconstructordestiuctor

D、3destructor

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

知識(shí)點(diǎn)解析:此題考查的是構(gòu)造函數(shù)和析構(gòu)函數(shù)。一個(gè)類可以有多個(gè)構(gòu)造函數(shù),但

只能有一個(gè)析構(gòu)函數(shù)。每一個(gè)對(duì)象在被創(chuàng)建時(shí),都會(huì)隱含調(diào)用眾多構(gòu)造函數(shù)中的一

個(gè),而在銷毀時(shí)又會(huì)隱含調(diào)用唯一的析構(gòu)函數(shù)。此題中,主函數(shù)創(chuàng)建對(duì)象A是會(huì)

隱含調(diào)用lesl(inla)這個(gè)構(gòu)造函數(shù),輸出3:接著主函數(shù)結(jié)束,對(duì)象A銷毀又隱含調(diào)

用?test。析構(gòu)函數(shù)輸出destructoro

17>有如下說明inta[10]={l,2,3,4,5,6,7,8,9,10),*p=a;則數(shù)值為9

的表達(dá)式是()。

A^*p+9

B、*(p+8)

C、*p+=9

D、p+8

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

知識(shí)點(diǎn)解析:此題考查的是指針的運(yùn)用。選項(xiàng)A中,*p返回的是數(shù)組元素a[0]的

值,所以最后結(jié)果是1+9=10;選項(xiàng)B是指針p后移8個(gè)單位位置處的值,即a[8]

其值為9;選項(xiàng)C中表達(dá)式的值和選項(xiàng)A相同;選項(xiàng)D的值是一個(gè)地址值,該值

無法確定。

18、為了提高函數(shù)調(diào)用的實(shí)際運(yùn)行速度,可以將較簡(jiǎn)單的函數(shù)定義為()。

A、內(nèi)聯(lián)函數(shù)

B、重載函數(shù)

C、遞歸函數(shù)

D、函數(shù)模板

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

知識(shí)點(diǎn)解析:C++引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C中盼預(yù)處理宏函數(shù)。兩者的

區(qū)別在于,宏函數(shù)是由預(yù)處理器對(duì)宏進(jìn)行替換,而內(nèi)聯(lián)函數(shù)是通過編譯器來實(shí)現(xiàn)

的。內(nèi)聯(lián)函數(shù)在調(diào)用時(shí)像宏函數(shù)一樣展開,所以它沒有一般函數(shù)的參數(shù)壓棧和退棧

操作,減少了調(diào)用開銷,因此,內(nèi)聯(lián)函數(shù)比普通函數(shù)有更高的執(zhí)行效率。

19、若MyClass為一個(gè)類,執(zhí)行“MyClassa[4],*p[5];”語句時(shí)會(huì)自動(dòng)調(diào)用該類構(gòu)

造函數(shù)的次數(shù)是()。

A、2

B、5

C、4

D、9

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

知識(shí)點(diǎn)解析:語句MyClassa[4],*p⑸不僅定義了4個(gè)MyClass對(duì)象,分別為

a[0],a[l],a[2],a[3],而且定義了5個(gè)指向MyQass對(duì)象的指針變量,分別為

*p[0],*p[l],*p[2],*p[3],*p[4],所以共調(diào)用MyClass的構(gòu)造函數(shù)4次。

20、已知類Myclass的定義如下classMyClass{public:void

functionl(MyClass&c){tout<

A、function1

B、function?

C、functions

D、function4

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

知識(shí)點(diǎn)解析:funcyion4()函數(shù)作為類的靜態(tài)成員函數(shù),不能直接訪問類中說明的非

靜態(tài)成員,即coutv

21、卜列有關(guān)C十十流的敘述中,錯(cuò)誤的是()。

A、C++操作符setw設(shè)置的輸出寬度永久有效

B、C++操作符endl可以實(shí)現(xiàn)輸出的回車換行

C、處理文件I/O時(shí),要包含頭文件fstream

D、進(jìn)行輸入操作時(shí),eof()函數(shù)用于檢測(cè)是否到達(dá)文件尾

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

知識(shí)點(diǎn)解析:此題考查的是C++流。C++操作符seiwO的作用是設(shè)置輸入輸出寬

度,且只對(duì)當(dāng)前一次有效,并非永久有效,故選項(xiàng)A敘述錯(cuò)誤。

22、下面程序中對(duì)一維坐標(biāo)點(diǎn)類Point進(jìn)行運(yùn)算符重載#includeusingnamespace

std;classPoint{public:Point(intval){x=val;)Point&operator++(){x++;

return*this;)Pointopcrator++(int){Pointold=*this;++(*this);returnold:}Int

GetX()const{returnx;}private:intx;};intmain(){Pointa(10);

cout?(++a).GetX();cout<

A、運(yùn)行時(shí)輸出1011

B、運(yùn)行時(shí)輸出1111

C、運(yùn)行時(shí)輸出1112

D、編譯有錯(cuò)

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

知識(shí)點(diǎn)解析:此題考查的是重載增1運(yùn)算符此題中,Point&operator++Ofi?

的是前綴形式,而Poinlopcrator++(int)重載的是后綴形式。所以主函數(shù)中第1條輸

出語句輸出11,此時(shí)a.x的值為11;第2條輸出語句,首先創(chuàng)建了一個(gè)Point對(duì)

象。Id保存自身,然后通過語句++(*this);調(diào)用前綴++的重載函數(shù),因?yàn)榉祷刂凳?/p>

改變前保存的old對(duì)象,故仍輸出11。

家二級(jí)C++機(jī)試(選擇題)模擬試卷

第3套

一、選擇題(本題共27題,每題1.0分,共27分。)

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

A、有一個(gè)以上根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)

B、只有一個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)

C、循環(huán)鏈表是非線性結(jié)構(gòu)

D、雙向鏈表是非線性結(jié)構(gòu)

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

知識(shí)點(diǎn)解析:在數(shù)據(jù)結(jié)溝中,樹這類的數(shù)據(jù)結(jié)構(gòu)只有一個(gè)根結(jié)點(diǎn),但它不是線性結(jié)

構(gòu)。

2、棧的初始狀態(tài)為空?,F(xiàn)將元素1,2,3,A,B,C依次入棧,再依次出棧,則

元素出棧的順序是

A、1,2,3,A,B,C

B、C,B,A,1,2,3

C、C,B,A,3,2,1

D、1,2,3,C,B,A

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

知識(shí)點(diǎn)解析:棧是按照“先進(jìn)后出”或“后進(jìn)先出”的原則組織數(shù)據(jù)的。所以出棧順序

是CBA321。

3、已知枚舉類型定義語句為:enumToken(NAME,NUMBER,PLUS=5,

MINUS,PRINT=10);則下列敘述中錯(cuò)誤的是(),

A、枚舉常量NAME的值為1

B、枚舉常量NUMBER的值為1

C、枚舉常量MINUS的值為6

D、枚舉常量PRINT的值為10

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

知識(shí)點(diǎn)解析:此題考查的是C++語言的數(shù)據(jù)類型,第一個(gè)枚舉常量的值為0:允

許程序顯示的定義中指定部分或全部枚舉常量的值,枚舉常量默認(rèn)時(shí),在前一枚舉

常量值的基礎(chǔ)上以此增lo

4、下列程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;template

<typenameT>Tfun(Ta,Tb){return(a<=b)?a:b:}intmain(){cout<<fun(3,6)

VV','VVfun(3.14F,6.28F)<<endl;return0;}

A、0,3.14

B、3,3.14

C>3,3

D、3.14,3.14

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

知識(shí)點(diǎn)解析:此函數(shù)模板的功能是輸出a、b兩數(shù)中較小的那個(gè)數(shù)。(3,6)輸出3,

(3.14F,6.28F)輸出3.14。

5、下列有關(guān)函數(shù)重載的敘述中,錯(cuò)誤的是()。

A、函數(shù)重載就是用相同的函數(shù)名定義多個(gè)函數(shù)

B、重載函數(shù)的參數(shù)列表必須不同

C、重載函數(shù)的返回值類型必須不同

D、重載函數(shù)的參數(shù)可以帶有默認(rèn)值

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

知識(shí)點(diǎn)解析:此題考查的是函數(shù)重載的概念。在C++語言中,允許定義一系列函

數(shù)名相同,但形參的個(gè)數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對(duì)返

回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。故選項(xiàng)C)錯(cuò)誤。

6、下列描述中錯(cuò)誤的是()。

A、在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致

B、數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題

C、數(shù)據(jù)庫設(shè)計(jì)是指在己有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫

D、數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持

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

知識(shí)點(diǎn)解析:在數(shù)據(jù)庫系統(tǒng)中,物理獨(dú)立性是指數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)、

存取方式等)的改變,如存儲(chǔ)設(shè)備的更換、物理存儲(chǔ)的更換、存取方式改變等都不

影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化。

7、有如下程序:#include#includeusingnamespacestd:classMyString{public:

charstr|80];MyString(constchar*s){strcpy(str,s);}

MyString&operator+=(MyStringa){strcat(str,a.str);return*this;));

ostream&operator?(osiream&s,constMyString&z){returns<

A、abc

B、cde

C^abcde

D、abccde

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

知識(shí)點(diǎn)解析:在類Mystring中,定義了帶參數(shù)的構(gòu)造函數(shù)Mystrjng(constchads),

其作用是把s指向的字符串拷貝到字符組str中。在類中還對(duì)運(yùn)算十=進(jìn)行重裁定

義,其作用是把字符串str和a相連接并賦給str,所以在主函數(shù)中執(zhí)行x+=v歸,

結(jié)果為abccdeo

8、下列符號(hào)中不屬于C++關(guān)鍵字的是()。

A、friend

namespace

C、continue

D、byte

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

知識(shí)點(diǎn)解析:此題考查的是C++語言的關(guān)鍵字。Friend是聲明友元函數(shù)或友元類時(shí)

用到的關(guān)鍵字:namespace是定義或使用名字空間時(shí)用到的關(guān)鍵字;continue是終

止本次循環(huán)直接開始下一次循環(huán)所用到的關(guān)鍵字:byte是字節(jié)的意思,它不是C++

語言中的關(guān)鍵字。

9、有如下類聲明:classBase{protected;intmount;public:Base(intn=0):

amount(n){)intgctAmount()const{returnamount;)};classDerived:public

Base{protected;intvalue;public;Derived(intm,intn):value(m).Base(n)()Int

getData()const{returnvalue+amount;}):已知x是一個(gè)Derived對(duì)象,則下歹J表

達(dá)式中正確的是()。

A、x.value+x.getAmount()

B、x.getData()—x.getAmount。

C^x.gctData()—x.amount

D、x.value+x.amount

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

知識(shí)點(diǎn)解析:此題考查的是派生類對(duì)基類成員的訪問權(quán)限。派生類中的成員不能訪

問基類中的私有成員,可以訪問基類中的公有成員和保護(hù)成員。派生類從基類公有

繼承時(shí),基類的公有成員和保護(hù)成員在派生類中仍然是公有成員和保護(hù)成員:派生

類從基類私有繼承時(shí),基類的公有成員和保護(hù)成員在派生類中都變成私有成員:派

生類從基類保護(hù)繼承時(shí),基類的公有成員在派生類中變成保護(hù)成員,基類的保護(hù)成

員在派生類中仍然是保尹成員。

10、下列關(guān)于C++函數(shù)的敘述中,正確的是()。

A、每個(gè)函數(shù)至少要具有一個(gè)參數(shù)

B、每個(gè)函數(shù)都必須返回一個(gè)值

C、函數(shù)在被調(diào)用之前必須先聲明

D、函數(shù)不能自己調(diào)用自己

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

知識(shí)點(diǎn)解析:此題考查的是函數(shù)的性質(zhì)。當(dāng)調(diào)用無參函數(shù)時(shí)主函數(shù)并不將數(shù)據(jù)傳送

給被調(diào)函數(shù),且可以帶回或不帶回函數(shù)值。函數(shù)的遞歸調(diào)用就是直接或間接的調(diào)用

自己。

11、在下面的類定義中,錯(cuò)誤的語句是()。classSample{public:

Sample(intval);||①?Sample。;||@private:inta=2.5:||③Sample。;II④}:

A、①②③④

B、?

C、③

D、①②③

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

知識(shí)點(diǎn)謁析:③是錯(cuò)誤的,因?yàn)樵陬愺w內(nèi),不允許對(duì)所定義的數(shù)據(jù)成員進(jìn)行初始

化;其他語句構(gòu)造和析溝函數(shù)的定義都是正確的。

12、為了取代C中帶參數(shù)的宏,在C++中使用()。

A、重載函數(shù)

B、內(nèi)聯(lián)函數(shù)

C、遞歸函數(shù)

D、友元函數(shù)

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

知識(shí)點(diǎn)解析:此題考查的是內(nèi)聯(lián)函數(shù)。C++語言引入內(nèi)聯(lián)函數(shù)的原因是用它來取代

C語言的預(yù)處理宏函數(shù)。

13、規(guī)范化主要為克服數(shù)據(jù)庫邏輯結(jié)構(gòu)中的插入異常,刪除異常以及

A、數(shù)據(jù)丟失的問題

B、冗余度大的問題

C、數(shù)據(jù)不一致的問題

D、結(jié)構(gòu)不合理的問題

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

知識(shí)點(diǎn)解析:規(guī)范化理論正是用來改造關(guān)系模式,通過分解關(guān)系模式來消除其中不

合適的數(shù)據(jù)依賴,以解決插入異常、刪除異常、更新異常和數(shù)據(jù)冗余問題。

14、若MyClass為一個(gè)類,執(zhí)行“MyClassa[4],徇[5];”語句時(shí)會(huì)自動(dòng)調(diào)用該類構(gòu)

造函數(shù)的次數(shù)是()。

A、2

B、5

C、4

D、9

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

知識(shí)點(diǎn)解析:語句MyClassa[4],*p⑸不僅定義了4個(gè)MyClass對(duì)象,分別為

a[0],a[l],a[2],a[3],而且定義了5個(gè)指向MyClass對(duì)象的指針變量,分別為

*p[0],*p[l],*p[2],*p[3],*p[4],所以共調(diào)用MyClass的構(gòu)造函數(shù)4次。

15、下列運(yùn)算符函數(shù)中,肯定不屬于類Value的成員函數(shù)的是()。

A^Valueoperator+(Value);

B、Valueopcrator-(Value,Value);

C、Valueoperator*(int);

D、Valueoperator/(Value);

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

知識(shí)點(diǎn)解析:運(yùn)算符作為非成員函數(shù)時(shí),由于沒有隱含ihis指針,因此所有的操作

數(shù)必須出現(xiàn)在參數(shù)表中。對(duì)于第二個(gè)選項(xiàng),出現(xiàn)了兩個(gè)操作數(shù),必然是非成員函

數(shù),但是對(duì)于其他三個(gè)選項(xiàng),有可能都是要求兩個(gè)操作數(shù)的成員函數(shù)。

16、通過派生類的對(duì)象可直接訪問其()。

A、公有繼承基類的公有成員

B、公有繼承基類的私有成員

C、私有繼承基類的公有成員

D、私有繼承基類的私有成員

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

知識(shí)點(diǎn)解析:基類的私有成員在派生類中都是不能訪問的,所以選項(xiàng)B、D是錯(cuò)誤

的,基類的公有成員通這私有繼承后,在派生類中變?yōu)榱怂接谐蓡T,只能在派生類

中進(jìn)行訪問,而通過派生類的對(duì)象不能訪問,所以選項(xiàng)C也是錯(cuò)誤的?;惖墓?/p>

有成員通過公有繼承后,在派生類中是公有成員,所以可以通過派生對(duì)象來訪問。

17^有如下程序:#inc1ude<iostream>usingnamespacestd;classMusic{public:

voidsetTitle(char*slr){strcpy(title,str);}protected:chartype|10];private:char

title[20];};classJazz:publicMusic{public:voidset(char*str){strcpy(type,Jazz);

//①slrcpy(title,str);//②}};下列敘述中正確的是()。

A、程序編譯正確

B、程序編譯時(shí)語句①出錯(cuò)

C、程序編譯時(shí)語句②出錯(cuò)

D、程序編譯時(shí)語句①云口②都出錯(cuò)

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

知識(shí)點(diǎn)解析:派生類Jazz不能訪問基類Music中的私有成員titlco

18、已知基類Employee只有一個(gè)構(gòu)造函數(shù),其定義如下:Employee::

Employee(intn):id(n){jManager是Employee的派生類,則下列對(duì)Manager的構(gòu)造

函數(shù)的定義中,正確的是()。

A、Manager::Manager(inln):id(n){}

B、Manager::Manager(intn){id=n;}

C、Manager::Managcr(intn):Employee(n){)

D、Manager::Manager(intn){Employee(n);}

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

知識(shí)點(diǎn)解析:基類的構(gòu)造函數(shù)是帶有參數(shù)的,派生類從基類派生,這就需要在派生

類的構(gòu)造函數(shù)名后面顯示的調(diào)用基類的構(gòu)造函數(shù)。

19^有如下類定義classMyClasspublic:Private:inidata:);若要為MyClass

類重載流輸入運(yùn)算符>>,使得程序中可以“cin?obj;”形式輸入MyClass類的對(duì)象

obj,則橫線處的聲明語句應(yīng)為()。

A、friendistream&operator?(istream&is,MyClass&a);

B、friendistrcam&opcrator?(istrcam&is,MyClassa);

C、istream&operator?(istream&is,MyClass&a);

D^istream&operator?(istream&is,MyClassa);

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

知識(shí)點(diǎn)解析:C++的輸入運(yùn)算符>>作為非類成員函數(shù)重載。在一個(gè)類中,可將輸入

運(yùn)算符>>聲明為友元函數(shù),在類MyClass重載輸入運(yùn)算符>>的形式如選項(xiàng)A所

示。

20、有如下4個(gè)語句:①

A、①和③

B、①和④

C、②和③

D、②和④

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

知識(shí)點(diǎn)。析:此題考查C++流的使用。selfino作用是設(shè)置填充字符:left是使輸出

數(shù)據(jù)在指定寬度內(nèi)左對(duì)齊:right是使輸出數(shù)據(jù)在指定寬度內(nèi)右對(duì)齊。

21、有如下語句序列:ifstreaminfile(nDATA.DAT");

iffinfile.good())cout?,'A";else{cout?"B";ofstreamoutfile("DATA.DAT");

if(outfile.fail())cout?"C";elsecout?"Dn;}若執(zhí)行這個(gè)語句序列顯示的是

BD,則說明文件DATA.DAT()0

A、以讀方式打開成功

B、以讀方式打開失敗,但以寫方式打開成功

C、以讀方式打開失敗,以寫方式打開也失敗

D、以讀方式打開成功,以寫方式打開也成功

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

知識(shí)點(diǎn)解析:由這個(gè)語句序列顯示的結(jié)果是BD,說明執(zhí)行了和

cout?”D”語句。

國家二級(jí)C++機(jī)試(選擇題)模擬試卷

第4套

一、選擇題(本題共23題,每題1.0分,共23分。)

1、有如下程序:#include<iostream>usingnamespacestd;intmain(){int*p:

*p=9;cout<<"Thevalueatp:"<<*p;rcturnO:}編譯運(yùn)行程序?qū)⒊霈F(xiàn)的情況

是()。

A、編譯時(shí)出現(xiàn)語法錯(cuò)誤,不能生成可執(zhí)行文件

B、運(yùn)行時(shí)一定輸出:Thevalueatp:9

C、運(yùn)行時(shí)一定輸出:Thevalueatp:*9

D、運(yùn)行時(shí)有可能出錯(cuò)

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

知識(shí)點(diǎn)解析:題目程序中“int,*p;”是定義了一個(gè)指針變量p,“*p=9;”是將p當(dāng)

前指向的指針賦為9。指針p在執(zhí)行這個(gè)賦值操作前并沒有初始化這個(gè)變量p,所

以會(huì)有p未初始化的警告錯(cuò)誤。

2、Windows環(huán)境下,由C++源程序文件編譯而成的目標(biāo)文件的擴(kuò)展名是()。

A、epp

B、exe

C、obj

D、lik

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

知識(shí)點(diǎn)解析:在VC6.0集成開發(fā)環(huán)境下,用戶可以使用編譯(compile)命令將一

個(gè).epp為擴(kuò)展名的C++源程序文件轉(zhuǎn)換成一個(gè)以.obj為擴(kuò)展名的目標(biāo)文件。

3、在一個(gè)容量為15的循環(huán)隊(duì)列中,若頭指針fronl=6,尾指針rear=9,則循環(huán)隊(duì)

列中的元素個(gè)數(shù)為

A、2

B、3

C、4

D、5

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

知識(shí)點(diǎn)解析:循環(huán)隊(duì)列中,rear表示尾指針,front表示頭指針,當(dāng)有元素入隊(duì)時(shí),

rear=rear+1,而元素出隊(duì)的時(shí)候,front=front+1,當(dāng)rear值大于front值時(shí),隊(duì)列中

的元素個(gè)數(shù)為rear-front?當(dāng)rear的值小于front時(shí),列隊(duì)中的元素個(gè)數(shù)為rear-

front+m(m表示隊(duì)列的容量)。

4、在軟件開發(fā)中,需求分析階段可以使用的工具是()。

A、N—S圖

B、DFD圖

C、PAD圖

D、程序流程圖

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

知識(shí)點(diǎn)解析:在需求分析階段可以使用的工具有數(shù)據(jù)流圖DFD圖,數(shù)據(jù)字典

DD,判定樹與判定表,所以選擇B。

5、有如下程序:#include<iostream>usingnamespacestd;classsample

{private:intx,y;public:sample(inti,intj){x=i:y=j;)voiddisp(){cout<

<"dispr,<<endl;)voiddispoconst{cout<<"disp2,,<<endl;});intmain()

{constsamplea(l,2);a.disp():returnO:)該程序運(yùn)行后的輸出結(jié)果是()▽

ANdispl

B、disp2

C^displdisp2

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

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

知識(shí)點(diǎn)解析:因?yàn)閷?duì)象a被定義為常對(duì)象,所以a.disp()語句調(diào)用的是類的常成員

函數(shù)voiddisp()const?輸出的結(jié)果是disp2<>

6、下列程序的輸出結(jié)果為2,橫線處應(yīng)添加語句()。#include<iostream>using

namespacestd;classTestClassl{public:voidfun(){cout<<1:}};class

TestClass2:publicTestClassl{public:voidfun(){cout<<2;}};intmain()

{TestClassl*p=newTestClass2;p->fun();deletep;return0:}

A^public

B、private

C、virtual

D、protected

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

知識(shí)點(diǎn)解析:由主函數(shù)main入手,定義TestClassl類的指針對(duì)象p指向派生類

TestClass2o因?yàn)榛惡团缮愔卸加衒un函數(shù),題目要求輸出為2,就是基類對(duì)象

訪問派生類中fun函數(shù)。通過虛函數(shù)與指向基類對(duì)象的指針變量的配合使用,就能

方便調(diào)用同名函數(shù)。所以這里將基類中的fun函數(shù)聲明為virtual。并且當(dāng)一個(gè)成員

函數(shù)被聲明為虛函數(shù)后,其派生類中的同名函數(shù)自動(dòng)成為虛函數(shù)。

7、下列選項(xiàng)中不符合良好程序設(shè)計(jì)風(fēng)格的是()。

A、源程序要文檔化

B、數(shù)據(jù)說明的次序要規(guī)范化

C、避免濫用goto語句

D、模塊設(shè)計(jì)要保證高耦合、高內(nèi)聚

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

知識(shí)點(diǎn)解析:一般來講,程序設(shè)計(jì)風(fēng)格是指編寫程序時(shí)所表現(xiàn)出的特點(diǎn)、習(xí)慣和邏

輯思路。程序設(shè)計(jì)風(fēng)格總體而言應(yīng)該強(qiáng)調(diào)簡(jiǎn)單和清晰,程序必須是可以理解的。可

以認(rèn)為,著名的“清晰第一、效率第二''的論點(diǎn)已成為當(dāng)今主導(dǎo)的程序設(shè)計(jì)風(fēng)格。良

好的程序設(shè)計(jì)風(fēng)格主要應(yīng)注重和考慮下列幾個(gè)因素:①源程序文檔化,包括下列

三個(gè)方面:A符號(hào)的命名應(yīng)具有一定的含義;B正確的注釋能夠幫助讀者理解程

序;C視覺組織,可以在程序中利用空格、空行、縮進(jìn)等技巧使程序?qū)哟吻逦?/p>

②數(shù)據(jù)說明的方法,包括下列三個(gè)方面:A數(shù)據(jù)說明的次序規(guī)范化;B說明語句中

變量安排有序化;C使用注釋來說明復(fù)雜數(shù)據(jù)的結(jié)構(gòu)。③語句的結(jié)構(gòu)應(yīng)該簡(jiǎn)單直

接,不應(yīng)該為提高效率而把語句復(fù)雜化。④輸入和輸出方式和風(fēng)格應(yīng)盡可能方便

用戶的使用。

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

A、自頂向下

B、逐步求精

C、模塊化

D、可復(fù)用

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

知識(shí)點(diǎn)解析?:結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為:自項(xiàng)向下,逐步求精,

模塊化,限制使用got。語句。自頂向下是指程序設(shè)計(jì)時(shí)應(yīng)先考慮總體,后考慮細(xì)

節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo)。逐步求精是指對(duì)復(fù)雜問題應(yīng)設(shè)計(jì)一些子目

標(biāo)過渡,逐步細(xì)化。模塊化是把程序要解決的總目標(biāo)先分解成分目標(biāo),再進(jìn)?步分

解成具體的小目標(biāo),把號(hào)個(gè)小目標(biāo)稱為一個(gè)模塊???復(fù)用性是指軟件元素不加修改

成稍加修改便可在不同的軟件開發(fā)過程中重復(fù)使用的性質(zhì)。軟件可復(fù)用性是軟件工

程追求的目標(biāo)之一,是提高軟件生產(chǎn)效率的最主要力法,不屬于結(jié)構(gòu)化程序設(shè)計(jì)方

法。

9、軟件生命周期可分為定義階段、開發(fā)階段和維護(hù)階段,下面不屬于開發(fā)階段任

務(wù)的是()。

A、測(cè)試

B、設(shè)計(jì)

C、可行性研究

D、實(shí)現(xiàn)

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

知識(shí)點(diǎn)解析:軟件生命周期是指軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用、維護(hù)到停止使用退

役的過程。其中,定義階段包括可行性研究與計(jì)劃制定和需求分析。測(cè)試、概要設(shè)

計(jì)、詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)屬于開發(fā)階段。

10、有如下程序:#includeusingnamespacestd;classBook{public:

Book(char*t=uv){strcpy(title,t);)private:chartitle[40];}:classNovel:public

Book|public:Novel(char*t-o,):Book(t){}char*Category()const{returni4^

學(xué)”;));inlmain(){Book*pb;pb二newNovel。;cout<Category();deletepb;

return0;}若程序運(yùn)行時(shí)輸出結(jié)果是“文學(xué)”,則橫線處缺失的語句是()。

A、char*Category();

B、char*Caiegory()const;

C^virtualchar*Category()const:

D、virtualchar*Catcgory()const=0;

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

知識(shí)點(diǎn)解析:本題考查純虛函數(shù)和抽象類,純虛函數(shù)是在聲明虛函數(shù)時(shí)被“初始化”

為0的函數(shù),包含純虛函數(shù)的類為抽象類,抽象類是不能被實(shí)例化的,但是可以定

義指向抽象類數(shù)據(jù)的指針變量,當(dāng)派生類成為具體類后,就可以用這種指針指向派

生類的對(duì)象,然后通過該指針調(diào)用虛函數(shù),實(shí)現(xiàn)多態(tài)性的操作。所以本題答案為

Do

11、下列關(guān)于this指針的敘述中,正確的是()。

A、this指針是一個(gè)隱含指針,它隱含于類的成員函數(shù)中

B、只有在使用this時(shí),系統(tǒng)才會(huì)將對(duì)象的地址賦值給this

C、類的友元函數(shù)也有this指針

D、this指針表示了成員函數(shù)當(dāng)前操作的數(shù)據(jù)所屬的對(duì)象

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

知識(shí)點(diǎn)解析:this指針是成員函數(shù)所屬對(duì)象的指針,它指向類對(duì)象的地址:它隱含

于每個(gè)類的非靜態(tài)成員函數(shù)中;this指針只能在類的成員函數(shù)中使用,它指向該成

員函數(shù)被調(diào)用的對(duì)象;靜態(tài)成員函數(shù)沒有this指針,因?yàn)轭愔兄挥幸粋€(gè)靜態(tài)成員函

數(shù)實(shí)例,使用ihis指針無意義。

12、數(shù)據(jù)結(jié)構(gòu)主要研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的運(yùn)算和()。

A、數(shù)據(jù)的方法

B、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)

C、數(shù)據(jù)的對(duì)象

D、數(shù)據(jù)的邏輯存儲(chǔ)

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

知識(shí)點(diǎn)解析:數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)元素及其之間的相互關(guān)系和數(shù)據(jù)運(yùn)算的一門學(xué)

科,它包含3個(gè)方面的內(nèi)容,即數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù)的運(yùn)算。

13、下面不屬于軟件設(shè)計(jì)階段任務(wù)的是()。

A、軟件總體設(shè)計(jì)

B、算法設(shè)計(jì)

C、制定軟件確認(rèn)測(cè)試計(jì)劃

D、數(shù)據(jù)庫設(shè)計(jì)

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

知識(shí)點(diǎn)解析:軟件設(shè)計(jì)階段總體分為兩部分:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),此階段的主要

任務(wù)就是將需求規(guī)格說明文檔轉(zhuǎn)換為軟件設(shè)計(jì)文檔,將需求階段提出的問題,

解釋,形成詳細(xì)設(shè)計(jì)文檔,并根據(jù)功能要求,定制相應(yīng)數(shù)據(jù)結(jié)構(gòu)、各種流程圖等,

為下一步編碼做準(zhǔn)備。

14、有如下程序:#include<iostream.h>voidmain(){charstr[2][5]={H1234".

"5678"),*p⑵;inti,j,s=0;for(i=0;i<2;i++)p[i]=str[i];for(i=0;i<2;

i++)for(j=0;p[i][j]>>\j+=2)s=10*s+p[i][j]-,0,;cout<<s;}該程序的輸出

結(jié)果是()。

A、1357

B、2468

C、3556

D、23678

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

知識(shí)點(diǎn)解析:程序中的“for(i=0;i<2;i++)p[i]=str[i]:”語句將str中的值賦值給指

針數(shù)組p。在接下來的二重for循環(huán)中,跳取“i+=2”,p指針指向的值即力“,"3",

“5”,“7”。在分別對(duì)字符到整型的轉(zhuǎn)換,即減去字符,(T,然后依次轉(zhuǎn)換為千位,百

位,.十

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論