國家二級C++機試(選擇題)模擬試卷34_第1頁
國家二級C++機試(選擇題)模擬試卷34_第2頁
國家二級C++機試(選擇題)模擬試卷34_第3頁
國家二級C++機試(選擇題)模擬試卷34_第4頁
國家二級C++機試(選擇題)模擬試卷34_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

第1套

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

1、下列符號中,正確的C++標識符是()。

A、enum

B、lOObit

C、s-1

D、int

標準答案:D

知識點解析:此題考查的是C++語言中標識符的概念。標識符是由數(shù)字、字母以

及下劃線構(gòu)成,其第一個字符必須是字母或下劃線,中間不能有空格;標識符的長

度是任意的,但由于編譯系統(tǒng)的限制一般不超過31個字符;標識符中的大小寫字

母是不同的:定義標識符時不能采用系統(tǒng)的保留字。

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

A、在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態(tài)變化

B、在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態(tài)變化

C、在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態(tài)變化

D、上述三種說法都不對

標準答案:C

知識點解析:在棧中,允許插入與刪除的一端稱為棧頂,而不允許插入與刪除的另

一端稱為棧底。棧跟隊列不同,元素只能在棧頂壓入或彈出,棧底指針不變,棧中

元素隨棧頂指針的變化而動態(tài)變化,遵循后進先出的規(guī)則。

3、下列選項中,正確的C++表達式是()。

A、counter+4-3

B、elements+

C、a+=b

D、'a'=b

標準答案:C

知識點解析:在C++中山一個或多個操作數(shù)與操作符連接而成的有效運算式稱為

表達式。選項C是C++的合法表達式。

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

A、線性表的鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的

B、線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)

C、線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)

D、上述三種說法都不對

標準答案:B

知識點解析:線性表的存儲分為順序存儲和鏈式存儲。在順序存儲中,所有元素所

占的存儲空間是連續(xù)的,各數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的。所以

每個元素只存儲其值就可以了,而在鏈式存儲的方式中,將存儲空間的每一個存儲

結(jié)點分為兩部分,一部分用于存儲數(shù)據(jù)元素的值,稱為數(shù)據(jù)域;另一部分用于存儲

下一個元素的存儲序號,稱為指針域。所以線性表的鏈式存儲方式比順序存儲方式

的存儲空間要大一些。

5、對下列二叉樹進行前序遍歷的結(jié)果是()。

A、DYBEAFCZX

B、YDEBFZXCA

C、ABDYECFXZ

D、ABCDEFXYZ

標準答案:C

知識點解析:二叉樹前序遍歷的簡單描述:若二叉樹為空,則結(jié)束返回;否則:

①訪問根結(jié)點;②前序遍歷左子樹;③前序遍歷右子樹??梢姡靶虮闅v二叉樹

的過程是一個遞歸的過程。根據(jù)題目中給出的二叉樹的結(jié)構(gòu)可知前序遍歷的結(jié)果是

ABDYECFXZo

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

A、0(n)

B、0(n2)

C^O(log2n)

D、O(nlog2n)

標準答案:C

知識點解析:對于長度為n的有序線性表,在最壞情況下,二分法查找只需比較

log2n次,而順序查找需要比較n次。

7、在面向?qū)ο蠓椒ㄖ?,實現(xiàn)信息隱蔽是依靠

A、對象的繼承

B、對象的多態(tài)

C、對象的封裝

D、對象的分類

標準答案:c

知識點露析:對象的封裝性是指從外部看只能看到對象的外部特征,即只需知道數(shù)

據(jù)的取值范圍和可以對該數(shù)據(jù)施加的操作,而不需要知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)

操作的算法。對象的內(nèi)部,即處理能力的實行和內(nèi)部狀態(tài),對外是不可見的。從外

面不能直接使用對象的處理能力,也不能直接修改其內(nèi)部狀態(tài),對象的內(nèi)部狀態(tài)只

能由其自身改變。

8、Sample是一個類,執(zhí)行下面語句后,調(diào)用Sample類的構(gòu)造函數(shù)的次數(shù)是(

*

Samplea[2],P=newSample;

A、0

B、1

C、2

D、3

標準答案:D

知識點解析:在C++中,聲明一個類對象時,編譯程序需要調(diào)用類的構(gòu)造函數(shù)為

對象分配存儲空間,進行必須的初始化。在本題的這條語句中,聲明了一個

Sample類型的包含2個數(shù)組元素的數(shù)組a[2],一個指向類Sample對象的指針P,

所以Sample類的構(gòu)造函數(shù)共調(diào)用了3次。

9、有如下類聲明:classMyBASE{intk:public:voidset(intn){k=n;)int

getOconst{returnk;));classMyDERIVED:protectedMyBASE{protected:

intj:public:voidset(intm,intn){MyBASE::set(m);j=n;)int

getoconst{returnMyBASE::getO+j;));則類MyDERIVED中保護的數(shù)據(jù)成員

和成員函數(shù)的個數(shù)是()c

A、4

B、3

C、2

D,1

標準答案:B

知識點解析:此題考查的是派生與繼承中的訪問權(quán)限。protected派生:private->不

可見:protectcd->priVate;publicprotected。

10、在下列橫線處應(yīng)添加的語句是O。classBase)public:voidfun(){cout<<

"Base::fun"<<endl;));classDerived:publicBase{public:voidfun(){//

顯示調(diào)用基類的fun函數(shù)coutVV”Derivcd::fiinyVendl;}};

A、Derived::fun

B、Base::fun();

C>Pubic::fun

D、fun();

標準答案:B

f();Obj*ob3=newObj;coul<<ob3—>getVal();deleteob3;cout<<Obj::

getVal();return0;}程序的輸出結(jié)果是()。

A、232

B、231

C、222

D、221

標準答案:D

知識點解析:此題考查的是靜態(tài)成員。本題中,Obj類定義了一個靜態(tài)數(shù)據(jù)成員

i,并初始化為0.在主函數(shù)中,首先定義了1個該類對象。bl,所以構(gòu)造函數(shù)被調(diào)

用1次,i加1;然后調(diào)用函數(shù)f(),該函數(shù)中又定義了一個對象0b2,此時i再次加

1變?yōu)?,然后通過函數(shù)getVal。輸出i的值2。f()函數(shù)結(jié)束,ob2變量被釋放,故析

構(gòu)函數(shù)被調(diào)用了1次,i變成1;回到主函數(shù)中,又動態(tài)創(chuàng)建了1個對象并讓ob3

指向它,此后i變成2并輸出。最后釋放動態(tài)創(chuàng)建的對象i變?yōu)?,輸出1。故最終

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

15、有如卜程序:#include<iostream>usingnamespacestd;classBase{public:

voidfun(){cout<<"Base::fun"<<endl;}};classDerived:publicBase

(public:voidfun(){cout<<"Derived::fun"<<endl:}};int

main(){Derivedd;d.fun();return0;}己知其執(zhí)行后的輸出結(jié)果為:Base::

funDerived::fun則程序中下劃線處應(yīng)填入的語句是()。

A、Base.fun();

B、Base::fun();

C^Base->fun();

D、fun();

標準答案:B

知識點解析:此題考查的是繼承的使用。分析題目可知,橫線處應(yīng)填入對基類成員

函數(shù)fun()的調(diào)用語句,此處只能使用作用域運算符“::”才能調(diào)用到基類的同名

函數(shù),故選項B正確。

16^有如下程序:#includeusingnamespacestd;classCl{public:?

Cl(){cout?l;)):classC2:publicCl(public:^C2()(cout?2;)};int

main(){C2cb2;Cl*cbl:return0;}運行時的輸出結(jié)果是()。

A、121

B、21

C、211

D、12

標準答案:B

知識點解析:在主函數(shù)中定義C2類的對象,當程序結(jié)束時,首先調(diào)用C2類的析

構(gòu)函數(shù)?C2,輸出2,再調(diào)用C1類的析構(gòu)函數(shù)?C1,輸出1。所以程序運行的結(jié)

果就是21。

17、下列關(guān)于析構(gòu)函數(shù)的描述中,錯誤的是()。

A、析構(gòu)函數(shù)可以重載

B、析構(gòu)函數(shù)由系統(tǒng)自動調(diào)用

C、每個對象的析構(gòu)函數(shù)只被調(diào)用一次

D、每個類都有析構(gòu)函數(shù)

標準答案:A

知識點解析:一般情況下,析構(gòu)函數(shù)在對象的生存周期即將結(jié)束的時候由系統(tǒng)自動

調(diào)用。在調(diào)用完成之后,對象也就消失了,相應(yīng)的內(nèi)存空間也被釋放。析構(gòu)函數(shù)沒

有參數(shù),因此析構(gòu)函數(shù)不能重載,一個類中只能定義一個析構(gòu)函數(shù)。

18、有如下程序:#include<iostream>usingnamespacestd;classXA{ima;

public:staticintb:XA(intaa):a(aa){b++;}intgetA(){returna;}};intXA::

b=0;intmain(){XAdl(4),d2(5);cout<<dl.getA()+d2.getA()+XA::

b+dl.b<<endl;return0;}運行這個程序的輸出結(jié)果是()。

A、9

B、11

C、13

D、15

標準答案:C

知識點解析:在類XA的構(gòu)造函數(shù)中,定義了用成員變星a的值初始化變量aa,同

時靜態(tài)成員變量b值加1。所以當在主main函數(shù)中定義類xA的對象dl(4)后,變

量b的等于1,定義對象d2(5)后,變量b的值等于2,所以表達式

dl.getA()+d2.getA()::b+dl.b等于4+5+1+2+1=13。

19、下列關(guān)于運算符重載的敘述中,正確的是()。

A、通過運算符重載機制可以為C++語言擴充新的運算符

B、運算符重載的作用是使已有的運算符作用于類的對象

C、重載運算符的操作數(shù)類型可以全部為基本類型

D、所有運算符都可以被重載

標準答案:B

知識點解析:運算符重載就是賦予己有的運算符多重含義。通過重新定義運算符,

使它能夠用于特定類的對象執(zhí)行特定的功能,這便增強了C++語言的擴充能力。

運算符重載要注意以下3點:①不能重教的運算符包括②必

須重載為成員函數(shù)的運算符包括口,(),->,=;③在類成員函數(shù)中重載運算符是

不允許返回引用的,會出現(xiàn)“返回局部變量的地址”警告。

20、下面程序中對一維坐標點類Point進行運算符重載#include<ios【ream>using

namespacestd;classPoint{public:Point(intval){x=val,)Point&

operator++(){x++;return"this;}Pointoperator++(int){Pointold=*this;H(*this);retum

old;)IntGetX()const{returnx,}private:intX:);intmain(){Pointa(10);count<<

(++a).GetX();cout<<a++.GetX();retumO;[編譯和運行情況是()。

A、運行時輸出1011

B、運行時輸出1111

C、運行時輸出1112

D、編譯有錯

標準答案:B

知識點解析:此題考查的是重載增1運算符“++”。此題中,Point&operalor++()重我

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

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

old保存自身,然后通過語句++(*lhis);調(diào)用前綴+的重載函數(shù),因為返回值是改變

前保存的old對象,故仍輸出11。

21、模板對類型的參數(shù)叱提供了很好的支持,因此()。

A、類模板的主耍作用是生成抽象類

B、類模板實例化時,編譯器將根據(jù)給出的模板實參生成一個類

C、在類模板中的數(shù)據(jù)成員都具有同樣類型

D、類模板中的成員函數(shù)都沒有返回值

標準答案:B

知識點解析:此題考查了類模板的概念。在定義對象的過程中,系統(tǒng)會自動地根據(jù)

需要生成相應(yīng)的類定義,這種依據(jù)類模板生成具體類的過程稱為類模板的實例化。

22,下列關(guān)于C++流的描述中,錯誤的是()。

A、cout>>,A,表達式可輸出字符A

B、eof()函數(shù)可以檢測是否到達文件尾

C>對磁盤文件進行流操作時,必須包含頭文件fstream

D、以iosbase::out模式打開的文件不存在時,將自動建立一個新文件

標準答案:A

知識點解析:cout是一個標準輸出流對象。>>稱之為提取運算符,它的功能是從

輸入流中提取數(shù)據(jù)賦值給一個變量?!碫為插入運算符,其功能是把表達式的值插

入到輸出流中。當系統(tǒng)執(zhí)行coutVVx操作時,首先根據(jù)x值的類型調(diào)用相應(yīng)的插

入運算符重載器函數(shù),把x的值傳送給對應(yīng)的形參,接著執(zhí)行函數(shù)體,把x的值輸

出到顯示器屏幕上,在當前屏幕光標位置處顯示出來,然后返回。stream流,以便

繼續(xù)使用插入運算符輸出下一個表達式的值。對于本題來說,耍輸出字符,A,的值

應(yīng)該寫成coutVV,A,因而選項A)是錯誤的。

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

第2套

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

1、算法的空間復(fù)雜度是指

A、算法在執(zhí)行過程中所需要的計算機存儲空間

B、算法所處理的數(shù)據(jù)量

C、算法程序中的語句或指令條數(shù)

D、算法在執(zhí)行過程中所需要的臨時工作單元數(shù)

標準答案:A

知識點解析:算法的空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。這個內(nèi)存空

間包括算法程序所占的空間,輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中

所需要的額外空間。

2、算法的有窮性是指

A、算法程序的運行時間是有限的

B、算法程序所處理的數(shù)據(jù)量是有限的

C、算法程序的長度是有限的

D、算法只能被有限的用戶使用

標準答案:A

知識點解析:算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算后即可

完成。有窮性是指算法程序的運行時間是有限的。

3、一個棧的初始狀態(tài)為空0現(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

標準答案:C

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

是CBA321。

4、在對函數(shù)進行原型聲明時,下列語法成分中,不需要的是()。

A、函數(shù)返回類型

B、函數(shù)參數(shù)列表

C、函數(shù)名

D、函數(shù)體

標準答案:D

知識點解析:在c十十中函數(shù)在使用之前要預(yù)先聲明,這種聲明在標準C++中稱為

函數(shù)原型。函數(shù)給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時必須指明參數(shù)個數(shù)和類

型。

5、下列有關(guān)運算符重載的敘述中,正確的是()。

A、運算符重載是多態(tài)性的一種表現(xiàn)

B、C++中可以通過運算符重載創(chuàng)造新的運算符

C、C++中所有運算符都可以作為非成員函數(shù)重載

D、重載運算符時可以改變其結(jié)合性

標準答案:A

知識點解析:重載運算符的規(guī)則如下:①C++不允許用戶自己定義新的運算符,只

能對已有的C++運算符進行重我;②C++不能重載的運算符只有5個;③重載不能

改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載

運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型

的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是C++的標準類

型。故本題答案為A。

6、關(guān)于運算符重載,下列表述中正確的是()。

A、C++已有的任何運算符都可以重載

B、運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型

C、在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型

D、可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符

標準答案:C

知識點解析:重載運算符的規(guī)則如下:①C++不允許用戶自己定義新的運算符,只

能對已有的C++運算符進行重我;②C++不能重我的運算符只有5個;③重載不能

改變運算符運算對象的個數(shù):④重載不能改變運算符的優(yōu)先級和結(jié)合性:⑤重載

運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型

的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是C++的標準類

型。故本題答案為c。

7、下列描述中正確的是

A、程序就是軟件

B、軟件開發(fā)不受計算機系統(tǒng)的限制

C、軟件既是邏輯實體,又是物理實體

D、軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合

標準答案:D

知識點解析:計算機軟件與硬件是計算機系統(tǒng)中相互依存的兩部分。計算機軟件是

包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。軟件由兩部分組成:一部分是機器可執(zhí)行

的程序和數(shù)據(jù);二是機器不可執(zhí)行的,與軟件開發(fā)、運行、維護、使用等有關(guān)的文

檔。軟件具有以下六個特點:①軟件是一種邏輯實體,而不是物理實體,具有抽

象性。②軟件的生產(chǎn)與硬件不同,它沒有明顯的制作過程。③軟件在運行、使用

期間不存在磨損、老化問題。④軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受

計算機系統(tǒng)的限制,這導(dǎo)致了軟件移值的問題。⑤軟件復(fù)雜性高,成本昂貴。⑥

軟件的開發(fā)涉及渚多社會因素。

8、在關(guān)系中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有

若干個鍵,它們稱為該表的()。

A、連接碼

B、關(guān)系碼

C、外碼

D、候選碼

標準答案:D

知識點解析:在關(guān)系中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表

中可能有若干個鍵,它們稱為該表的候選碼或候選鍵。從二維表的所有候選鍵中選

取一個作為用戶使用的鍵稱為主鍵或主碼。

9、建立一個有成員對象的派生類對象時,各構(gòu)造函數(shù)體的執(zhí)行次序為()。

A、派生類、成員對象類、基類

B、成員對象類、基類、派生類

C、基類、成員對象類、派生類

D、基類、派生類、成員對象類

標準答案:C

知識點解析:建立派生類對象的時候,構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造

函數(shù),調(diào)用的順序按照基類被繼承時候的順序(白左陽右)。然后是執(zhí)行成員對象的

構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中的聲明順序(自上而下),最后是執(zhí)行

派生類的構(gòu)造函數(shù)。

10、有如下語句序列:charstr[10|;cin>>str;當從鍵盤輸入"Iloveihisgame"

時,str中的字符串是()。

A^Ilovethisgame

B、Ilovethi

C、Ilove

D、I

標準答案:D

知識點解析:由于字符\0作為字符串的結(jié)束標志,所以當從鍵盤上輸入“Ilovethis

game”時,只把字母I輸入字符串str。

II、有如卜程序:#include<iostream>usingnamespacestd;intmain(){inti,

s=0;for(i=l:s<20;i+=2)s+=i*i;cout<i<<endl:return0;)運行這個程序

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

A、3

B、5

C、7

D、9

標準答案:C

知識點解析:在這段程序中for循環(huán)共執(zhí)行3次,每次循環(huán)變量i的值增2,在執(zhí)

行第三次循環(huán)語句時,變量s的值等于25,大于20而退出循環(huán),此時再執(zhí)行循環(huán)

變量i加2運算,所以最后變量i的值等于7。

12>有如下類定義:ciassA{charpublic:A():a(0){}A(char*aa){||把aa所

指字符串拷貝到a所指向的存儲空間a二___;strcpy(a,aa);}~

A()(delete[]a;)};橫線處應(yīng)填寫的表達式是()。

A、newchar|strlen(aa)+11

char[strlen(aa)+1]

C、char[strlen(aa)]一

D、newchar|sizeof(aa)一1)

標準答案:A

知識點解析:函數(shù)strlen(aa)返回字符串a(chǎn)a中字符的個數(shù),不包括末尾的空字

符。所以在內(nèi)存空間創(chuàng)建字符數(shù)組a時,需要字符數(shù)組的長度是sirlen(aa)+1。

13、若一個函數(shù)的原型為int&y,charz);",則該函數(shù)的返回值

類型為()。

A、int*

B、int

C、int&

D、char

標準答案:A

知識點解析:由“int*Xfunl(intx,int&y,charz);”的定義可知,其返回值為指

向int指針的函數(shù)。

14、下列函數(shù)原型聲明中,錯誤的是()“

A^intfunction(intm,intn);

intfunction(int,int):

C、intfunction(intm=3,intn):

D^intfunction(int&m,int&n);

標準答案:c

知識點謁析:在C++中,函數(shù)在使用之前要預(yù)先聲明。這種聲明在標準C++中稱

為函數(shù)原型,函數(shù)原型給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時必須提供的參數(shù)

個數(shù)和類型。其語法為:〈返回類型X函數(shù)名>(<形參列表〉);使用函數(shù)原型說明

有兩種形式:①直接使用函數(shù)定義的頭部,并在后而加上一個分號:②在函數(shù)原

型說明中省略參數(shù)列表中的形參變量名,僅給出函數(shù)名、函數(shù)類型、參數(shù)個數(shù)及次

序。在選項C中,給出了形參變量m的初值。

15、若MyClass是一個類名,且有如下語句序列MyClasscl,*c2;MyClass

*c3=ncvvMyClass;MyClass&c4=c1;上面的語句序列所定義的類對象的個數(shù)是

()。

A、1

B、2

C、3

D、4

標準答案:C

知識點解析:Cl、*C2、C3是3個MyClass對象,C4是MyClass對象的引用,它

是對象C1的別名。

16、有如下類定義:classSample)public;Samplefintx):ref(x){)//①

private:Sample():ref(O){}//②staticintval=5;//(3)constintref;//

④};①上述程序段中,錯誤的語句是()。

A、②

B、③

C、0

D、

標準答案:C

知識點解析:靜態(tài)整型數(shù)據(jù)不能定義為類的數(shù)據(jù)成員。

17、已知函數(shù)f的原型是“voidf(int*x,int&y);",變量vl、v2的定義是“intvl,

v2;”,下列調(diào)用語句中,正確的是()。

A、f(vl,v2);

B、f(vl,&V2);

C、f(&vl,v2);

D、f(&vl,&v2);

標準答案:c

知識點。析:在函數(shù)f的形參表達式中第一個形參為整型指針變量,第二個為整型

引用變量,所以用實參vl的指針初始化笫一個形參,用實參v2初始化笫二形參。

18、有如下程序:#include<iostream>usingnamespacestd;classSample{friend

longfun(Samp1es);public:Samp1e(longa)(x=a;}private:longx;);longfun

(Samples){if(s.x<2)rcturn1:returns.x*fun(Sample(s.x—1)):}intmain()

{intsum=0;fbr(int1=0;1<6;I++){sum+=fun(SampIe(i));}coul<<sum,return

O;)運行時輸出的結(jié)果是()。

A、120

B、16

C、154

D、34

標準答案:C

知識點解析:此題考查的是友元函數(shù)和遞歸函數(shù)。因為fun函數(shù)是Sample類的友

元函數(shù),所以fun函數(shù)可以直接訪問Sample類對象的私有成員X。主函數(shù)調(diào)用fun

函數(shù),構(gòu)造參數(shù)為0~5。當n小于2時,fun函數(shù)返回1,其余返回值為n*fun(n—

l)on取0—5的值時fun(n)依次為1,1,2,6,24,120,累加結(jié)果為154。

19、下列有關(guān)繼承和派生的敘述中,正確的是()。

A、如果一個派生類私有繼承其基類,則該派生類對象不能訪問基類的保護成員

B、派生類的成員函數(shù)可以訪問基類的所有成員

C、基類對象可以賦值給派生類對象

D、如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類

標準答案:D

知識點解析:此題考查的是繼承和派生。無論是哪種繼承方式,派生類都能夠訪問

基類的公有和保護成員,而不能訪問基類的私有成員,故選項A和B錯誤;公有

繼承時,基類的對象不可作為派生類的對象處理,即基類對象不可賦值給派生類對

象,所以選項C錯誤。

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

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

B、重載函數(shù)

C、遞歸函數(shù)

D、函數(shù)模板

標準答案:A

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

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

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

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

21、下列關(guān)于運算符重載的描述中,正確的是()。

A、運算符重載為成員函數(shù)時,若參數(shù)表中無參數(shù),重載的是一元運算符

B、一元運算符只能作為成員函數(shù)重載

C、二元運算符重載為非成員函數(shù)時,參數(shù)表中有一個參數(shù)

D、C++中可以重載所有的運算符

標準答案:A

知識點解析:此題考查的是運算符的重載。運算符重載為成員函數(shù)時,形參個數(shù)?

般為運算符元數(shù)減1;直載為非成員函數(shù)時,形參個數(shù)一般和運算符元數(shù)相等,所

以二元運算符重載為非成員函數(shù)時,參數(shù)表中應(yīng)有兩個參數(shù),C選項錯誤:運算符

重載為成員函數(shù),若參數(shù)表中無參數(shù),重載的是一元運算符,選項A正確:一元

運算符中,”(取負)、"+十”、等均可重載為成員函數(shù):C++語言中,

*,,、,,一>*,,、,,,,,,、"?:"五個運算符不能重載“

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

第3套

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

1、下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是()。

A、循環(huán)隊列

B、帶鏈隊列

C、二叉樹

D、帶鏈棧

標準答案:C

知識點解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間的前后件關(guān)系的復(fù)雜程度,一般將數(shù)

據(jù)結(jié)構(gòu)分為兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。循環(huán)隊列、帶鏈隊列和帶鏈棧都是線

性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。

2、一個棧的初始狀態(tài)為空。現(xiàn)將元素I、2、3、4、5、A、B、C、D、E依次入

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

A、12345ABCDE

13、EDCBA54321

C、ABCDE12345

D、54321EDCBA

標準答案:B

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

是EDCBA54321。

3、下列對于線性鏈表的描述中正確的是

A、存儲空間不一定連續(xù),且各元素的存儲順序是任意的

B、存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面

C、存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面

D、存儲空間必須連續(xù),且各元素的存儲順序是任意的

標準答案:A

知識點解析:一般來說,在線性表的鏈式存儲結(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲序號是不

連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。在線性鏈表

中,各數(shù)據(jù)元素之間的前后件關(guān)系是由各結(jié)點的指針域來指示的,指向線性表中第

一個結(jié)點的指針head稱為頭指針,當head=NULL(或0)時稱為空表。

4、通過運算符重載,瓦以改變運算符原有的()。

A、操作數(shù)類型

B、操作數(shù)個數(shù)

C、優(yōu)先級

D、結(jié)合性

標準答案:A

知識點解析:重載運算符的規(guī)則如下:①C++不允許用戶自己定義新的運算符,只

能對已有的C++運算符進行重載;②C++不能重載的運算符只有5個;③重載不能

改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載

運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型

的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是C++的標準類型。

故本題答案為A。

5、已知函數(shù)f的原型是voidlong&b);,變量vl、v2的定義是:intvl;

loongv2;下列調(diào)用語句中正確的是()。

A、f(vl,&v2);

B、f(vl,v2);

C、f(&vl,&v2);

D、f(&vl,v2);

標準答案:D

知識點解析:此題考查的是函數(shù)的調(diào)用。因為變量的定義是imvl;longv2,而函

數(shù)f()的第一個參數(shù)是指針,第二個參數(shù)是引用,所以選項D為正確引用。

6、下面不屬于需求分析階段任務(wù)的是()。

A、確定軟件系統(tǒng)的功能需求

B、確定軟件系統(tǒng)的性能需求

C、需求規(guī)格說明書評審

D、制定軟件集成測試計劃

標準答案:D

知識點解析:需求分析階段的工作可分為4個階段:需求獲取、需求分析、編寫需

求規(guī)格說明書、需求評審。

7、若實體A和B是一對多的聯(lián)系,實體B和C是一對一的聯(lián)系,則實體A和C

的聯(lián)系是()。

A、一對一

B、一對多

C、多對一

D、多對多

標準答案:B

知識點解析:由于B和C有一一對應(yīng)的聯(lián)系,而A和B只間有一對多的聯(lián)系,則

通過關(guān)系之間的傳遞,則A和C之間也是一對多的聯(lián)系。

8、有如下類聲明:classMyBASE{inik;public:voidset(intn){k=n;)int

get()const{returnk;});classMyDERIVED:protectedMyBASE{protected:int

j;public:voidsct(intm,intn){MyBASE::set(m);j=n;)intget()const{return

MyBASE::get()+j;}};則類MyDERIVED中保護的數(shù)據(jù)成員和成員函數(shù)的個

數(shù)是()。

A、4

B、3

C、2

D、1

標準答案:B

知識點解析:因為在保于繼承的情況下,基類中的公有成員voidset(intn)和int

gct()const在派生類中是保護成員,再加上派生類自身的保護成員i,一共是三個保

護成員。

9、在一個派生類的成員函數(shù)中,試圖調(diào)用其基類的成員函數(shù)“voidf();”,但無法

通過編譯。這說明()。

A、f()是基類的私有成員

B、f()是基類的保護成員

C、派生類的繼承方式為私有

D、派生類的繼承方式為保護

標準答案:A

知識點解析:在派生類對基類的三種繼承形式中,都無法對基類的私有成員訪問A

正確。在B中,三種繼承方式都能訪問基類的保護成員,故B不正確。C選項的

情況在f()是基類私有成員情況下是對的,但是還有別的可能,并不一定正確。同

樣D也不一定正確。

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

A、unsignedlongint和long

B、signedshortint和short

C、unsignedshort和short

D、shortint和int

標準答案:B

知識點解析:此題考查的是基本類型和派生型。C十十語言中,基本類型的字長及其

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

項中,unsignedlongint的省略形式為unsignedlong:選項B中,signedshortint的

省略形式是short;選項C中,unsignedshort的省略形式是unsignedshort:選項D

中,shortint的省略形式是shorto

11、在一棵二叉樹上,第5層的結(jié)點數(shù)最多是()。

A、8

B、9

C、15

D、16

標準答案:D

知識點解析:根據(jù)二叉樹的性質(zhì):二叉樹第i(i三)層上至多有2M個結(jié)點。得到第

5層的結(jié)點數(shù)最多是16個。

12、下列關(guān)于派生類和基類的描述中,正確的是(),

A、派生類成員函數(shù)只能訪問基類的公有成員

B、派生類成員函數(shù)只能訪問基類的公有和保護成員

C、派生類成員函數(shù)可以訪問基類的所有成員

D、派生類對基類的默認繼承方式是公有繼承

標準答案:B

知識點解析:派生類不論是采用那種繼承方式繼承基類,它的成員函數(shù)只能訪問基

類的公有成員和保護成員。

13、有如下兩個類定義:classAA{);classBB{AAvl,*v2;BBv3:

int*v4;);其中有一個成員變量的定義是錯誤的,這個變量是()。

A、vl

B、v2

C、v3

D、v4

標準答案:c

知識點解析:在定義類的數(shù)據(jù)成員時,類中的數(shù)據(jù)成員可以是任意類型,包括整

型、浮點型、字符符型、數(shù)組、指針和引用等,也可以是對象。但是要注意,只有

另外一個類的對象,才可以作為該類的成員,即作為類的成員對象存在。自身類的

對象是不可以作為自身類的成員存在,但自身類的指針可以。對于本題,在定義類

BB時,不能包括其對象v3。

14、if語句的語法格式可描述為:格式1:if(〈條件〉)V語句〉或格式2:if(V

條件〉)V語句l>elseV語句2>關(guān)于上面的語法格式,下列表述中錯誤的是()。

A、V條件>部分可以是一個if語句,例如if(if(a=O-)…)…

B、V語句,部分可以是一個if語句,例如if(…)if<…)…

C、如果在V條件〉前加上邏輯非運算符!并交換V語句1>和V語句2>的位置,

語句功能不變

D、V語句〉部分可以是一個循環(huán)語句,例如if(…)while(…).…

標準答案:A

知識點解析:此題考查的是if語句。If語句的條件部分是一個表達式而不是語句,

因此選項A敘述錯誤。

15、有如下程序:#include<iostream>#include<cstfing>usingoamespacestd;

classXCF{inta;public:XCF(intaa=0):a(aa){coutVV'T';}

,,,,

XCF(XCF&x){a=x.a;cout<<2;)-XCF(){coui<<a;}int

Geta(){returns:)):infmain(){XCFdi(5),d2(d1):XCF*pd=newXCF(X):emit

<<pd->GctaO;deletepd;return0;}運行時的輸出結(jié)果是()。

A、1215588

B、1218855

C、12185

D、128512

標準答案:B

知識點解析:在這個程序中在建立對象dl(5)時,調(diào)用構(gòu)造函數(shù)XCF(imaa=0):

a(aa){tout<<,'l";),輸出1;在建立d2(dl)時,調(diào)用拷貝構(gòu)造函數(shù)

XCF(XCF&x)(a=x.a;cout<<"2";),輸出2;在建立newXCF(8)對象時,調(diào)用

構(gòu)造函數(shù)XCF(intaa=0):a(aa){cout<<nr';},輸出1;語句couiVVpd->Geia()

的功能是輸出8;語句deleiepd;調(diào)用析構(gòu)函數(shù)?XCF(),輸出8;當退出程序時,

分別釋放對象d2、dl,輸出55。

16^有如下程序:#includeusingnamespacestd;classAA{public:

AA(){cout?x1x;)};classBB:publicAA{intk:public:BB():

k(0){cout?’2';)BB(intn):k(n){cout?’3';}};intmain(){BBb(4),c;

return0:}運行時的輸出結(jié)果是()。

A、1312

B、132

C、32

D、1412

標準答案:A

知識點解析:在基類AA的默認構(gòu)造函數(shù)中,輸出字符“二在繼承類BB的默認構(gòu)

造函數(shù)中,輸出字符,2、在帶有參數(shù)n的構(gòu)造函數(shù)中,輸出字符,3,在主函數(shù)

中,在創(chuàng)建BB的對象b(4)時,會首先調(diào)用基類AA的構(gòu)造函數(shù)輸出字符”、再調(diào)

用類BB帶參數(shù)的構(gòu)造函數(shù)輸出字符,3、在創(chuàng)建BB的對象c時,會首先調(diào)用基類

AA的構(gòu)造函數(shù)輸出字符”"再調(diào)用類BB默認的構(gòu)造函數(shù)輸出字符2,所以程序

輸出的結(jié)果為1312o

17、若要對類BigNumber中重載的類型轉(zhuǎn)換運算符long進行聲明,下列選項中正

確的是()。

A、operatorlong()const;

B、operatorlong(bigNumber);

C、longoperatorlong()const:

D、longoperatorlong(BigNumber);

標準答案:A

知識點解析:在重載類型轉(zhuǎn)換符時,由于運算符本身已經(jīng)表示出返回值類型,因此

不需要返回值類型的聲明。

18、要利用C++流實現(xiàn)輸入輸出的各種格式控制,必須在程序中包含的頭文件是

()。

A、fstream

B、istreara

C、ostream

D、iomanip

標準答案:D

知識點解析:要使用seiw、fixed等操作符,須包含iomanip這個文件。

19、有如下程序:#include<iostream>#include<iomanip>usingnamespace

std:intmain(){cout<<setfill(,#,)<<setw(4)<<'OK"<<123<<endl;return

0;}運行這個程序的輸出結(jié)果是()。

A、##OKI23

B、##OK#123

C>OK##123

D、OK##123#

標準答案:A

知識點解析:setfill是設(shè)置填充字符,setw設(shè)置輸出的寬度,它們的作用表現(xiàn)在緊

接著輸出的字符串上。這個寬度是填充后的寬度。所以coutVVsetfill(,#,)<<

setw,(4)VV“OK”VV123中,selfill和seiw只作用在“0K“,表示在“0K”前面

填充2個存撐。

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

第4套

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

1、字面常量42、4.2、42L的數(shù)據(jù)類型分別是()。

A、long,double,int

B、long,float,int

C、int,double,long

D、int,float,long

標準答案:C

知識點解析?:此題考查的知識點是字面常量。對于整型字面常量,要沒有超過

C++中整數(shù)所能表示的范圍,C+十將自動按整數(shù)來存儲此數(shù),也可以通過在整型

字面常量后添加u或1來指定無符號整數(shù)或長整數(shù)來存儲;對于實型字面常量,

C++將自動按照雙精度數(shù)來存儲,也可以通過在實型字而常量后添加f來指定按單

精度數(shù)存儲。

t,

2、有如下程序段:inli=5;while(inti=0){cout<<*;i-;)運行時輸出“*”的個

數(shù)是()。

A、0

B、1

C、5

D、無窮

標準答案:A

知識點解析:岡為while循環(huán)中,岡為i的值等于0,所以while循環(huán)體一次也不執(zhí)

行。岡而運行時輸出“”的個數(shù)是0。

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

A、自頂向下

B、逐步求精

C、模塊化

D、可復(fù)用

標準答案:D

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

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

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

標過渡,逐步細化。模塊化是把程序要解決的總目標先分解成分目標,再進一步分

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

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

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

法。

4、軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬

于系統(tǒng)軟件的是()。

A、編輯軟件

B、操作系統(tǒng)

C、教務(wù)管理系統(tǒng)

D、瀏覽器

標準答案:B

知識點解析?:軟件根據(jù)應(yīng)用目標的不同,是多種多樣的。軟件按功能可以分為:應(yīng)

用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。應(yīng)用軟件是為解決特定領(lǐng)域的應(yīng)用而

開發(fā)的軟件。系統(tǒng)軟件是計算機管理自身資源,提高計算機使用效率并為計算機用

戶提供各種服務(wù)的軟件。支撐軟件是介于系統(tǒng)軟件和應(yīng)用軟件之間,協(xié)助用戶開發(fā)

軟件的工具性軟件,包括輔助和支持開發(fā)和維護應(yīng)用軟件的工具軟件,還包括輔助

管理人員控制開發(fā)進程和項目管理的工具軟件。

5、下面不能作為結(jié)構(gòu)化方法軟件需求分析工具的是()。

A、系統(tǒng)結(jié)構(gòu)圖

B、數(shù)據(jù)字典(D)

C、數(shù)據(jù)流程圖(DFD圖)

D、判定表

標準答案:A

知識點解析:按照DeMarco的定義,“結(jié)構(gòu)化分析就是使用數(shù)據(jù)流圖(DFD圖)、數(shù)

據(jù)字典(DD)、結(jié)構(gòu)化英語、判定表和判定樹等工具,來建立一種新的、稱為結(jié)構(gòu)

化規(guī)格說明的目標文檔?!毕到y(tǒng)結(jié)構(gòu)圖不能作為結(jié)構(gòu)化方法軟件需求分析工具。

6、有如下程序:#includeusingnamespacestd;classBase{public:Base(int

x=0){cout<<x;));classDerived:publicBase{public:Derived(intx=0){cout<

<x;)private:Baseval:);intmain(){Derivedd(l);return0:}程序的輸出結(jié)

果是()。

A、0

B、1

C>01

D、001

標準答案:D

知識點解析:此題考查的是類的構(gòu)造。建立類的對象時,構(gòu)造函數(shù)的執(zhí)行順序如

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

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

序.>執(zhí)行自身的構(gòu)造函數(shù)。本題中,首先會構(gòu)造基類Base,調(diào)用Base類的構(gòu)造

函數(shù),輸出0;然后還定義了一個Base類的對象,再次調(diào)用Base類的默認構(gòu)造函

數(shù)輸出0;最后構(gòu)造自身,因主函數(shù)中傳入了構(gòu)造參數(shù)I,所以輸出1。故最后輸

出結(jié)果是:001。

7、一個工作人員可使用多臺計算機,而一臺計算機被多個人使用,則實體工作人

員與實體計算機之間的聯(lián)系是()。

A、一對一

B、一對多

C、多對多

D、多對一

標準答案:c

知識點解析:如果一個工作人員只能使用一臺計算機且一臺計算機只能被一個工作

人員使用,則關(guān)系為一對一;如果一個工作人員可以使用多臺計算機,但是一臺計

算機只能被一個工作人員使用,則關(guān)系為一對多;如果一個工作人員可以使用多臺

計算機,一臺計算機也可以被多個工作人員使用,則關(guān)系為多對多。

8、由于常對象不能被更新,因此()。

A、通過常對象只能調(diào)用它的常成員函數(shù)

B、通過常對象只能調(diào)用靜態(tài)成員函數(shù)

C、常對象的成員都是常成員

D、通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)

標準答案:A

知識點解析:此題考查的是常對象與常成員函數(shù)的概念「使用const關(guān)鍵字修飾的

對象稱為常對象,它不能被更新,所以常對象只能調(diào)用常成員函數(shù)而不能調(diào)用其它

成員函數(shù);使用consl關(guān)鍵字聲明的成員函數(shù)是常成員函數(shù),它也不能被更新,常

成員函數(shù)只能調(diào)用常成員函數(shù)而不能調(diào)用其它函數(shù)。

9、有如下類定義和變量定義:classA{public:AO{data=O;}~A(){)int

GetDataOconst{returndata;)voidSetData(intn){data=n;)private:intdata;);

constAa:Ab;下列函數(shù)調(diào)用中錯誤的是()。

A、a.GetDataO;

B、a.SetData(lO);

C^b.GetDataO:

D、b.SetData(10);

標準答案:B

知識點解析:由題意可知a為常對象,因為常對象不能被更新,所以通過這個常對

象只能調(diào)用它的常成員函數(shù)GetData。,而不能調(diào)壓其他成員函數(shù)SetData(lO),因

而選項B為本題的正確答案。

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

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

A、①②③④

B、@

C、③

D、①②③

標準答案:c

知識點3析:③是錯誤的,因為在類體內(nèi),不允許對所定義的數(shù)據(jù)成員進行初始

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

11、有如下程序:#includeusingnamespacestd;classAA{public:

AA0{coutv〈T;)};classBB:publicAA{intk:public:BB():

k(0){tout?t2,;}BB(intn):k(n){cout?43\));intmain(){BBb(4),c;return

0;)運行時的輸出結(jié)果是()。

A、1312

B、132

C、32

D、1412

標準答案:A

知識點解析:在基類AA的默認構(gòu)造函數(shù)中,輸出字符,V,在繼承類BB的默認構(gòu)

造函數(shù)中,輸出字符'2二在帶有參數(shù)n的構(gòu)造函數(shù)中,輸出字符,3、在主函數(shù)

中,在創(chuàng)建BB的對象b(4)時,會首先調(diào)用基類AA的構(gòu)造函數(shù)輸出字符T,再調(diào)

用類BB帶參數(shù)的構(gòu)造函數(shù)輸出字符,3、在創(chuàng)建BB的對象c時,會首先調(diào)用基類

AA的構(gòu)造函數(shù)輸出字符再調(diào)用類RR默認的構(gòu)造函數(shù)輸出字符,2)所以程序

輸出的結(jié)果為1312。

12、已知函數(shù)f的原型是“voidflint*x,int&y);",變量vl、v2的定義是“intvl,

v2:",下列調(diào)用語句中,正確的是()。

A、f(vl,v2);

B、f(vl,&v2);

C、f(&vl,v2);

D、f(&vl,&v2);

標準答案:C

知識點解析:在函數(shù)f的形參表達式中第一個形參為整型指針變量,第二個為整型

引用變量,所以用實參vl的指針初始化第一個形參,用實參v2初始化第二形參。

13、已知函數(shù)fun的原型為intfun(int,ini,int);下列重載函數(shù)原型中錯誤的是

()o

A、charfun(int,int);

doublefun(int,int,double);

C、intfun(int.char*);

D、floatfun(int,int,int);

標準答案:D

知識點解析:重載函數(shù)至少要在參數(shù)個數(shù)或參數(shù)類型上不同。而選項D中的函數(shù)

與原函數(shù)只是函數(shù)類型不同,而其他完全相同(參數(shù)個數(shù)及類型),則不能作為重載

函數(shù)來使用。

14、下列關(guān)于模板的敘述中,正確的是()。

A、如果一個類中存在純虛函數(shù),這個類就是類模板

B、函數(shù)模板不能有形式參數(shù)表

C、類模板是一種參數(shù)化類型的類,是類的生成器

D、類模板中不能包含構(gòu)造函數(shù)

標準答案:C

知識點解析:對于函數(shù)模板,數(shù)據(jù)類型本身成了它的參數(shù),是一種參數(shù)化類型的函

數(shù)。對于類模板,數(shù)據(jù)類型本身成了它的參數(shù),因而是一種參數(shù)化類型的類,是類

的生成器。

15、有如下類定義:ciassA{char*a;public:A():a(0){)A(char*aa){//}Eaa

所指字符串拷貝到a所指向的存儲空間a二;strcpy(a,aa);}~

A()(delete[]a;}}:橫線處應(yīng)填寫的表達式是()。

A、newchar[strlcn(aa)+l]

B、char[strlen(aa)+l]

C>char[strlen(aa)]

D、newchar[sizeof(aa)-l]

標準答案:A

知識點解析:函數(shù)strlen(aa)返|川字符串a(chǎn)a中字符的個數(shù),不包括末尾的空字符.

所以在內(nèi)存空間創(chuàng)建字符數(shù)組a時,需要字符數(shù)組的長度是strlen(aa)+lo

16、有如下類和對象的定義:classConstants{public;staticdoublegetPl(){return

3.1416:|):Constantsconstants;下列各組語句中,能輸出3.1416的是()。

A、cout<<constants->getPI();和coutV〈Constants::gerPl();

B、cout<<constants.getPI();和cout<<Constant.getPI();

C^cout<<constants->getal();和coutVVConstants->getPI():

D、cout<<constants.getPI();和coutVVConstanls::getPI();

標準答案:D

知識點解析:此題考查的是靜態(tài)成員函數(shù)的引用。wetPIO是類Constants的靜態(tài)成

員函數(shù)。引用靜態(tài)成員函數(shù)可以有兩種形式:一是通過類名直接進行調(diào)用,例如類

名::靜態(tài)成員函數(shù)名;另一種是用類的任何對象名進行調(diào)用其作用僅是通過對象

名間接的指出類名,例如constants.getPI。選項D卻是這種調(diào)用方式。

17、有如下類定義:classAA{inta:public:AA(intn=0):a(n){)};classBB:

publicAA{public:BB(intn));其中橫線處缺失部分是()。

A、:a(n){)

B、:AA(n){)

C>{a(n);}

D、{a=n;}

標準答案:B

知識點解析:根據(jù)派生類構(gòu)造函數(shù)的一般格式:〈派生類名>(<總參數(shù)表〉):〈基類

名1>(〈參數(shù)表1>),…〈基類名n>(v參數(shù)表n>),〈成員對象名1>(V參數(shù)表

n+l>),…〈成員對象名m>(v參數(shù)表n+m>)〈派生類構(gòu)造函數(shù)體在派生類BB的

構(gòu)造函數(shù)總參數(shù)表后面應(yīng)該接上基類名AA和其參數(shù)。

18、有如下程序:#include<iostrcam>usingnamespacestd;classBasel{public:

Basel(intd){cout<<d;}~Basel(){}};classBase2{public:Base2(intd){cout<

<d;}~Base2(){}};classDerived:publicBasel.Base2{public:Derived(int

a,intb,intc,intd);Base1(b),Base2(a)>bl(d)?b2(c){}Private:intbl;int

b2;);intmain(){Derivedd(1,2,3,4);return0:}運行時的輸出結(jié)果是()。

A、1234

B、2134

C、12

D、21

標準答案:D

知識點解析:程序在創(chuàng)建派生類對象d時,分別調(diào)用基類Basel和Basel的構(gòu)造函

數(shù)。

19、下面是類shape的定義:classShape)public:VirtualvoidDraw(尸0;);下

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

A、類Shape是虛基類

B、類Shape是抽象類

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

D、語句“Shapes:”能夠建立Shape的一個對象s

標準答案:B

知識點解析:因為類Shape中包含純虛函數(shù)Draw。,所以類Shape是抽象類。

20、有如下類定義:classB{public:voidfunl(){}private:voidfun2()()

protected:voidfun3(){}};classD:publicB{protected:voidfun4(){)};若obj是

類D的對象,則下列語句中不違反訪問控制權(quán)限的是()。

A、pbj.funl();

B、obj.fun2();

C、obj.fun3();

D、obj.fun4();

標準答案:A

知識點解析:派生類D公有繼承父類B,所以。bj可以訪問基類B的公有,不能訪

問其它成員。

21、在類中重載賦值運算符時,應(yīng)將其聲明為類的()。

A、靜態(tài)函數(shù)

B、友元函數(shù)

C、成員函數(shù)

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

標準答案:C

知識點解析:賦值運算符只能作為類的成員函數(shù)重載。

22、有如下模板聲明:template<typenameT1,typenameT2>ClaSSA;下列聲

明中,與上述聲明不等價的是()。

A、template<classTI,classT2>classA;

B、template<classTl,typenameT2>classA;

C、template<typenameT1,classT2>classA;

D、template<typenameTI,T2>classA;

標準答案:D

知識點解析:在類模板中,數(shù)據(jù)類型木身成了它的參數(shù),因而是一種參數(shù)化類型的

類,是類的生成器。聲明一個類模板的格式是:templateVV模板形參表聲明>>

〈類聲明〉,〈模板形參表聲明,是由一個或多個模板形參組成。對于本題來說,

模板形參表中包括類型T1和T2兩個類型參數(shù),而在選項D)中T1說明其

溫馨提示

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

最新文檔

評論

0/150

提交評論