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

下載本文檔

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

文檔簡介

國家二級C++機試(選擇題)模擬試卷7(共9套)(共233題)國家二級C++機試(選擇題)模擬試卷第1套一、選擇題(本題共21題,每題1.0分,共21分。)1、必須用一對大括號括起來的程序段是()。A、switch語句中的case標(biāo)號語句B、if語句的分支C、循環(huán)語句的循環(huán)體D、函數(shù)的函數(shù)體標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是語句塊和函數(shù)。if語句的分支和循環(huán)語句的循環(huán)體可以是一條語句也可以使一個語句塊,所以不是必須用一個大括號括起來:switch語句中的case標(biāo)號語句可以是一系列語句,也可以包含語句塊,也不是必須用一對大括號括起來:函數(shù)的函數(shù)體必須用一對大括號括起來。2、字面常量42、4.2、42L的數(shù)據(jù)類型分別是()。A、long,double,intB、long,float,intC、int,double,longD、int,float,long標(biāo)準(zhǔn)答案:C知識點解析:此題考查的知識點是字面常量。對于整型字面常量,要沒有超過C++中整數(shù)所能表示的范圍,C+十將自動按整數(shù)來存儲此數(shù),也可以通過在整型字面常量后添加u或1來指定無符號整數(shù)或長整數(shù)來存儲;對于實型字面常量,C++將自動按照雙精度數(shù)來存儲,也可以通過在實型字而常量后添加f來指定按單精度數(shù)存儲。3、某二叉樹中有n個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)為()。A、n+1B、n-1C、2nD、n/2標(biāo)準(zhǔn)答案:A知識點解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。所以該二叉樹的葉子結(jié)點數(shù)等于n+1。4、有如下程序:#include<iostream>usingnamespacestd;classTest{public:Test(){n+=2;}~Test(){n-=3;}staticintgetNum(){returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<"n="<<Test::getNum()<<endl;return0:}執(zhí)行后的輸出結(jié)果是()。A、n=0B、n=1C、n=2D、n=3標(biāo)準(zhǔn)答案:A知識點解析:語句Test*p=newTest;會調(diào)用類的構(gòu)造函數(shù)Test(){n+=2;},使n的值由原來的1變?yōu)?,然后deletep調(diào)用類的析構(gòu)函數(shù)~Test(){n-=3;},因為n是static型變量,所以會在3的基礎(chǔ)上減3使得輸出結(jié)果為0。5、下列有關(guān)拷貝構(gòu)造函數(shù)的描述中錯誤的是()。A、拷貝構(gòu)造函數(shù)是一種構(gòu)造函數(shù)B、拷貝構(gòu)造函數(shù)與一般的構(gòu)造函數(shù)一樣,可以設(shè)置多個形參C、每一個類中都必須有一個拷貝構(gòu)造函數(shù)D、拷貝構(gòu)造函數(shù)的功能是用一個已知對象去初始化一個正在創(chuàng)建的對象標(biāo)準(zhǔn)答案:B知識點解析:拷貝構(gòu)造函數(shù)是一個特殊的構(gòu)造函數(shù),它用一個己知的對象初始化一個正在創(chuàng)建的同類對象,它不能指定函數(shù)返回類型;只有一個參數(shù),是同類的某個對象名的引用。每一個類中都必須有一個拷貝構(gòu)造函數(shù),如果類中未聲明,編譯器會自動生成一個公有的拷貝構(gòu)造函數(shù)。6、對如下二叉樹進行后序遍歷的結(jié)果為()。A、ABCDEFB、DBEAFCC、ABDECFD、DEBFCA標(biāo)準(zhǔn)答案:D知識點解析:所謂后序遍歷是指在訪問根據(jù)結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點,并且,在遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根點。因此,后序遍歷二叉樹的過程也是一個遞歸過程。其簡單描述為:若二叉樹為空,則結(jié)束返回:否則,先后序遍歷左子樹,然后后序遍歷右子樹,最后訪問根結(jié)點。對于后序遍歷,第一個訪問的結(jié)點一定是最左下的結(jié)點,最后一個訪問的結(jié)點一定是根結(jié)點,所以選項D)為正確答案。7、假定MyClass為一個類,則該類的拷貝構(gòu)造函數(shù)的聲明語句為()。A、MyClass(MyClassx);B、MyClass(MyClass&x);C、MyClass(&x);D、MyClass(x);標(biāo)準(zhǔn)答案:B知識點解析:拷貝構(gòu)造函數(shù)也是構(gòu)造函數(shù),所以函數(shù)名字為。MyClass,但它只有一個參數(shù),這個參數(shù)是本類的對象,即x;而且采用對象的引用的形式,也就是&x。所以本題答案是B)。8、軟件生命周期可分為定義階段,開發(fā)階段和維護階段。詳細(xì)設(shè)計屬于()。A、定義階段B、開發(fā)階段C、維護階段D、上述三個階段標(biāo)準(zhǔn)答案:B知識點解析:本題考查軟件生命周期的相關(guān)概念。通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。一般包括可行性研究與需求分析、設(shè)計、實現(xiàn)、測試、交付使用以及維護等活動。還可以將軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護三個階段。9、下面不屬于軟件需求分析階段主要工作的是()。A、需求變更申請B、需求分析C、需求評審D、需求獲取標(biāo)準(zhǔn)答案:A知識點解析:在軟件開發(fā)的過程中,應(yīng)該盡早的制定測試計劃,其中在需求分析階段制定系統(tǒng)測試計劃,在概要設(shè)計階段制定集成測試計劃,在詳細(xì)設(shè)計階段制定單元測試計劃。10、下列說法中錯誤的是()。A、公有繼承時基類中的public成員在派生類中仍是public的B、公有繼承時基類中的private成員在派生類中仍是private的C、私有繼承時基類中的public成員在派生類中是private的D、保護繼承時基類中的public成員在派生類中是protected的標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是繼承時基類成員屬性改變。選項B)中,公有繼承時基類中的private成員在派生類中不是private的,而是不可訪問的。所以選項B)錯誤;其他選項敘述均正確。11、下面不屬于軟件測試實施步驟的是A、集成測試B、回歸測試C、確認(rèn)測試D、單元測試標(biāo)準(zhǔn)答案:B知識點解析:軟件測試實施的步驟有單元測試、集成測試和確認(rèn)測試。12、負(fù)責(zé)數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是()。A、數(shù)據(jù)定義語言B、數(shù)據(jù)管理語言C、數(shù)據(jù)操縱語言D、數(shù)據(jù)控制語言標(biāo)準(zhǔn)答案:C知識點解析:負(fù)責(zé)數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言足數(shù)據(jù)操縱語言。13、已知基類Employee只有一個構(gòu)造函數(shù),其定義如下:Employee::Employee(intn):id(n){)Manager是Employee的派生類,則下列對Manager的構(gòu)造函數(shù)的定義中,正確的是()。A、Manager::Manager(intn):id(n){}B、Manager::Manager(intn){id=n;}C、Manager::Manager(intn):Employee(n){)D、Manager::Manager(intn){Employee(n);)標(biāo)準(zhǔn)答案:C知識點解析:基類的構(gòu)造函數(shù)是帶有參數(shù)的,派生類從基類派生,這就需要在派生類的構(gòu)造函數(shù)名后而顯示的調(diào)用基類的構(gòu)造函數(shù)。14、有如下程序:#include<iostream>usingnamespacestd;classAA{intn;public:AA(intk):n(k){}intget0{returnn;}intgetoconst{returnn+1;}};intmain(){AAa(5);constAAb(6);cout<<a.get()<<b.get();return0;}執(zhí)行后的輸出結(jié)果是()。A、55B、57C、75D、77標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是常成員函數(shù)和函數(shù)的重載。所謂函數(shù)重載,是指同一個函數(shù)名可以對應(yīng)著多個函數(shù)實現(xiàn)。一般對象a既可以調(diào)用普通成員函數(shù)get,也可以調(diào)用常成員函數(shù)get,由于常成員函數(shù)不能更新對象的數(shù)據(jù)成員,所以題目中通過對象a調(diào)用的函數(shù)為常成員函數(shù):常對象b只能調(diào)用普通成員函數(shù)。15、有類定義如下:classType{public:Type(inti=0);Typeoperator一(int);friendTypeoperator+(Type,Type);private:intval;};若有對象定義Typecl;則下列語句序列中,錯誤的是()。A、Type(3)+c1;B、cl+Type(3);C、3一cl;D、c1—3;標(biāo)準(zhǔn)答案:C知識點解析:由于在類Type中對“-”進行了重載,所以根據(jù)“-”重載的形式定義,c1-3是正確的,而3-c1是錯誤的表達(dá)式。16、下列關(guān)于構(gòu)造函數(shù)的描述中,錯誤的是()。A、構(gòu)造函數(shù)名與類名相同B、構(gòu)造函數(shù)可以有返回值C、構(gòu)造函數(shù)可以重載D、每個類都有構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:B知識點解析:構(gòu)造函數(shù)具有下面4個特殊的性質(zhì):構(gòu)造函數(shù)的名字必須與類名相同;構(gòu)造函數(shù)不指定返回類型,它隱含有返回值,由系統(tǒng)內(nèi)部使用:構(gòu)造函數(shù)可以有一個或多個參數(shù),因此構(gòu)造函數(shù)可以重載;在創(chuàng)建對象時,系統(tǒng)會自動調(diào)用構(gòu)造函數(shù)。17、有如下程序:#inc1ude<iostream>usingnamespacestd;classBase{prVate:Voidmnl()const{cout<<"fun1";}proteCted:Voidfun2()const{cout<<”mn2¨;}public:Voidfun3()const{cout<<"fun3";}};classDeriVed:prOteCtedBaSe{public:Voidfun4()const{cout<<"fIun4";}};intmain(){DeriVedobj;obj.fun1();//①obj.fun2();//②obj.fun3();//③obj.fun4();//④reurnO:}其中有語法錯誤的語句是()。A、①②③④B、①②③C、②③④D、①④標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是保護繼承。因為Derived以protected方式繼承了Base類,所以父類Base中的公有成員和保護成員均成了Derived類的保護成員,而Base類的私有成員Derived類不可訪問。所以,主函數(shù)中通過Derived類的對象只能夠訪問到Derived類的公有成員。18、當(dāng)派生類從一個基類保護繼承時,基類中的一些成員在派生類中成為保護成員,這些成員在基類中原有的訪問屬性是()。A、任何B、公有或保護C、保護或私有D、私有標(biāo)準(zhǔn)答案:B知識點解析:基類的公有成員和保護成員只有在以保護繼承方式繼承時,其在繼承類中是保護成員。19、已知類Myclass的定義如下:classMyClass{public:MyClass(intd){data=d;}~MyClass(){}private:intdata;};下列對Myclass類對象數(shù)組的定義和初始化語句中,正確的是()。A、MyClassarrays[2];B、MyClassarrays[2]={MyClass(5)};C、MyClassarrays[2]={MyClass(5),MyClass(6)};D、MyClass*arrays=newMyClass[2];標(biāo)準(zhǔn)答案:C知識點解析:在選項C中定義了類MyClass對象數(shù)組arrays[2],并用對象MyClass(5)和MyClass(6)對這個數(shù)組中的兩個元素賦初值。20、下列關(guān)于模板的描述中,錯誤的是()。A、類模板的成員函數(shù)都是模板函數(shù)B、函數(shù)模板是一種參數(shù)化類型的函數(shù)C、滿足一定條件時可以省略模板實參D、模板形參只能由關(guān)鍵字typename聲明標(biāo)準(zhǔn)答案:D知識點解析:同一模板的聲明和定義中,模板形參的名字不必相同。每個模板類型形參前面必須帶上關(guān)鍵字typename/class,每個非類型形參前面必須帶上類型名字。21、模板對類型的參數(shù)化提供了很好的支持,因此()。A、類模板的主要作用是生成抽象類B、類模板實例化時,編譯器將根據(jù)給出的模板實參生成一個類C、在類模板中的數(shù)據(jù)成員都具有同樣類型D、類模板中的成員函數(shù)都沒有返回值標(biāo)準(zhǔn)答案:B知識點解析:此題考查了類模板的概念。在定義對象的過程中,系統(tǒng)會自動地根據(jù)需要生成相應(yīng)的類定義,這種依據(jù)類模板生成具體類的過程稱為類模板的實例化。國家二級C++機試(選擇題)模擬試卷第2套一、選擇題(本題共34題,每題1.0分,共34分。)1、在一棵二叉樹上,第5層的結(jié)點數(shù)最多是()。A、8B、9C、15D、16標(biāo)準(zhǔn)答案:D知識點解析:根據(jù)二叉樹的性質(zhì):二叉樹第i(i>1)層上至多有2i-1個結(jié)點。得到第5層的結(jié)點數(shù)最多是16個。2、一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棧的順序是()。A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA標(biāo)準(zhǔn)答案:B知識點解析:棧是按照“先進后出”或“后進先出”的原則組織數(shù)據(jù)的。所以出棧順序是EDCBA54321。3、有如下函數(shù)模板:template<classT>Tsquare(Tx){returnx,x;}其中T是()。A、函數(shù)形參B、函數(shù)實參C、模板形參D、模板實參標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是函數(shù)模板。聲明一個函數(shù)模板的格式是:template<模板形參表聲明>函數(shù)聲明,{函數(shù)體}其中的<模板形參表聲明>是由一個或多個“模板形參”組成的,每個“模板形參”可具有以下幾種形式:typename參數(shù)名;class參數(shù)名;類型修飾參數(shù)名。4、下面的描述中,正確的是()。A、virtual可以用來聲明虛函數(shù)B、含有純虛函數(shù)的類是不可以用來創(chuàng)建對象的,因為它是虛基類C、即使基類的構(gòu)造函數(shù)沒有參數(shù),派生類也必須建立構(gòu)造函數(shù)D、靜態(tài)數(shù)據(jù)成員可以通過成員初始化列表來初始化標(biāo)準(zhǔn)答案:A知識點解析:在基類中用virtual聲明成員函數(shù)為虛函數(shù),所以A是正確的。純虛函數(shù)是在聲明虛函數(shù)時被“初始化”為0的虛函數(shù)。純虛函數(shù)是一種特殊的虛函數(shù),它沒有具體的實現(xiàn)。靜態(tài)數(shù)據(jù)成員函數(shù)只能在類外進行初始化。5、結(jié)構(gòu)化程序設(shè)計的基本原則不包括()。A、多元性B、自頂向下C、模塊化D、逐步求精標(biāo)準(zhǔn)答案:A知識點解析:結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為:自頂向下,逐步求精,模塊化和限制使用GOTO語句,其中不包括多態(tài)性。6、有如下程序:#includeusingnamespacestd;voidfl(int&x){x++;}voidf2(intx){++x;}intmain(){intx=10,y=12;f1(x);f2(y);cout<<x+y<<endl;return0;}運行這個程序的輸出結(jié)果是()。A、22B、23C、24D、25標(biāo)準(zhǔn)答案:B知識點解析:在函數(shù)f1(int&x){x++;}中,是對變量x的引用,所以當(dāng)在-main函數(shù)中執(zhí)行“fl(x);”語句后,變量x的值等于11,而在函數(shù)voidf2(intx){++x;)中,對變量x的傳遞調(diào)用,在main函數(shù)中執(zhí)行“f2(y);”語句后,變量y的值仍然等于12,所以輸出x+y的值等于23。7、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、軟件集成測試計劃B、軟件詳細(xì)設(shè)計說明書C、用戶手冊D、軟件需求規(guī)格說明書標(biāo)準(zhǔn)答案:D知識點解析:在軟件開發(fā)過程中,需求分析階段產(chǎn)生的主要文檔是軟件需求規(guī)格說明書。8、兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度稱為()。A、耦合度B、內(nèi)聚度C、復(fù)雜度D、數(shù)據(jù)傳輸特性標(biāo)準(zhǔn)答案:A知識點解析:模塊的獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系較少且接口簡單。衡量軟件的模塊獨立性使用:內(nèi)聚性和耦合性兩個定性度量標(biāo)準(zhǔn)。內(nèi)聚性是對一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量:耦合性是對模塊間互相連接的緊密程度的度量。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。9、有如下程序:#includeusingnamespacestd;classToy{public:Toy(char*一n){strcpy(name,一n);count++;)~Toy0{count一;)char*GetName0{returnname;}staticintgetCount0{returncount;)private:charname[10];staticintcount;);intToy::count=0;intmain(){Toytl(”Snoopy”),t2(”Mickey”),t3(”Barbie”);cout<<t1.getCount()<<endl;returnO:)運行時的輸出結(jié)果是()。A、1B、2C、3D、運行時出錯標(biāo)準(zhǔn)答案:C知識點解析:類Toy中包含一個字符數(shù)組name和一個靜態(tài)整型變量count。在程序中首先給類Toy的成員count的賦初始值0,然后在主函數(shù)中,定義了三個Toy對象t1、t2、t3,并分別對它們的name字段賦值,在賦值的同時變量count的值加l,所以最后變量count的值等于3。10、有如下類定義:classSample{public;Sample(intx):ref(x){}∥①private:Sample():ref(0){)∥②staticintval=5;∥③constintref;∥④);上述程序段中,錯誤的語句是()。A、①B、②C、③D、④標(biāo)準(zhǔn)答案:C知識點解析:靜態(tài)整型數(shù)據(jù)不能定義為類的數(shù)據(jù)成員。11、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、差C、交D、并標(biāo)準(zhǔn)答案:B知識點解析:關(guān)系T中的元組是R關(guān)系中有而s關(guān)系中沒有的元組的集合,所以進行的是差的運算。12、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、差C、交D、并標(biāo)準(zhǔn)答案:B知識點解析:由三個關(guān)系R、S和T的結(jié)構(gòu)可以知道,關(guān)系T是由關(guān)系R、S經(jīng)過差運算得到的。13、在下列橫線處應(yīng)添加的語句是()。classBase{public:voidfun(){cout<<"Base::fun"<<endl;}};classDerived:publicBase{public:voidfun(){//顯示調(diào)用基類的fun函數(shù)cout<<"Derived::fun"<<endl;}};A、Derived::funB、Base::fun();C、Pubic::funD、fun();標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是成員函數(shù)的調(diào)用。因為橫線處的作用是調(diào)用基類的fun函數(shù),又因為派生類中也有fun()函數(shù),所以必須對fun()函數(shù)加以限定,即Base::fun();。14、if語句的語法格式可描述為:格式1:if(<條件>)<語句>或格式2:if(<條件>)<語句1>else<語句2>關(guān)于上面的語法格式,下列表述中錯誤的是()。A、<條件>部分可以是一個if語句,例如if(if(a==0)…)…B、<語句>部分可以是一個if語句,例如if(…)if(…)…C、如果在<條件>前加上邏輯非運算符!并交換<語句1>和<語句2>的位置,語句功能不變D、<語句>部分可以是一個循環(huán)語句,例如if(…)while(…)…標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是if語句。If語句的條件部分是一個表達(dá)式而不是語句,因此選項A敘述錯誤。15、數(shù)據(jù)庫管理系統(tǒng)的基本功能不包括A、數(shù)據(jù)庫訪問B、數(shù)據(jù)庫定義C、數(shù)據(jù)庫的建立和維護D、數(shù)據(jù)庫和網(wǎng)絡(luò)中其他系統(tǒng)的通信標(biāo)準(zhǔn)答案:D知識點解析:數(shù)據(jù)庫管理系統(tǒng)的主要功能包括:數(shù)據(jù)庫定義,數(shù)據(jù)操作,數(shù)據(jù)庫的運行管理,數(shù)據(jù)組織、存儲與管理,數(shù)據(jù)庫的保護,數(shù)據(jù)庫的維護和通信。數(shù)據(jù)庫不能和網(wǎng)絡(luò)中的其他系統(tǒng)通信。16、已知Value是一個類,Value是Value的一個對象。下列以非成員函數(shù)形式重載的運算符函數(shù)原形中,正確的是()。A、Valueoperator+(ValueV,inti);B、Valueoperator+(ValueV=value,inti);C、Valueoperator+(Valuevinti=O);D、Valueoperator+(ValueV:value,inti=O);標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是重載加法運算符“+”。“+”是二元運算符,其第一操作數(shù)是對象本身,i為第二操作數(shù),由此可知選項B正確。17、有如下程序:#inc1ude<iostream>usingnamespacestd;voidfl(int&x){x++;}voidf2(intx){++x;}intmain(){intx=10,y=12;f1(x);f2(y);cout<<x+y<<end1;return0;}運行這個程序的輸出結(jié)果是()。A、22B、23C、24D、25標(biāo)準(zhǔn)答案:B知識點解析:在函數(shù)fl(irit&x){XH,)中,是對變量x的引用,所以當(dāng)在maln函數(shù)中執(zhí)行“n(x);”語句后,變量x的值等于11,而在函數(shù)voidf2(intx){++x;)中,對變量x的傳遞調(diào)用,在main函數(shù)中執(zhí)行“f2(y);”語句后,變量y的值仍然等于12,所以輸出x+y的值等于23。18、若已經(jīng)聲明了函數(shù)原型“voidfun(inta,doubleb=0.0);”,則下列重載函數(shù)聲明中正確的是()。A、voidfun(inta=90,doubleb=0.0);B、intfun(inta,doubleb);C、voidfun(doublea,intb)D、boolfun(inta,doubleb=0.0);標(biāo)準(zhǔn)答案:C知識點解析:函數(shù)重載的原則就是至少要在參數(shù)個數(shù)或參數(shù)類型上有所不同,且如果函數(shù)只是函數(shù)類型不同的,而其他完全相同,也不能作為重載函數(shù)來使用。19、下列選項中,不是C++關(guān)鍵字的是()。A、classB、functionC、friendD、vinual標(biāo)準(zhǔn)答案:B知識點解析:class、friend、virtual都是C+的關(guān)鍵字,而funtion是VB的關(guān)鍵字。20、若x和y是程序中的兩個整型變量,則下列if語句中正確的是()。A、if(x==0)y=1;elsey=2;B、if(x==0)theny=1elsey=2;C、if(x==0)y=1elsey=2;D、if(x==0)y=1;elsey=2;標(biāo)準(zhǔn)答案:A知識點解析:ifelse語句的形式為:if(<條件>)<語句1>else<語句2>所以符合以上形式的ifelse語句為選項A。21、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assPart{public:Part(intx=0):val(x){cout<<val;}~Part0{cout<<val;)private:intval,};c1assWhole{public:Whole(intx,inty,intz=0):p2(x),p1(y),val(z){cout<<val;)~Whole(){cout<<val;}private:Partp1,p2;intval;};intmain(){Wholeobj(1,2,3);return0;}程序的輸出結(jié)果是()。A、123321B、213312C、213D、123123標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是類的構(gòu)造與析構(gòu)。建立類的對象時,構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個基類被繼承時聲明的順序(自左向右)接著執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中聲明的順序,最后執(zhí)行自身的構(gòu)造函數(shù)。析構(gòu)順序與之相反。本題中,Whole類中有兩個Part類的成員p1和p2,根據(jù)它們定義的順序,先構(gòu)造p1再構(gòu)造p2。所以,首先被構(gòu)造的是p1(y),輸出2;第二個被構(gòu)造的是p2(x),輸出1;最后調(diào)用析構(gòu)函數(shù),輸出val的值3;析構(gòu)函數(shù)調(diào)用順序與構(gòu)造函數(shù)相反。故最后輸出213312。22、下列關(guān)于類成員對象構(gòu)造函數(shù)調(diào)用順序的敘述中,正確的是()。A、與它們在初始化列表中的順序相同B、與它們在類中聲明的順序相同C、與析構(gòu)函數(shù)的調(diào)用順序相同D、順序不確定標(biāo)準(zhǔn)答案:B知識點解析:類成員對象構(gòu)造函數(shù)的調(diào)用是按照在類中定義的順序進行的,而不是按照構(gòu)造函數(shù)說明后的冒號順序進行構(gòu)造的。23、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assTest{public:TestO{n+=2;}~Test0{n—=3;}staticintgetNum0{returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<"n="<Test::getNumO<<end1;retum0;}執(zhí)行后的輸出結(jié)果是()。A、n=0B、n=1C、n=2D、n=3標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)。靜態(tài)數(shù)據(jù)成員是類中所有對象共享的成員,而不是某個對象的成員。題目中的靜態(tài)數(shù)據(jù)成員n的運算具有疊加性,執(zhí)行“n+—2”和“n——3”后n的值為0。24、有如下程序:#include<iostream>usingnamespacestd;classAA{intk;protected:intn;voidsetK(intk){this->k=k;}public:voidsetN(intn){this->n=n;}};classBB:publicAA{/*類體略*/};intmain(){BBx;x.n=1;//1x.setN(2);//2x.k=3;//3x.setK(4);//4return0;}在標(biāo)注號碼的四條語句中正確的是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識點解析:因為類BB公有繼承自類AA,所以AA中的保護成員和公有成員在類BB中仍是保護成員和公有成員。在選項B中調(diào)用了公有成員函數(shù)setN(intn){this->n=n;},對保護成員n進行賦值操作。25、派生類的成員函數(shù)不能訪問基類的()。A、公有成員和保護成員B、公有成員C、私有成員D、保護成員標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是派生類對基類成員的訪問。派生類對基類的各個成員的訪問能力與繼承方式無關(guān),其成員不能訪問基類中的私有成員,可以訪問基類的公有成員和保護成員。26、有如下程序:#include<iostream>usingnamespacestd;classAA{public:AA(){cout<<’1’;}};classBB:publicAA{intk;public:BB():k(0){cout<<’2’;}BB(intn):k(n){cout<<’3’;}};intmain(){BBb(4),c;return0;}運行時的輸出結(jié)果是()。A、1312B、132C、32D、1412標(biāo)準(zhǔn)答案:A知識點解析:在基類AA的默認(rèn)構(gòu)造函數(shù)中,輸出字符‘1’,在繼承類BB的默認(rèn)構(gòu)造函數(shù)中,輸出字符‘2’,在帶有參數(shù)n的構(gòu)造函數(shù)中,輸出字符‘3’。在主函數(shù)中,在創(chuàng)建BB的對象b(4)時,會首先調(diào)用基類AA的構(gòu)造函數(shù)輸出字符‘1’,再調(diào)用類BB帶參數(shù)的構(gòu)造函數(shù)輸出字符‘3’。在創(chuàng)建BB的對象c時,會首先調(diào)用基類AA的構(gòu)造函數(shù)輸出字符‘1’,再調(diào)用類BB默認(rèn)的構(gòu)造函數(shù)輸出字符‘2’。所以程序輸出的結(jié)果為1312。27、有如下類定義:classSample{public;Sample(intx):ref(x){}//①private:Sample():ref(0){}//②staticintval=5;//③constintref;//④};上述程序段中,錯誤的語句是()。A、①B、②C、③D、④標(biāo)準(zhǔn)答案:C知識點解析:靜態(tài)整型數(shù)據(jù)不能定義為類的數(shù)據(jù)成員。28、在下列關(guān)鍵字中,不能用來表示繼承方式的是()。A、privateB、staticC、publicD、protected標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是繼承方式。繼承方式有私有(private)、保護(protected)、公有(public)三種。29、己知在一個類體中包含如下函數(shù)原型:VOLUMEoperator一(VOLUME)const;,下列關(guān)于這個函數(shù)的敘述中,錯誤的是()。A、這是運算符.的重載運算符函數(shù)B、這個函數(shù)所重載的運算符是一個一元運算符C、這是一個成員函數(shù)D、這個函數(shù)不改變類的任何數(shù)據(jù)成員的值標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是運算符的重載。運算符“一”有一元和二元兩種,在本題中它作為…個二元運算符,所以它不能更新對象的數(shù)據(jù)成員,也不能調(diào)用該類中沒有const修飾的成員函數(shù)。30、若需要為XV類重載乘法運算符,運算結(jié)果為XV類型,在將其聲明為類的成員函數(shù)時,下列原型聲明正確的是()。A、XVoperator*(XV,XV);B、XV*(XV);C、operator*(XV);D、XVoperator*(XV);標(biāo)準(zhǔn)答案:D知識點解析:“*”是一個二元運算符,在作為成員函數(shù)重載時參數(shù)表中只有一個參數(shù),對應(yīng)于第二個操作數(shù),而第一個操作數(shù)就是對象本身,僅以this指針的形式隱藏在參數(shù)表中。31、下列函數(shù)模版中的定義中,合法的是()。A、temp1ate<typenameT>Tabs(Tx){returnx<0?—x:x;)B、temp1atec1ass<T>Tabs(Tx){returnx<0?—x:x;}C、temp1ateT<c1assT>abs(Tx){returnx<0?—x:x;}D、temp1ateTabs(Tx){retumx<0?—x:x;)標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是函數(shù)模板。聲明一個函數(shù)模板的格式是:temp1ate<模板形參表聲明>函數(shù)聲明,其中的<模板形參表聲明>是由一個或多個“模板形參”組成的,每個“模板形參”可具有以下幾種形式:t)rpename參數(shù)名;class參數(shù)名;類型修飾參數(shù)名。32、關(guān)于運算符重載,下列表述中正確的是()。A、C++已有的任何運算符都可以重載B、運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C、在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D、可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是運算符重載的概念。C++語言規(guī)定,“.”、’’*’’、’’->*’’、“::”和“?:”這五個運算符不能被重載,故選項A錯誤;運算符函數(shù)的返回類型由該運算符所組成的表達(dá)式的值的類型來決定,故選項B說法是錯誤的:運算符重載是針對原有運算符,并不能通過重載創(chuàng)造出新的運算符,故選項D錯誤。33、當(dāng)使用ofstream流類定義—個流對象并打開一個磁盤文件時,文件的默認(rèn)打開方式為()。A、ios_base::inB、ios_base::binaryC、ios_base::in|iosbase::out.D、ios_base::out標(biāo)準(zhǔn)答案:D知識點解析:對于ofstream,默認(rèn)的打開方式是ios_base::out,ofstream只能用于輸出,它沒有提供任何用于輸入的操作。34、C++系統(tǒng)預(yù)定了4個用于標(biāo)準(zhǔn)數(shù)據(jù)流的對象,下列選項中不屬于此類對象的是()。A、coutB、cinC、cerrD、cset標(biāo)準(zhǔn)答案:D知識點解析:C++流有4個預(yù)定義的流對象,它們分別是:ein標(biāo)準(zhǔn)輸入:cout標(biāo)準(zhǔn)輸出;cerr標(biāo)準(zhǔn)出錯信息輸出;clog帶緩沖的標(biāo)準(zhǔn)出錯信息輸出。國家二級C++機試(選擇題)模擬試卷第3套一、選擇題(本題共24題,每題1.0分,共24分。)1、下面敘述中正確的是()。A、線性表是線性結(jié)構(gòu)B、棧與隊列是非線性結(jié)構(gòu)C、線性鏈表是非線性結(jié)構(gòu)D、二叉樹是線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識點解析:線性表是最簡單的、最常用的一種線性結(jié)構(gòu)。所謂線性鏈表指的是采用鏈?zhǔn)酱鎯Y(jié)構(gòu)的線性表。棧和隊列其實是一種特殊的線性表。樹是—種簡單的非線性結(jié)構(gòu),二叉樹是樹的一種。2、某二叉樹共有12個結(jié)點,其中葉子結(jié)點只有1個。則該二叉樹的深度為(根結(jié)點在第1層)()。A、3B、6C、8D、12標(biāo)準(zhǔn)答案:D知識點解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。題目中的二叉樹的葉子結(jié)點為1,因此度為2的結(jié)點的數(shù)目為0,故該二叉樹為12層,每層只有一個結(jié)點。3、在深度為7的滿二叉樹中,葉子結(jié)點的個數(shù)為A、32B、31C、64D、63標(biāo)準(zhǔn)答案:C知識點解析:所謂滿二叉樹是指這樣的一種二叉樹:除最后一層外,每一層上的所有結(jié)點都有兩個子結(jié)點。也就是在滿二叉樹中,每一層上的結(jié)點數(shù)都是最大結(jié)點數(shù),即在滿二叉樹的第k層上有2k-1個結(jié)點,且深度為m的滿二叉樹有2m-1個結(jié)點。對于深度為7的滿二叉樹,葉子結(jié)點所在的是第7層,一共有27-1=64個葉子結(jié)點。全部結(jié)點共27-1=127個。4、從工程管理角度看,軟件設(shè)計一般分為兩步完成,它們是()。A、概要設(shè)計與詳細(xì)設(shè)計B、數(shù)據(jù)設(shè)計與接口設(shè)計C、軟件結(jié)構(gòu)設(shè)計與數(shù)據(jù)設(shè)計D、過程設(shè)計與數(shù)據(jù)設(shè)計標(biāo)準(zhǔn)答案:A知識點解析:軟件設(shè)計是開發(fā)階段最重要的步驟。從工程管理的角度來看可分為兩步:概要設(shè)計和詳細(xì)設(shè)計。概要設(shè)計是將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu),確定系統(tǒng)級接口、全局?jǐn)?shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式;詳細(xì)設(shè)計是指確立每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用適應(yīng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。從技術(shù)觀點來看,軟件設(shè)計包括軟件結(jié)構(gòu)設(shè)計(定義軟件系統(tǒng)各主要部件之間的關(guān)系)、數(shù)據(jù)設(shè)計(將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu))、接口設(shè)計(描述軟件內(nèi)部、軟件與協(xié)作系統(tǒng)之間以及軟件與人之間如何通信)、過程設(shè)計(把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程)四個步驟。5、下列描述中正確的是()。A、軟件測試應(yīng)該由程序開發(fā)者來完成B、程序經(jīng)調(diào)試后一般不需要再測試C、軟件維護只包括對程序代碼的維護D、以上三種說法都不對標(biāo)準(zhǔn)答案:D知識點解析:為了達(dá)到好的測試效果,應(yīng)該由獨立的第三方進行測試工作。因為從心理學(xué)角度講,程序人員或設(shè)計方在測試自己的程序時,要采取客觀的態(tài)度是會不同程度地存在障礙的,所以選項A錯誤。在程序調(diào)試時,修改了一個錯誤的同時可能引入了新的錯誤,解決的辦法是在修改了錯誤之后,必須進行回歸測試,所以選項B錯誤。所謂軟件維護,就是將交付的軟件投入運行,并在運行使用中不斷地維護,根據(jù)新提出的需求進行必要而且可能的擴充和刪改,所以選項C錯誤。6、在E-R圖中,用來表示實體聯(lián)系的圖形是()。A、橢圓形B、矩形C、菱形D、三角形標(biāo)準(zhǔn)答案:C知識點解析:構(gòu)成E.R圖的基本要素是實體型、屬性和聯(lián)系,其表示方法為:實體型(Entity)一用矩形表示;屬性(Attribute)一用橢圓形表示,聯(lián)系(Relationship)一用菱形表示,菱形框內(nèi)寫明聯(lián)系名。7、定義如下枚舉類型enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};則下列語句正確的是()。A、表達(dá)式Wednesday=Friday的值是trueB、Dayday;day=3C、Dayday;day=Mondday+3D、Dayday;day=Tuesday+10標(biāo)準(zhǔn)答案:A知識點解析:enum<枚舉類型名>{<枚舉元素表>):其中:關(guān)鍵詞enum表示定義的是枚舉類型,枚舉類型名由標(biāo)識符組成,而枚舉元素表由枚舉元素或枚舉常量組成。其中enum{Monday,Tuesday,Wednesday,Thrusday,F(xiàn)riday=2}的值由0開始,即0,1,2,3。D中的本題中的枚舉類型中的數(shù)據(jù)值Wednesday為2,而Friday的值賦值為2,所以判斷Wednesday等于Friday的表達(dá)式值為真,即true。即選擇A。8、負(fù)責(zé)數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是A、數(shù)據(jù)定義語言B、數(shù)據(jù)管理語言C、數(shù)據(jù)操縱語言D、數(shù)據(jù)控制語言標(biāo)準(zhǔn)答案:C知識點解析:負(fù)責(zé)數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是數(shù)據(jù)操縱語言。9、下列語句中,正確的是()。A、char*myString="Hello-World!";B、charmyString="Hello-World!";C、charmyString[11]:="Hello-World!";D、charmyString[12]="Hello-World!";標(biāo)準(zhǔn)答案:A知識點解析:對于B來說,會造成溢出,對于C和D來說同樣如此,因為“Hello-world!”一個是12個字符組成,加上空字符一共13個,所以都會造成溢出,只有A是將字符串的地址賦給字符型指針。10、已知數(shù)組arr的定義如下:intarr[5]={1,2,3,4,5};下列語句中輸出結(jié)果不是2的是()。A、cout<<*arr+1<<end1;B、cout<<*(arr+1)<<end1;C、cout<<arr[1]<<end1;D、cout<<*art<<end1;標(biāo)準(zhǔn)答案:D知識點解析:因為一維數(shù)組arr[5]的首地址是第一數(shù)組元素的地址,所以選項D)中,輸出*arr的值就是數(shù)組arr[5]中第一數(shù)組元素l。其他選項都輸出數(shù)組arr[5]的第二元素2。11、下列是重載乘法運算符的函數(shù)原型聲明,其中錯誤的是()。A、MyClassoperator*(double,double);B、MyClassoperator*(double,MyClass);C、MyClassoperator*(MyClass,double);D、MyClassoperator*(MyClass,MyClass);標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是運算符重載。本題中,選項A重載運算符"*"使用的形參是兩個double,而系統(tǒng)中的"*"運算原本就能計算兩個double,所以這樣違反了重載函數(shù)的原則,當(dāng)執(zhí)行a*b這樣的表達(dá)式時,系統(tǒng)不能識別是否執(zhí)行運算符重載函數(shù)。故答案是A選項。12、已知函數(shù)fun的原型為intfun(int,int,int);下列重載函數(shù)原型中錯誤的是()。A、charfun(int,int);B、doublefun(int,int,double);C、intfun(int.char*);D、floatfun(int,int,int);標(biāo)準(zhǔn)答案:D知識點解析:重載函數(shù)至少要在參數(shù)個數(shù)或參數(shù)類型上不同。而選項D中的函數(shù)與原函數(shù)只是函數(shù)類型不同,而其他完全相同(參數(shù)個數(shù)及類型),則不能作為重載函數(shù)來使用。13、下列關(guān)于函數(shù)重載的敘述中,錯誤的是()。A、重載函數(shù)的參數(shù)個數(shù)可以不同B、重載函數(shù)的參數(shù)類型可以不向C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)個數(shù)或參數(shù)類型必須有所不同標(biāo)準(zhǔn)答案:C知識點解析:兩個或兩個以上的函數(shù),具有相同的函數(shù)名,但是形參的個數(shù)或者類型不同,編譯器根據(jù)實參和形參的類型及個數(shù)進行最佳匹配,自動確定調(diào)用哪個函數(shù),這就是函數(shù)的重載。14、下列選項中,正確的C++標(biāo)識符是()。A、6_groupB、group~6C、age+3D、_group_6標(biāo)準(zhǔn)答案:D知識點解析:C++中標(biāo)識符的命名遵循如下規(guī)則:不能是C++關(guān)鍵字,第一個字母必須是字母或下劃線,中間不能有空格,變量名中不能包括“.”、“;”、“,”、“’”、“"”+-之類的特殊符號。總之標(biāo)識符中除了能使用26個英文大小寫字母和數(shù)字外,只能使用下劃線“”。15、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assSamp1e{friendlongfun(Samp1es);public:Samp1e(longa){x=a;}private:longx;);longfun(Samp1es){if(s.x<2)return1:returns.x*fun(Samp1e(s.x—1)):}intmain(){intsum=0;for(int1=0;1<6;1++){sum+=fun(Samp1e(i));}cout<<sum,returnO;}運行時輸出的結(jié)果是()。A、120B、16C、154D、34標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是友元函數(shù)和遞歸函數(shù)。因為fun函數(shù)是Samp1e類的友元函數(shù),所以fun函數(shù)可以直接訪問Samp1e類對象的私有成員x。主函數(shù)調(diào)用fun函數(shù),構(gòu)造參數(shù)為0~5。當(dāng)n小于2時,fun函數(shù)返回1,其余返回值為n*fun(n—l)。n取0—5的值時fun(n)依次為1,1,2,6,24,120,累加結(jié)果為154。16、有如下程序:#include<iostream>usingnamespacestd;classBASE{public:~BASE(){cout<<’’BASE’’;}};classDERiVED:publicBASE{public:~DERIVED(){tout<<’’DERiVED’’;}};intmain(){DERIVEDx;return0;}執(zhí)行后的輸出結(jié)果是()。A、BASEB、DERIVEDC、BASEDERlJVEDD、DERIVEDBASE標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是派生類的定義和使用。當(dāng)對象被刪除時,派生類的析構(gòu)函數(shù)就被執(zhí)行。由于析構(gòu)函數(shù)不能被繼承,因此在執(zhí)行派生類的析構(gòu)函數(shù)時,基類的析構(gòu)函數(shù)也將被調(diào)用。執(zhí)行順序是先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù),其順序與執(zhí)行構(gòu)造函數(shù)的順序正好相反。17、以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是()。A、publicB、staticC、protectedD、private標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是類的訪問權(quán)限。在C++語言中,類的訪問權(quán)限有公有、保護和私有三種。故本題選B。18、有如下程序:#include<iostream>usingnamespacestd;classA{public:A(){cout<<"A";}~A(){cout<<"~A";}};classB:publicA{A*p;public:B(){cout<<"B";p=newA();}~B(){cout<<"~B";deletep;}};intmain(){Bobj;return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、BAA~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是派生類對象的構(gòu)造與析構(gòu)。建立派生類對象時,構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),一調(diào)用順序按照各個基類被定義時聲明的順序(自左向右)->執(zhí)行成員對象的構(gòu)造函數(shù);調(diào)用順序按照各個成員對象在類中聲明的順序->執(zhí)行派生類的構(gòu)造函數(shù)。所以本題在建立派生類B的對象obj是會先調(diào)用基類A的構(gòu)造函數(shù),然后調(diào)用自身的構(gòu)造函數(shù)。注意:B類中定義的成員p是A類的指針而不是一個對象,故在調(diào)用自身構(gòu)造函數(shù)前不需要構(gòu)造。而在B類構(gòu)造函數(shù)中使用new操作符動態(tài)地構(gòu)造了一個A類的對象,所以整個構(gòu)造結(jié)果是輸出:ABA。派生類對象的析構(gòu)與構(gòu)造嚴(yán)格相反,即先析構(gòu)自身,然后析構(gòu)自身所包含的成員對象,最后調(diào)用基類的析構(gòu)函數(shù)。故本題中當(dāng)main()函數(shù)返回時,析構(gòu)B類的對象obj:首先調(diào)用~B(),接著再調(diào)用~A()因為在~B()函數(shù)中釋放了動態(tài)創(chuàng)建的A類對象,故整個析構(gòu)所輸出的結(jié)果是~B~A~A。所以這個程序輸出結(jié)果為ABA~B~A~A。19、有如下程序:#include<iostream>usingnamespacestd;classBase{public:Base(intx=0):valB(x){cout<<valB;}~Base(){cout<<valB;}private:intvalB;};classDerived:publicBase{public:Derived(intx=0,inty=0):Base(x),valD(y){cout<<valD;}~Derived(){cout<<valD;}private:intvalD;};in.tmain(){Derivedobj12(2,3);return0;}運行時的輸出結(jié)果是()。A、2332B、2323C、3232D、3223標(biāo)準(zhǔn)答案:A知識點解析:在主函數(shù)中創(chuàng)建類Derived對象obj12(2,3)時,因為類Derived是從基類Base派生而來,所以首先調(diào)用基類的構(gòu)造函數(shù);輸出2,再調(diào)用派生類構(gòu)造函數(shù),輸出3。當(dāng)主函數(shù)運算結(jié)果時,首先調(diào)用派生類的析構(gòu)函數(shù),輸出3,再調(diào)用基類的析構(gòu)函數(shù)輸出2。所以輸出結(jié)果為2332。20、有如下程序:#includeusingnamespacestd;classBoat;classCar{public:Car(inti):weight(i){)friendintTotal(constCar&c,constBoat&b);//①private:intweight;};classBoat{public:Boat(inti):weight(i){)friendintTotal(constCar&c,constBoat&b);private:intweight;};intTotal(constCar&c,constBoat&b){//②returnc.weight+b.weight;}intmain(){Carc(10);Boatb(8);cout<<"Thetotalweightis"<A、程序編譯正確B、程序編譯時語句①出錯C、程序編譯時語句②出錯D、程序編譯時語句③出錯標(biāo)準(zhǔn)答案:A知識點解析:程序中定義了類car和類Boat,在兩個類中分別定義他們的構(gòu)造函數(shù)和友元函數(shù)銜end。程序在vC6.0中編譯通過。21、下列關(guān)于運算符重載的敘述中,正確的是()。A、通過運算符重載,可以定義新的運算符B、有的運算符只能作為成員函數(shù)重載C、若重載運算符+,則相應(yīng)的運算符函數(shù)名是+D、重載一個二元運算符時,必須聲明兩個形參標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是運算符重載。C++中,“=”、“[]”、“()”、“->”以及所有的類型轉(zhuǎn)換符只能作為成員函數(shù)重載,故B選項正確;運算符重載只是賦予已有的運算符多重含義,并不是定義新的運算符;運算符函數(shù)的函數(shù)名就是在運算符前加上關(guān)鍵字operator。22、下列控制對齊方式的操作符中,錯誤的是()。A、internalB、centerC、leftD、right標(biāo)準(zhǔn)答案:B知識點解析:對齊方式的控制操作符left的含義是在設(shè)定的寬度內(nèi)左對齊輸出,右端填己設(shè)定的填充字符;right(此為默認(rèn)設(shè)置)在設(shè)定的寬度內(nèi)右對齊輸出:internal在設(shè)定的寬度內(nèi)右對齊輸出,但若有符號(一或+),符號置于最左端。23、在語句“cout<<’A’:”中,cout是()。A、類名B、對象名C、函數(shù)名D、C++的關(guān)鍵字標(biāo)準(zhǔn)答案:B知識點解析:C++有四個預(yù)定義的流對象:cin標(biāo)準(zhǔn)輸,cout標(biāo)準(zhǔn)輸出,cerr標(biāo)準(zhǔn)出錯信息輸出,clog帶緩沖的標(biāo)準(zhǔn)出錯信息輸出。24、有如下程序:#include#includeusingnamespacestd;intmain(){cout<A、##OK123B、##OK#123C、OK##123D、OK##123#標(biāo)準(zhǔn)答案:A知識點解析:setfill是設(shè)置填充字符,setw設(shè)置輸出的寬度,它們的作用表現(xiàn)在緊接著輸出的字符串上。這個寬度是填充后的寬度。所以cout<國家二級C++機試(選擇題)模擬試卷第4套一、選擇題(本題共21題,每題1.0分,共21分。)1、數(shù)據(jù)的存儲結(jié)構(gòu)是指()。A、存儲在外存中的數(shù)據(jù)B、數(shù)據(jù)所占的存儲空間量C、數(shù)據(jù)在計算機中的順序存儲方式D、數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示標(biāo)準(zhǔn)答案:D知識點解析:在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲關(guān)系,即為數(shù)據(jù)的存儲結(jié)構(gòu)。2、下列關(guān)于二叉樹的敘述中,正確的是()。A、葉子結(jié)點總是比度為2的結(jié)點少一個B、葉子結(jié)點總是比度為2的結(jié)點多一個C、葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍D、度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍標(biāo)準(zhǔn)答案:B知識點解析:由二叉樹的性質(zhì)可以知道在二叉樹中葉子結(jié)點總是比度為2的結(jié)點多一個。3、有如下程序:#includeusingnamespacestd;intmain(){inti,s=0;for(i=l;s<20;i+=2)s+=i*i;cout<<i<<endl;return0:)運行這個程序的輸出結(jié)果是()。A、3B、5C、7D、9標(biāo)準(zhǔn)答案: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。4、已知數(shù)組aft的定義如下:intarr[5]={1,2,3,4,5);下列語句中輸出結(jié)果不是2的是()。A、cout<<*arr+1<B、cout<<*(art+1)<C、cout<D、cout<<*art<標(biāo)準(zhǔn)答案:D知識點解析:因為一維數(shù)組arr[5]的首地址是第一數(shù)組元素的地址,所以選項D中,輸出*arr的值就是數(shù)組arr[5]中第一數(shù)組元素1。其他選項都輸出數(shù)組arr[5]的第二元素2。5、T列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是A、順序存儲的有序線性表B、線性鏈表C、二叉鏈表D、有序線性鏈表標(biāo)準(zhǔn)答案:A知識點解析:二分法查找只適應(yīng)于順序存儲的有序表。有序表是指線性表中的元素按值非遞減排序(即從小到大,但允許相鄰元素值相等)的表。6、有如下類的定義,橫線處的語句是()。classTestClass{_______intx,y;public:TestClass(inta=0,intb=0){x=a:y=b;}staticvoidchange(){y-=10;y-=10;}};A、publicB、privateC、staticD、protected標(biāo)準(zhǔn)答案:C知識點解析:因為staticvoidchange()為靜態(tài)函數(shù),靜態(tài)函數(shù)主要訪問靜態(tài)數(shù)據(jù),不訪問非靜態(tài)數(shù)據(jù)。所以函數(shù)中訪問了數(shù)據(jù)y,所以下劃線的數(shù)據(jù)類型應(yīng)對應(yīng)為static。7、軟件生命周期可分為定義階段,開發(fā)階段和維護階段。詳細(xì)設(shè)計屬于()。A、定義階段B、開發(fā)階段C、維護階段D、上述三個階段標(biāo)準(zhǔn)答案:B知識點解析:本題考查軟件生命周期的相關(guān)概念.通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。一般包括可行性研究與需求分析、設(shè)計、實現(xiàn)、測試、交付使用以及維護等活動。還可以將軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護三個階段。8、下列關(guān)于構(gòu)造函數(shù)的描述中,錯誤的是()。A、構(gòu)造函數(shù)可以設(shè)置默認(rèn)的參數(shù)B、構(gòu)造函數(shù)在定義類對象時自動執(zhí)行C、構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù)D、構(gòu)造函數(shù)不可以重載標(biāo)準(zhǔn)答案:D知識點解析:在一個類中可以定義多個構(gòu)造函數(shù),以便對類對象提供不同的初始化的方法,供用戶選用。這些構(gòu)造函數(shù)具有相同的名字,而參數(shù)的個數(shù)或參數(shù)的類型不相同。9、在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是()。A、程序內(nèi)部邏輯B、程序外部功能C、程序數(shù)據(jù)結(jié)構(gòu)D、程序流程圖標(biāo)準(zhǔn)答案:B知識點解析:黑盒測試法指的是根據(jù)程序的外部功能,把程序本身看成一個黑盒子,設(shè)計測試用例來驗證程序外部功能的正確性。10、有如下程序:#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3;Funfun1;constFunfun2;______________return0;}若程序的輸出結(jié)果是:123則程序中橫線處的語句是()。A、cout<<fun1.value()<<Fun::i<<fun2.value();B、cout<<Fun::i<<fun1.value()<<fun2.value();C、cout<<fun1.value0<<fun2.value()<<Fun::i;D、cout<<fun2.Value()<<Fun::i<<fun1.value();標(biāo)準(zhǔn)答案:A知識點解析:此題因為定義的變量i是static類型的(main()函數(shù)內(nèi)部的i只是一個局部變量),所以,選項A)中fun1.value()的返回值是1,.Fun::i引用的是外部變量會輸出2;fun2.value();會調(diào)用常成員函數(shù)intvalue()const{retuni+1;}使得外部靜態(tài)變量i的值增加為3,故輸出3。11、下列描述中錯誤的是()。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è)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫D、數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持標(biāo)準(zhǔn)答案:A知識點解析:在數(shù)據(jù)庫系統(tǒng)中,物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)、存取方式等)的改變,如存儲設(shè)備的更換、物理存儲的更換、存取方式改變等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化。12、在滿足實體完整性約束的條件下()。A、一個關(guān)系中應(yīng)該有一個或多個候選關(guān)鍵字B、一個關(guān)系中只能有一個候選關(guān)鍵字C、一個關(guān)系中必須有多個候選關(guān)鍵字D、一個關(guān)系中可以沒有候選關(guān)鍵字標(biāo)準(zhǔn)答案:A知識點解析:在關(guān)系數(shù)據(jù)庫中,實體完整性的概念是主屬性不能為空。在滿足實體完整性的前提下,必須在關(guān)系中存在主屬性,也就是在關(guān)系中應(yīng)該有候選關(guān)鍵字。一個關(guān)系中可以有一個或者多個候選關(guān)鍵字。13、有如下類定義:classMyClass{intvalue;public:MyClass(intn):value(n){}intgetValue()const{returnvalue;}};則類MyClass的構(gòu)造函數(shù)的個數(shù)是()。A、1個B、2個C、3個D、4個標(biāo)準(zhǔn)答案:B知識點解析:本題考查類的默認(rèn)構(gòu)造函數(shù)和自定義的構(gòu)造函數(shù)。本題中MyClass(intn):value(n){}為自定義的構(gòu)造函數(shù),加上默認(rèn)構(gòu)造函數(shù),一共有2個構(gòu)造函數(shù)。14、下列字符串中,正確的C++標(biāo)識符是()。A、foo-1B、2bC、newD、256標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是C++語言中標(biāo)識符的定義。標(biāo)識符由字母、數(shù)字或下劃線構(gòu)成,但第一個字符必須是字母或下劃線;標(biāo)識符中大小寫字母是不同的;用戶定義標(biāo)識符時,不允許采用系統(tǒng)的關(guān)鍵字。15、字符串“a+b=12\n\t”的長度為()。A、12B、10C、8D、6標(biāo)準(zhǔn)答案:C知識點解析:題目給出的字符串含有7個字符,再加字符串的結(jié)束字符,所以共8個字符。16、由關(guān)系R1和R2得到關(guān)系R3的操作是A、等值連接B、并C、笛卡爾積D、交標(biāo)準(zhǔn)答案:A知識點解析:等值連接是關(guān)系運算.連接運算的一種常用的連接方式。是條件連接(或稱0連接)在連接運算符為“=”號時,即θ=0時的一個特例。17、有如下程序:#includeusingnamespacestd;voidf1(int&x,int&y){intz=x;x=y;y=z;}voidf2(intx,inty){intz=x;x=y;y=z;}intmain(){intx=10,y=26;f1(x,y);f2(x,y);cout<A、10B、16C、26D、36標(biāo)準(zhǔn)答案:A知識點解析:子函數(shù)f1中的形參是引用變量,所以執(zhí)行子函數(shù)實現(xiàn)了變量x,y值的交換,變量x的值等于26,而變量y的值等于10。而子函數(shù)f2中的形參是普通變量,因為C++的函數(shù)之間的參數(shù)傳遞是傳值,所以執(zhí)行函數(shù)f2不能實現(xiàn)變量x,y值的交換。18、若有如下類聲明classMyClass{public:MyClass(){cout<<1;}};執(zhí)行下列語句MyClassa,b[2],*p[2]:以后,程序的輸出結(jié)果是()。A、11B、111C、1111D、11111標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是對象的構(gòu)造。本題共聲明了一個MyClass對象a,一個包含2個MyClass對象的數(shù)組b和一個包含2個MyClass對象指針的數(shù)組p,所以一共創(chuàng)建了3個MyClass類的對象,即調(diào)用了3次構(gòu)造函數(shù)。19、有如下兩個類定義classxx{private:dOublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;potected:doubley2;public:doubley3;};在類YY中保護成員變量的個數(shù)是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識點解析:在C++中派生類從基類保護繼承時,基類的公有成員在派生類中改變?yōu)楸Wo成員,基類的保護成員在派生類中仍為保護成員。所以對于本題來說,YY類保護繼承自類XX,那么類XX中的公有成員x3和保護成員x2在派生類中都成為保護成員,再加上類YY。中的保護成員y2,因此在派生類YY中保護成員的個數(shù)為3。20、下列關(guān)于類成員對象構(gòu)造函數(shù)調(diào)用順序的敘述中,正確的是()。A、與它們在初始化列表中的順序相同B、與它們在類中聲明的順序相同C、與析構(gòu)函數(shù)的調(diào)用順序相同D、順序不確定標(biāo)準(zhǔn)答案:B知識點解析:類成員對象構(gòu)造函數(shù)的調(diào)用是按照在類中定義的順序進行的,而不是按照構(gòu)造函數(shù)說明后的冒號順序進行構(gòu)造的。21、在定義一個類模板時,模板形參表是用一對括號括起來的,所采用的括號是()。A、()B、[]C、<>D、{)標(biāo)準(zhǔn)答案:C知識點解析:聲明一個類模板的格式是:template<<模板形參聲明>><類聲明>。國家二級C++機試(選擇題)模擬試卷第5套一、選擇題(本題共20題,每題1.0分,共20分。)1、一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棧的順序是()。A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA標(biāo)準(zhǔn)答案:B知識點解析:棧是按照“先進后出”或“后進先出”的原則組織數(shù)據(jù)的。所以出棧順序是EDCBA54321。2、有如下程序段:運行時的輸出結(jié)果是()。A、44B、41C、88D、81標(biāo)準(zhǔn)答案:C知識點解析:這個程序定義了全局整型對象i和j,其值分別等于4和1。而在主函數(shù)中定義了局部整型對象i和j,i值賦予8,再把i值賦給j,接著輸出i和j的值,所以其結(jié)果為88。這個題目要注意的一點是,全局整型對象i和j和主函數(shù)中定義了局部整型對象i和j,在計算機內(nèi)存中表示的是不同的存儲單元。它們的值是獨自存放的,互相不同。3、設(shè)循環(huán)隊列的存儲空間為Q(1:35),初始狀態(tài)為front=rear=35?,F(xiàn)經(jīng)過一系列入隊與退隊運算后,front=15,reaF15,則循環(huán)隊列中的元素個數(shù)為()。A、15B、16C、20D、0或35標(biāo)準(zhǔn)答案:D知識點解析:循環(huán)隊列的隊頭指針和尾指針都等于15,此循環(huán)隊列中元素的個數(shù)有兩種情況,第一種情況是隊頭指針和尾指針都是第一次到達(dá)15,此時元素個數(shù)為O:第二種情況是隊頭指針第一次到達(dá)l5,而尾指針第二次到達(dá)15,此時元素個數(shù)為35。4、某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是()。A、10B、8C、6D、4標(biāo)準(zhǔn)答案:C知識點解析:根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。5、有如下程序:#include<iostream>usingnamespacestd;classTestClass{protected:TestClass(){cout<<’x’;}TestClass(charc){cout<<c;}};classTestClass1:publicTestClass{public:TestClass1(charc){cout<<c;}};intmain(){TestClass1d1(’y’);return0:}執(zhí)行這個程序,屏幕上將顯示輸出()。A、yB、yxC、xyD、yy標(biāo)準(zhǔn)答案:C知識點解析:程序中的類TestClass為基類,TestClass1為TestClass的派生類。由:main主函數(shù)入手,定義TestClass1類型的對象d1,參數(shù)值為’y’。TestClass1類繼承TestClass,所以主函數(shù)中“TestClass1d1(’y’);”語句首先調(diào)用調(diào)用基類中的“TestClass(){cout<<’x’;}”輸出x,然后調(diào)用“TestClass1(charc){cout<<c;}”輸出y,即答案為“xy”。6、下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中,正確的是()。A、內(nèi)聯(lián)函數(shù)在調(diào)用時發(fā)生控制轉(zhuǎn)移B、內(nèi)聯(lián)函數(shù)必須通過關(guān)鍵字inline來定義C、內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的D、內(nèi)聯(lián)函數(shù)函數(shù)體的最后一條語句必須是return語句標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是內(nèi)聯(lián)函數(shù)的概念。在調(diào)用時,內(nèi)聯(lián)函數(shù)會像宏函數(shù)一樣的展開,將調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換所以它沒有一般函數(shù)的參數(shù)壓棧和和退棧操作,所以選項A錯誤;即使沒有使用。inline說明,編譯器也會將在類的說明部分定義的函數(shù)認(rèn)定為內(nèi)聯(lián)函數(shù),所以選項B錯誤;內(nèi)聯(lián)函數(shù)只是比普通函數(shù)有更高的執(zhí)行效率,所以選項D錯誤。7、若PAT是一個類,則程序運行時,語句“PAT{*ad)[3];”調(diào)用PAT的構(gòu)造函數(shù)的次數(shù)是()。A、0B、1C、2D、3標(biāo)準(zhǔn)答案:A知識點解析:語句“PAT(*ad)[3]”定義了含有3個元素的指向類PP/T類型的指針數(shù)組ad。8、有如下程序:#ncludeusingnamespacestd;classVAC{public;intf()const{return3;}intf(){return5;)};Intmain(){VACvl;constVACv2;cout<A、53B、35C、55D、33標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是常成員函數(shù)的應(yīng)用。VAC類中說明了兩個函數(shù),一個是常成員函數(shù),一個是普通函數(shù):在主函數(shù)中說明了兩個對象,通過普通對象vl調(diào)用的是普通函數(shù),輸出5;通過常對象V2調(diào)用的是常成員函數(shù),輸出3。9、下列符號中不屬于C++關(guān)鍵字的是()。A、friendB、namespaceC、continueD、byte標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是C++語言的關(guān)鍵字。Friend是聲明友元函數(shù)或友元類時用到的關(guān)鍵字;namespace是定義或使用名字空間時用到的關(guān)鍵字;continue是終止本次循環(huán)直接開始下一次循環(huán)所用到的關(guān)鍵字;byte是字節(jié)的意思,它不是C++語言中的關(guān)鍵字。10、若x和y是程序中的兩個整型變量,則下列if語句中正確的是()。A、if(x==0)y=1;elsey=2;B、if(x==0)theny=1elsey=2;C、if(x==0)y=1elsey=2;D、if(x==0)y=1;elsey=2;標(biāo)準(zhǔn)答案:A知識點解析:ifelse語句的形式為:if(<條件>)<語句1>else<語句2>所以符合以上形式的ifelse語句為選

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論