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

下載本文檔

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

文檔簡介

國家二級C++機(jī)試(選擇題)模擬試卷4(共9套)(共345題)國家二級C++機(jī)試(選擇題)模擬試卷第1套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列關(guān)于算法復(fù)雜度敘述正確的是A、最壞情況下的時間復(fù)雜度一定高于平均情況的時間復(fù)雜度B、時間復(fù)雜度與所用的計(jì)算工具無關(guān)C、對同一個問題,采用不同的算法,則它們的時間復(fù)雜度是相同的D、時間復(fù)雜度與采用的算法描述語言有關(guān)標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:算法的時間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量,它與使用的計(jì)算機(jī)、程序設(shè)計(jì)語言以及算法實(shí)現(xiàn)過程中的許多細(xì)節(jié)無關(guān),B選項(xiàng)正確,D選項(xiàng)錯誤。最壞情況下的時間復(fù)雜度可以與平均情況的時間復(fù)雜度相同,A選項(xiàng)錯誤。不同的算法時間復(fù)雜度一般不相同,C選項(xiàng)錯誤。2、設(shè)有棧S和隊(duì)列Q,初始狀態(tài)均為空。首先依次將A,B,C,D,E,F入棧,然后從棧中退出三個元素依次入隊(duì),再將X,Y,Z入棧后,將棧中所有元素退出并依次入隊(duì),最后將隊(duì)列中所有元素退出,則退隊(duì)元素的順序?yàn)锳、DEFXYZABCB、DEFXYZABCC、FEDXYZCBAD、DEFZYXABC標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:棧是一種特殊的線性表,它所有的插入與刪除都限定在表的同一端進(jìn)行。隊(duì)列是指允許在一端進(jìn)行插入,而在另一端進(jìn)行刪除的線性表。將A,B,C,D,E,F入棧后,棧中元素為ABCDEF,退出三個元素入隊(duì),隊(duì)列元素為FED,將X,Y,Z入棧后棧中元素為ABCXYZ,全部入隊(duì)后,隊(duì)列元素為FEDZYXCBA,故B選項(xiàng)正確。3、下列敘述中正確的是A、有兩個指針域的鏈表稱為二叉鏈表B、循環(huán)鏈表是循環(huán)隊(duì)列的鏈?zhǔn)酱鎯Y(jié)構(gòu)C、帶鏈的棧有棧頂指針和棧底指針,因此又稱為雙重鏈表D、結(jié)點(diǎn)中具有多個指針域的鏈表稱為多重鏈表標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:雙向鏈表與二叉鏈表均是有兩個指針域的鏈表,A選項(xiàng)錯誤。在單鏈表的第一個結(jié)點(diǎn)前增加一個表頭結(jié)點(diǎn),隊(duì)頭指針指向表頭結(jié)點(diǎn),最后一個結(jié)點(diǎn)的指針域的值由NULL改為指向表頭結(jié)點(diǎn),這樣的鏈表稱為循環(huán)鏈表。循環(huán)隊(duì)列是隊(duì)列的一種順序存儲結(jié)構(gòu)。循環(huán)鏈表與循環(huán)隊(duì)列是兩種存儲結(jié)構(gòu),B選項(xiàng)錯誤。雙向鏈表結(jié)點(diǎn)有兩個指針域,指向前一個結(jié)點(diǎn)的指針和指向后一個結(jié)點(diǎn)的指針,而帶鏈的棧是單鏈表形式,C選項(xiàng)錯誤。故正確答案為D選項(xiàng)。4、某二叉樹共有845個結(jié)點(diǎn),其中葉子結(jié)點(diǎn)有45個,則度為1的結(jié)點(diǎn)數(shù)為A、400B、754C、756D、不確定標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:在樹結(jié)構(gòu)中,一個結(jié)點(diǎn)所擁有的后件個數(shù)稱為該結(jié)點(diǎn)的度,所有結(jié)點(diǎn)中最大的度稱為樹的度。對任何一棵二叉樹,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個。二叉樹共有845個結(jié)點(diǎn),度為0的結(jié)點(diǎn)有45個,度為1的結(jié)點(diǎn)數(shù)為n1,度為2的結(jié)點(diǎn)數(shù)為n2,則845=45+n1+n2,且45=n2+1,則n1=756,C選項(xiàng)正確。5、軟件需求分析階段的主要任務(wù)是A、確定軟件開發(fā)方法B、確定軟件開發(fā)工具C、確定軟件開發(fā)計(jì)劃D、確定軟件系統(tǒng)的功能標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:需求分析階段的工作可以分為4個方面:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評審,包括確定軟件系統(tǒng)的功能,D選項(xiàng)正確。A、B、C選項(xiàng)均為開發(fā)階段工作。6、下面對軟件測試描述錯誤的是A、嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性B、隨機(jī)地選取測試數(shù)據(jù)C、隨機(jī)地選取測試數(shù)據(jù)D、軟件測試是保證軟件質(zhì)量的重要手段標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:在測試之前制定測試計(jì)劃,并嚴(yán)格執(zhí)行,測試用例的選擇不可隨意,應(yīng)選擇有代表性的,盡可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤,A選項(xiàng)敘述正確,B選項(xiàng)敘述錯誤。測試根本目的是盡可能多地發(fā)現(xiàn)并排除軟件中隱藏的錯誤,C選項(xiàng)敘述正確。軟件測試是保證軟件質(zhì)量、可靠性的關(guān)鍵步驟,D選項(xiàng)敘述正確。故正確答案為B選項(xiàng)。7、結(jié)構(gòu)化程序的三種基本控制結(jié)構(gòu)是A、順序、選擇和重復(fù)(循環(huán))B、過程、子程序和分程序C、順序、選擇和調(diào)用D、調(diào)用、返回和轉(zhuǎn)移標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:結(jié)構(gòu)化程序的三種基本控制結(jié)構(gòu):順序、選擇和重復(fù),故A選項(xiàng)正確。8、數(shù)據(jù)庫中對概念模式內(nèi)容進(jìn)行說明的語言是A、數(shù)據(jù)定義語言B、數(shù)據(jù)操縱語言C、數(shù)據(jù)控制語言D、數(shù)據(jù)宿主型語言標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:數(shù)據(jù)庫管理系統(tǒng)為完成主要功能提供了相應(yīng)的數(shù)據(jù)語言,它們是:數(shù)據(jù)定義語言,該語言負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語言,該語言負(fù)責(zé)數(shù)據(jù)的操縱,包括查詢與增、刪、改等操作;數(shù)據(jù)控制語言,該語言負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復(fù)等功能。故A選項(xiàng)正確。9、某個工廠有若干個倉庫,每個倉庫存放有不同的零件,相同零件可能放在不同的倉庫中。則實(shí)體倉庫和零件間的聯(lián)系是A、多對多B、一對多C、多對一D、一對一標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:一般來說,實(shí)體集之間必須通過聯(lián)系來建立聯(lián)接關(guān)系,分為三類:一對一聯(lián)系(1:1)、一對多聯(lián)系(1:m)、多對多聯(lián)系(m:n)。每個倉庫存放有不同的零件,相同零件可能放在不同的倉庫中,故實(shí)體倉庫和零件間的聯(lián)系是多對多,A選項(xiàng)正確。10、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是A、交B、差C、并D、選擇標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:用于查詢的3個操作無法用傳統(tǒng)的集合運(yùn)算表示,引入的運(yùn)算為投影運(yùn)算、選擇運(yùn)算、笛卡爾積。常用的擴(kuò)充運(yùn)算有交、除、連接及自然連接等。選擇,從關(guān)系中找出滿足給定條件的元組的操作稱為選擇,題目中無給定條件,故D選項(xiàng)錯誤。差:R-S結(jié)果是屬于R但不屬于S的記錄組成的集合,T中元組"c32"同時屬于R和S,B選項(xiàng)錯誤。并:R∪S是將S中的記錄追加到R后面,T中元組少于R,故C選項(xiàng)錯誤。交:R∩S結(jié)果是既屬于R又屬于S的記錄組成的集合,與題目中結(jié)果相符,故A選項(xiàng)正確。11、下列選項(xiàng)中,正確的C++標(biāo)識符是A、a^3B、a-3C、a’3D、a_3標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:C++的標(biāo)識符由字母、數(shù)字和下劃線組成,其中必須以字母或下劃線開頭。A、B、C錯誤,答案為D。12、下列選項(xiàng)中,正確的C++表達(dá)式是A、a1+B、b++2C、3=cD、-d4標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:選項(xiàng)A中,"+"運(yùn)算符作為一元運(yùn)算符,應(yīng)該放在操作數(shù)之前,返回操作數(shù)本身;作為二元運(yùn)算符,必須作用于兩個操作數(shù);選項(xiàng)B中,"++"運(yùn)算符是一元運(yùn)算符,只能作用于一個操作數(shù);選項(xiàng)C中,3是常量,不能用作賦值操作符的左值;選項(xiàng)D正確,"-"操作符作為一元運(yùn)算符,放在操作數(shù)之前,對其操作數(shù)取負(fù);答案為D。13、要定義整型數(shù)組x,使之包括初值為1的三個元素,下列語句正確的是A、staticintx[3]={1};B、intx[3];x[1]=x[2]=x[3]=1;C、intx[3]={1,1,1};D、intx={1,1,1};標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:選項(xiàng)A中,數(shù)組x的后兩個元素初值默認(rèn)為0;選項(xiàng)B中,數(shù)組下標(biāo)從0開始,x[0]未賦初值,x[3]訪問越界;選項(xiàng)D中,x是整型變量,不是整型數(shù)組,賦值語法錯誤;只有C正確,定義整型數(shù)組x,并對三個元素賦初值為1;答案為C。14、常量4.2,4.2f,4L的數(shù)據(jù)類型分別是A、float、float、doubleB、double、float、longC、double、double、floatD、float、float、long標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:常量4.2是浮點(diǎn)型常量,一般按雙精度處理,是double型;4.2f按單精度處理,是float型;4L是long型。答案為B。15、設(shè)變量x和y為整型變量,若有函數(shù)調(diào)用為"fun(&x,&y)",則下列選項(xiàng)中,能夠作為函數(shù)fun原型聲明的是A、voidfun(int&a,int&b);B、voidfun(int&a,int*b);C、voidfun(int*a,int&b);D、voidfun(int*a,int*b)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:fun(&x,&y),函數(shù)調(diào)用參數(shù)列表中傳遞的是變量x,y的地址,所以函數(shù)原型聲明的形參列表中參數(shù)應(yīng)該是兩個整型變量地址,A、B、C選項(xiàng)中都包含引用傳遞,不正確;答案為D。16、下列關(guān)于函數(shù)參數(shù)的敘述中,錯誤的是A、函數(shù)的實(shí)參與形參應(yīng)該一一匹配B、定義函數(shù)時必須給出函數(shù)的實(shí)參C、函數(shù)形參可以看做函數(shù)的局部變量D、C++中可以為形參指定默認(rèn)值標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:函數(shù)定義時,形參列表若不為空,需要給出函數(shù)的形參;調(diào)用函數(shù)時,參數(shù)列表若不為空,必須給出函數(shù)的實(shí)參;選項(xiàng)A、C、D正確,選項(xiàng)B錯誤;答案為B。17、下列選項(xiàng)中,不是重載函數(shù)調(diào)用時選擇依據(jù)的是A、參數(shù)個數(shù)B、參數(shù)類型C、參數(shù)名稱D、函數(shù)名稱標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:重載函數(shù)調(diào)用時首先要從函數(shù)名稱相同的候選函數(shù)中選擇可行函數(shù),可行函數(shù)必須滿足兩個條件:1、函數(shù)的形參個數(shù)與該調(diào)用的實(shí)參個數(shù)相同;2、每個實(shí)參的類型必須與對應(yīng)形參的類型匹配,或者可被隱式轉(zhuǎn)換為對應(yīng)的形參類型。參數(shù)名稱可以不相同,答案選C。18、若為類MyClass重載運(yùn)算符"+",下列聲明中,錯誤的是A、friendMyClassoperator+(double,double);B、friendMyClassoperator+(double,MyClass);C、friendMyClassoperator+(MyClass,double);D、friendMyClassoperator+(MyClass,MyClass);標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:重載運(yùn)算符必須具有一個類類型的操作數(shù),這條規(guī)則強(qiáng)制重載運(yùn)算符不能重新定義用于內(nèi)置類型對象的運(yùn)算符。選項(xiàng)B、C、D正確,A錯誤,答案為A。19、有如下程序:#includeusingnamespacestd;voidfun(int&x,inty){y=y+x;x=y/4;x++;}intmain(){intx=4,y=5;fun(x,y);cout<A、4,5B、3,5C、3,9D、2,5標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:函數(shù)fun的形參x為引用類型,函數(shù)功能是將形參x與y之和除以4的結(jié)果賦給x,再對x自增1,通過引用類型修改實(shí)參;main函數(shù)中定義x=4,y=5,所以通過函數(shù)fun的調(diào)用,x的值被修改為:(4+5)/4+1=3,而y的值不變,所以程序輸出3,5;答案為B。20、有如下程序:#includeusingnamespacestd;voidfun(int&x,int&y){y=y+x;x=y/4;x++;}intmain(){intx=4,y=5;fun(x,y);cout<A、4,5B、3,5C、3,9D、2,5標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:函數(shù)fun兩個形參x,y都是引用類型,函數(shù)功能是通過形參的引用類型修改實(shí)參值,首先修改y值為x、y之和;然后將修改后的y值除以4,結(jié)果賦給x,再將x自增1;main函數(shù)中定義x=4,y=5,通過fun函數(shù)的調(diào)用,修改y的值為4+5=9,x的值為9/4+1=3,最終輸出結(jié)果為3,9,答案為C。21、有如下類定義:classMyClass{public:MyClass(doubled=0.0):val(d){}______________//運(yùn)算符函數(shù)-的聲明private:doubleval;};若要使語句序列MyClassy(4.6),z;z=6.7-y;能夠正常運(yùn)行,橫線處的聲明語句應(yīng)為A、friendMyClassoperator-(MyClass&,MyClass&);B、friendMyClassoperator-(double,MyClass);C、friendMyClassoperator-(MyClass&,double);D、friendMyClassoperator-(double&,MyClass&);標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:由調(diào)用函數(shù)6.7-y可知,double類型在運(yùn)算符"-"的左邊,應(yīng)該作為運(yùn)算符函數(shù)"-"的第一形參,選項(xiàng)A、C錯誤;由于運(yùn)算符"-"函數(shù)并不改變操作數(shù)的狀態(tài),所以形參應(yīng)該聲明為const對象的引用,或者按值傳遞,參數(shù)按引用類型傳遞可能會改變操作數(shù)的狀態(tài),選項(xiàng)D錯誤;答案為B。22、有如下兩個類定義:classAA{};classBB{AAv1,*v2;BBv3,*v4;};其中定義錯誤的成員變量是A、v1B、v2,v4C、v3D、v3,v4標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:只有類定義或者聲明在當(dāng)前定義類前面出現(xiàn)過,數(shù)據(jù)成員才能被指定為該類類型,類AA已經(jīng)完成定義,v1,v2正確;類不能具有自身類型的數(shù)據(jù)成員,只要類名出現(xiàn)就可以認(rèn)為該類已經(jīng)聲明,類的數(shù)據(jù)成員就可以是指向自身類型的指針或引用,類BB在聲明之后,定義之前是一個不完全類型,其數(shù)據(jù)成員只能是指向BB類型的指針或引用,v4正確,v3錯誤;答案為C。23、有如下類定義:classBase{public:voidfun(){cout<<"Base::fun"<A、Base.fun();B、Base->fun();C、Base::fun();D、fun();標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:基類Base和派生類Derived中使用同一名字的成員函數(shù)fun,所以在派生類Derived的作用域中,派生類Derived中的fun函數(shù)會屏蔽基類Base中的fun函數(shù),即Base的fun函數(shù)對Derived不可見,這是因?yàn)榫幾g器在查找名字fun時,首先在Derived中找到,這樣編譯器就不再繼續(xù)查找,所以若想在Derived中調(diào)用Base的fun函數(shù),必須顯式的說明fun函數(shù)屬于Base,這里使用作用域運(yùn)算符訪問被屏蔽的fun,調(diào)用語句為:Base::fun();答案為C。24、如果派生類以protected方式繼承基類,則基類中的保護(hù)成員在派生類中的訪問屬性是A、publicB、protectedC、privateD、protected或public標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:protected方式繼承中,基類的public和protected成員在派生類中為protected成員,答案為B。25、有如下兩個類定義:classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;protected:doubley2;public:doubley3;};在派生類YY中的保護(hù)成員的個數(shù)是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:類YY以protected方式繼承類XX,所以類XX中的public成員和protected成員在YY中為protected成員,所以YY中的protected成員有:x2,x3,y2,答案為C。26、有如下類聲明:classWhat{intn;public:doubled;private:charc;};類What的公有數(shù)據(jù)成員和私有數(shù)據(jù)成員的數(shù)量分別是A、1和1B、1和2C、2和1D、2和2標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:class關(guān)鍵字定義的類,成員默認(rèn)的訪問級別是私有的,所以類What中公有成員有d,私有成員有n,c;答案為B。27、除了顯式定義的構(gòu)造函數(shù)外,類中還有可能包含編譯器自動生成的構(gòu)造函數(shù),因此一個類所擁有的構(gòu)造函數(shù)的至少有A、1個B、2個C、3個D、4個標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:一個類,如果沒有顯示定義的構(gòu)造函數(shù),那么編譯器自動生成一個構(gòu)造函數(shù);一個類,如果顯示定義了構(gòu)造函數(shù),無論個數(shù)多少,編譯器也不會再生成任何構(gòu)造函數(shù),所以一個類所擁有的構(gòu)造函數(shù)至少有1個,答案為A。28、有如下類聲明:classHow{intk;public:How():k(99){}};則類How所擁有的構(gòu)造函數(shù)的數(shù)量是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:首先類How定義了一個默認(rèn)構(gòu)造函數(shù)How(),因而編譯器不會自動生成默認(rèn)構(gòu)造函數(shù);其次How中需要一個復(fù)制構(gòu)造函數(shù),這由編譯器自動生成,所以How有兩個構(gòu)造函數(shù),答案為B。29、在下面的類聲明中,錯誤的是A、classAA{BBb;};classBB{AAa;};B、classAA{AA*a;};classBB{BB&b;};C、classBB;classAA{BB*b;};classBB{AAa;};D、classAA;classBB{AA&a;};classAA{BBb;};標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:在創(chuàng)建類的對象之前,必須完整的定義該類,在一個類的聲明之后,定義之前,這個類是一個不完全類型,對于不完全類型,只能用于定義指向該類型的指針及引用,或者用于聲明(不是定義)使用該類型作為形參類型或返回類型的函數(shù);選項(xiàng)A中,類A中的BB還未定義(也未聲明),無法創(chuàng)建BB類對象,錯誤;選項(xiàng)B中,聲明之后定義的是指針或引用,正確;選項(xiàng)C中,聲明BB之后定義BB類的指針,定義AA之后創(chuàng)建AA類的對象,正確;選項(xiàng)D中,聲明AA之后定義AA類的引用,定義BB之后創(chuàng)建BB類的對象,正確;答案為A。30、有如下類聲明和函數(shù)聲明:classBase{intm;public:intn;protected:intp;};classDerived:publicBase{intk;};voidf(Derivedd);則允許函數(shù)f訪問的參數(shù)d的數(shù)據(jù)成員的個數(shù)是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:C++中,以class關(guān)鍵字定義的類默認(rèn)的訪問級別為private,另外對于公有繼承,基類成員保持自己的訪問級別(private成員除外),即基類的public成員為派生類的public成員,基類的protected成員為派生類的protected成員;本題中,Derived類以public方式繼承Base,所以Derived中public成員有:n,protected成員有:p,private成員有:k,不可見的成員有:m;這些成員中,對Derived類對象可見的只有public成員n,答案為A。31、有如下類聲明:classHow{intk;public:~How(){cout<<"Bye";}};則類How所擁有的構(gòu)造函數(shù)的數(shù)量是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:在類How定義中沒有定義任何構(gòu)造函數(shù),所以編譯器會自動生成一個默認(rèn)構(gòu)造函數(shù),同時還生成復(fù)制構(gòu)造函數(shù),所以類How擁有兩個構(gòu)造函數(shù),答案為B。32、有如下程序:#includeusingnamespacestd;classBase1{public:Base1(){}~Base1(){cout<<"b1";}};classBase2{public:Base2(){}~Base2(){cout<<"b2";}};classDerived:publicBase2,publicBase1{public:Derived(){}~Derived(){cout<<’d’;}};intmain(){Derivedobj;return0;}運(yùn)行這個程序的輸出是A、b1b2dB、b2b1dC、db1b2D、db2b1標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:派生類構(gòu)造函數(shù)都是先調(diào)用基類構(gòu)造函數(shù),再根據(jù)聲明次序定義數(shù)據(jù)成員,另外對于多繼承,派生類的構(gòu)造函數(shù)初始化列表中,基類構(gòu)造函數(shù)是按照基類在派生類的派生列表中出現(xiàn)的次序調(diào)用的;由于Derived類的派生列表中,Base2在前,所以應(yīng)該先調(diào)用Base2的構(gòu)造函數(shù),再調(diào)用Base1的構(gòu)造函數(shù);銷毀派生類對象時,總是按照構(gòu)造函數(shù)運(yùn)行次序的相反順序調(diào)用析構(gòu)函數(shù),首先運(yùn)行派生類析構(gòu)函數(shù),然后按繼承層次依次向上調(diào)用各基類函數(shù);所以Derived對象銷毀時,首先調(diào)用Derived的析構(gòu)函數(shù),接著調(diào)用Base1的析構(gòu)函數(shù),最后調(diào)用Base2的析構(gòu)函數(shù);輸出結(jié)果為:"db1b2",答案為C。33、若Pay是一個類名,則執(zhí)行語句Payp1,p2[2],*p3;時Pay的構(gòu)造函數(shù)被調(diào)用的次數(shù)是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:程序定義了Pay對象p1,Pay對象數(shù)組p2和Pay對象指針p3,編譯器自動生成默認(rèn)構(gòu)造函數(shù)初始化p1對象和p2的兩個對象元素;p3沒有初始化,沒有調(diào)用構(gòu)造函數(shù),答案為C。34、有如下類聲明和函數(shù)聲明classBase{intm;public:intn;protected:intp;};classDerived:protectedBase{public:intk;};voidf(Derivedd);則在函數(shù)f中通過d可訪問的數(shù)據(jù)成員的個數(shù)是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:保護(hù)繼承中,基類的public和protected成員在派生類中都是protected成員,所以類Derived中,public成員為:k,protected成員為:n、p,沒有private成員,m對Derived不可見;Derived對象d可訪問的只有public成員,即k;答案為A。35、有如下類定義:classPet{charname[30];public:Pet(char*n){strcpy(name,n);}voidbark(){cout<<"Woof!";}};且有如下變量定義:Petmy_dog("Weiwei"),&p=my_dog;則下列訪問成員函數(shù)bark的表達(dá)式中,錯誤的是A、p.bark()B、my_dog.bark()C、p->bark()D、(&p)->bark()標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:p為Pet類的引用類型,引用的對象是my_dog,p->bark()用法是錯誤的,至于選項(xiàng)D,&p是p的地址,通過地址使用箭頭訪問運(yùn)算符訪問bark(),正確;答案為C。36、有如下程序#includeusingnamespacestd;classAA{charc;public:AA():c(’X’){}AA(charch):c(ch){}AA(AA&aa):c(aa.c){}~AA(){cout<<3;}charvalue()const{returnc;}};voidf1(AAa){cout<A、X3Y3B、XY33C、Y3X3D、YX33標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:main函數(shù)中,調(diào)用f1函數(shù),創(chuàng)建局部對象AA(’Y’),此時形參a就是AA(’Y’)對象,輸出a.value(),即"Y",f1函數(shù)執(zhí)行完之后,需要銷毀AA(’Y’)對象,調(diào)用AA類的析構(gòu)函數(shù)~AA(),輸出"3";接著程序調(diào)用f2函數(shù),f2函數(shù)創(chuàng)建局部對象的引用a并初始化指向AA(),此時引用a所指對象的成員c值為"X",輸出為"X",f2函數(shù)執(zhí)行完之后,需要銷毀a所指對象AA(),調(diào)用AA類的析構(gòu)函數(shù)~AA(),輸出"3",程序結(jié)束;運(yùn)行結(jié)果為:"Y3X3",答案為C。37、在下列枚舉符號中,用來定位文件開始位置的方式是A、ios_base::curB、ios_base::begC、ios_base::outD、ios_base::end標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:ios_base::cur是指文件的當(dāng)前位置;ios_base::end指向文件尾部;ios_base::beg指向文件開始;ios_base::out文件操作的文件模式;答案為B。38、若MyTemp是一個只有一個虛擬類型參數(shù)的類模板,且有如下語句序列MyTempp1;MyTempp2;MyTempp3[4];編譯系統(tǒng)在處理上面的語句序列時,所生成的模板MyTemp的實(shí)例的個數(shù)是A、1B、2C、3D、6標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:題目中使用MyTemp類模板定義了三種類型的類對象,所以生成的模板MyTemp實(shí)例有3個,答案為C。39、下列關(guān)于模板的表述中,正確的是A、如果一個類中存在純虛函數(shù),這個類就是類模板B、函數(shù)模板不能帶有形式參數(shù)表C、類模板帶有模板形參表D、類模板中不能包含構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:存在純虛函數(shù)的類是抽象基類,選項(xiàng)A錯誤;函數(shù)模板的形參表不能為空,不然定義函數(shù)模板也沒有意義,選項(xiàng)B錯誤;類模板中是可以包含構(gòu)造函數(shù)的,選項(xiàng)D錯誤。答案為C。40、下列關(guān)于基類和派生類關(guān)系的敘述中,正確的是A、派生類中的成員可以訪問基類中的任何成員B、每個類最多只能有一個直接基類C、對基類構(gòu)造函數(shù)的調(diào)用不能出現(xiàn)在派生類構(gòu)造函數(shù)的初始化列表中D、派生類除了繼承基類的成員,還可以定義新的成員標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:派生類對基類成員的訪問權(quán)限由基類成員的訪問標(biāo)識和類派生列表中的訪問標(biāo)識共同決定的,選項(xiàng)A錯誤;多重繼承的派生類可以有多個直接基類,選項(xiàng)B錯誤;派生類構(gòu)造函數(shù)可以隱式調(diào)用基類的默認(rèn)構(gòu)造函數(shù)初始化對象的基類部分,也可以在派生類構(gòu)造函數(shù)初始化列表中顯示調(diào)用基類構(gòu)造函數(shù),選項(xiàng)C錯誤;答案為D。國家二級C++機(jī)試(選擇題)模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列敘述中正確的是()。A、線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的B、線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)C、線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)D、線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)與順序存儲結(jié)構(gòu)在存儲空間的需求上沒有可比性標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:線性鏈?zhǔn)酱鎯Y(jié)構(gòu)中每個結(jié)點(diǎn)都由數(shù)據(jù)域與指針域兩部分組成,增加了存儲空間,所以一般要多于順序存儲結(jié)構(gòu)。2、下列敘述中正確的是()。A、棧是一種先進(jìn)先出的線性表B、隊(duì)列是一種后進(jìn)先出的線性表C、棧與隊(duì)列都是非線性結(jié)構(gòu)D、以上三種說法都不對標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:棧是一種先進(jìn)后出的線性表,隊(duì)列是一種先進(jìn)先出的線性表,棧與隊(duì)列都是線性結(jié)構(gòu)。3、軟件測試的目的是()。A、評估軟件可靠性B、發(fā)現(xiàn)并改正程序中的錯誤C、改正程序中的錯誤D、發(fā)現(xiàn)程序中的錯誤標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。不是為了評估軟件或改正錯誤。4、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、軟件集成測試計(jì)劃B、軟件詳細(xì)設(shè)計(jì)說明書C、用戶手冊D、軟件需求規(guī)格說明書標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:需求分析階段的工作可以概括為:需求獲取、需求分析、編寫需求規(guī)格說明書、需求評審四個方面。所以選擇D。5、軟件生命周期是指()。A、軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程B、軟件從需求分析、設(shè)計(jì)、實(shí)現(xiàn)到測試完成的過程C、軟件的開發(fā)過程D、軟件的運(yùn)行維護(hù)過程標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。6、面向?qū)ο蠓椒ㄖ校^承是指()。A、一組對象所具有的相似性質(zhì)B、一個對象具有另一個對象的性質(zhì)C、各對象之間的共同性質(zhì)D、類之間共享屬性和操作的機(jī)制標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和操作的機(jī)制。7、層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是()。A、記錄長度B、文件的大小C、聯(lián)系的復(fù)雜程度D、數(shù)據(jù)之間的聯(lián)系方式標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),網(wǎng)狀模型是一個不加任何條件限制的無向圖,關(guān)系模型采用二維表來表示,所以三種數(shù)據(jù)庫的劃分原則是數(shù)據(jù)之間的聯(lián)系方式。8、一個工作人員可以使用多臺計(jì)算機(jī),而一臺計(jì)算機(jī)可被多個人使用,則實(shí)體工作人員與實(shí)體計(jì)算機(jī)之間的聯(lián)系是()。A、一對一B、一對多C、多對多D、多對一標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:因?yàn)橐粋€人可以操作多個計(jì)算機(jī),而一臺計(jì)算機(jī)又可以被多個人使用,所以兩個實(shí)體之間是多對多的關(guān)系。9、數(shù)據(jù)庫設(shè)計(jì)中反映用戶對數(shù)據(jù)要求的模式是()。A、內(nèi)模式B、概念模式C、外模式D、設(shè)計(jì)模式標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:數(shù)據(jù)庫系統(tǒng)的三級模式是概念模式、外模式和內(nèi)模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,給出了每個用戶的局部數(shù)據(jù)描述,所以選擇C。內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法。10、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、差C、交D、并標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:關(guān)系T中的元組是R關(guān)系中有而S關(guān)系中沒有的元組的集合,所以進(jìn)行的是差的運(yùn)算。11、下列符號中能夠作為C++標(biāo)識符的是()。A、constB、2aC、_shapeD、count標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題考查C++標(biāo)識符的命名規(guī)則,其規(guī)則有如下幾點(diǎn):①所有標(biāo)識符必須由字母、數(shù)字或下畫線組成,且必須由字母或下畫線開頭;②所有標(biāo)識符不能使用C++已有的關(guān)鍵字;③大、小寫字母表示不同意義,即代表不同的標(biāo)識符。選項(xiàng)A是關(guān)鍵字,選項(xiàng)B不能以數(shù)字開頭,選項(xiàng)D包含了字符"-",且不能以此字符開頭。故答案為C。12、已知枚舉類型聲明語句為:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};則下列說法中錯誤的是()。A、枚舉常量YELLOW的值為1B、枚舉常量RED的值為6C、枚舉常量BLACK的值為10D、枚舉常量WHITE的值為1標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:C++語言規(guī)定枚舉常量的默認(rèn)值依次等于0,1,…,n-l。也可以給枚舉常量賦初值,方法是:在枚舉常量的后面跟上"=整型常量",在給枚舉常量賦初值時,如果給其中任何一個枚舉常量賦初值,則其后的枚舉常量將按自然數(shù)的規(guī)則依次賦初值。所以本題答案為D。13、執(zhí)行下列語句段后,輸出字符"*"的個數(shù)是()。for(inti=50;i>1;i-=2)cout<<′*′;A、24B、25C、26D、50標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:本題考查for循環(huán)語句,題目中每執(zhí)行完循環(huán)體后,i都會減2,那么只有50到2之間的偶數(shù)才能輸出"*",所以總共輸出25次。14、有如下定義:inta[5]={1,3,5,7,9},*p=a;下列表達(dá)式中不能得到數(shù)值5的是()。A、a[2]B、a[3]C、*(p+2)D、*p+4標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:本題考查指向數(shù)組的指針,本題中指針變量p指向數(shù)組a,直接使用數(shù)組下標(biāo)即可取值,數(shù)組下標(biāo)是從0開始標(biāo)號的,所以a[2]能取到5,而a[3]取不到5,C選項(xiàng)中使用指針后移方法能夠取到5,D選項(xiàng)中*p為1,所以*p+4為5。15、下列語句中錯誤的是()。A、constinta;B、constinta=10;C、constint*point=0;D、constint*point=newint(10);標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:const是一個C++語言的關(guān)鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量只能被讀,必須初始化。A選項(xiàng)沒有初始化,B、C、D選項(xiàng)都正確。16、已知函數(shù)FA調(diào)用函數(shù)FB,若要把這兩個函數(shù)定義在同一個文件中,則()。A、FA必須定義在FB之前B、FB必須定義在FA之前C、若FA定義在FB之后,則FA的原型必須出現(xiàn)在FB的定義之前D、若FB定義在FA之后,則FB的原型必須出現(xiàn)在FA的定義之前標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:如果使用用戶自己定義的函數(shù),而該函數(shù)與調(diào)用它的函數(shù)(即主調(diào)用函數(shù))在同一程序單元中,且位置在主調(diào)用函數(shù)之后,則必須在調(diào)用此函數(shù)之前對被調(diào)用的函數(shù)作聲明。17、下列關(guān)于運(yùn)算符函數(shù)的描述中,錯誤的是()。A、運(yùn)算符函數(shù)的名稱總是以operator為前綴B、運(yùn)算符函數(shù)的參數(shù)可以是對象C、運(yùn)算符函數(shù)只能定義為類的成員函數(shù)D、在表達(dá)式中使用重載的運(yùn)算符相當(dāng)于調(diào)用運(yùn)算符重載函數(shù)標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:運(yùn)算符函數(shù)可以定義為類的友元函數(shù)。所以C選項(xiàng)錯誤。18、為了提高函數(shù)調(diào)用的實(shí)際運(yùn)行速度,可以將較簡單的函數(shù)定義為()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸函數(shù)D、函數(shù)模板標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:一般函數(shù)進(jìn)行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時,是將調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換,一般只將規(guī)模很小而使用頻繁的函數(shù)聲明為內(nèi)聯(lián)函數(shù),可以避免函數(shù)調(diào)用時間開銷,從而提高運(yùn)行速度。19、若要對Data類中重載的加法運(yùn)算符成員函數(shù)進(jìn)行聲明,下列選項(xiàng)中正確的是()。A、Data+(Data);B、Dataoperator+(Data);C、Data+operator(Data);D、operator+(Data,Data);標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:根據(jù)重載加法運(yùn)算符的格式,只有B選項(xiàng)正確。20、已知函數(shù)f的原型是voidf(int*a,long&b);,變量v1、v2的定義是:intv1;longv2;下列調(diào)用語句中正確的是()。A、f(v1,&v2);B、f(v1,v2);C、f(&v1,&v2);D、f(&v1,v2);標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:函數(shù)參數(shù)的3種傳遞方式:①將變量名作為形參和實(shí)參,即傳值方式;②傳遞變量指針;③引用形參。本題中函數(shù)f的第一個形參為指針,那么調(diào)用f函數(shù)時,第一個參數(shù)必須是地址,所以必須是&v1,第二個形參為引用,所以對應(yīng)實(shí)參為v2即可。故本題答案為D。21、已知Value是一個類,value是Value的一個對象。下列以非成員函數(shù)形式重載的運(yùn)算符函數(shù)原型中,正確的是()。A、Valueoperator+(Valuev,inti);B、Valueoperator+(Valuev=value,inti);C、Valueoperator+(Valuev,inti=0);D、Valueoperator+(Valuev=value,inti=0);標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:本題考查運(yùn)算符重載,其中重載運(yùn)算符的函數(shù)不能有默認(rèn)的參數(shù),所以本題答案為A。22、下列關(guān)于運(yùn)算符重載的描述中,正確的是()。A、運(yùn)算符重載為成員函數(shù)時,若參數(shù)表中無參數(shù),重載的是一元運(yùn)算符B、一元運(yùn)算符只能作為成員函數(shù)重載C、二元運(yùn)算符重載為非成員函數(shù)時,參數(shù)表中有一個參數(shù)D、C++中可以重載所有的運(yùn)算符標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:運(yùn)算符重載為成員函數(shù)時,會省略一個參數(shù),如果無參數(shù),表明是一元運(yùn)算符。一元運(yùn)算符既可以作為成員函數(shù)重載,也可以作為非成員函數(shù)重載。二元運(yùn)算符如果作為非成員函數(shù),則參數(shù)表中必須有兩個參數(shù)。C++有5個運(yùn)算符不能重載,它們是:.(成員訪問運(yùn)算符)、.*(成員指針訪問運(yùn)算符)、::(域運(yùn)算符)、sizeof(長度運(yùn)算符)和?:(條件運(yùn)算符)。故本題答案為A。23、下列有關(guān)類成員的敘述中,正確的是()。A、友元函數(shù)是類的成員函數(shù)B、類成員的默認(rèn)訪問權(quán)限是私有的C、類成員函數(shù)必須聲明為公有的D、類的靜態(tài)數(shù)據(jù)成員不能是常成員標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:友元函數(shù)是指某些雖然不是類成員卻能訪問類的所有成員的函數(shù),故友元函數(shù)不是類的成員函數(shù)。類成員的默認(rèn)訪問權(quán)限是私有的,類的成員函數(shù)可以是3種權(quán)限中的一種,靜態(tài)數(shù)據(jù)成員可以為常成員。故本題答案為B。24、有如下類定義:classPoint{private:staticinthow_many;};how_many=0;要初始化Point類的靜態(tài)成員how_many,下畫線處應(yīng)填入的內(nèi)容是()。A、intB、staticintC、intPoint::D、staticintPoint::標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題考查靜態(tài)數(shù)據(jù)成員,靜態(tài)數(shù)據(jù)成員可以初始化,但只能在類體外進(jìn)行初始化,其一般形式為:數(shù)據(jù)類型類名::靜態(tài)數(shù)據(jù)成員名=初值。所以本題答案為C。25、有如下頭文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函數(shù)中,具有隱含的this指針的是()。A、f1B、f2C、f3D、f4標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:只有類的非靜態(tài)成員函數(shù)才隱含this指針,其作用域是類內(nèi)部,當(dāng)類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員時,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù),而不必一定寫上this。所以本題答案為C。26、下列有關(guān)類繼承的敘述中,錯誤的是()。A、繼承可以實(shí)現(xiàn)軟件復(fù)用B、虛基類可以解決由多繼承產(chǎn)生的二義性問題C、派生類構(gòu)造函數(shù)要負(fù)責(zé)調(diào)用基類的構(gòu)造函數(shù)D、派生類沒有繼承基類的私有成員標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:3種繼承方式中,派生類繼承了基類的私有成員,但不能被直接訪問,可以通過派生類的友元函數(shù)去訪問基類的私有成員。27、在下列關(guān)鍵字中,不能用來表示繼承方式的是()。A、privateB、staticC、publicD、protected標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:3種繼承方式:公用繼承、私有繼承和保護(hù)繼承分別使用public、private和protected3個關(guān)鍵字來定義。28、有如下兩個類定義:classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;protected:doubley2;public:doubley3;};在類YY中保護(hù)成員變量的個數(shù)是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題考查保護(hù)繼承中派生類對基類的訪問屬性,在受保護(hù)繼承中,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,所以基類的成員x2、x3變成了保護(hù)成員,派生類中的y2也是保護(hù)成員,所以共有3個保護(hù)成員。本題答案為C。29、有如下類定義: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知識點(diǎn)解析:本題考查類的默認(rèn)構(gòu)造函數(shù)和自定義的構(gòu)造函數(shù)。本題中MyClass(intn):value(n){}為自定義的構(gòu)造函數(shù),加上默認(rèn)構(gòu)造函數(shù),一共有2個構(gòu)造函數(shù)。30、有如下類和對象的定義:classConstants{public:staticdoublegetPI(){return3.1416;}};Constantsconstants;下列各組語句中,能輸出3.1416的是()。A、cout<getPI();和cout<B、cout<C、cout<getPI();和cout<getPI();D、cout<標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查靜態(tài)成員函數(shù)。靜態(tài)成員函數(shù)由于沒有this指針,所以不能訪問本類中的非靜態(tài)成員。引用靜態(tài)成員函數(shù)有2種方式,一種是直接使用類來引用,即Constants::getPI();另一種是使用對象來引用,即constants.getPI()。所以本題答案為D。31、有如下程序:#includeusingnamespacestd;classVAC{public:intf()const{return3;}intf(){return5;}};intmain(){VACv1;constVACv2;cout<A、53B、35C、55D、33標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:本題考查常對象及常成員函數(shù)及構(gòu)造函數(shù),常對象只能調(diào)用常成員函數(shù),所以本題中,對象v1為普通對象,執(zhí)行v1.f()后,會執(zhí)行默認(rèn)構(gòu)造函數(shù),輸出5,對象v2為常對象,執(zhí)行v2.f()后,會執(zhí)行常構(gòu)造函數(shù),輸出3。32、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(inti=0){cout<<1;}MyClass(constMyClass&x){cout<<2;}MyClass&operator=(constMyClass&x){cout<<3;return*this;}~MyClass(){cout<<4;}};intmain(){MyClassobj1(1),obj2(2),obj3(obj1);return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、112444B、11114444C、121444D、11314444標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:本題考查構(gòu)造函數(shù)和復(fù)制構(gòu)造函數(shù)以及重載運(yùn)算符。本題中先后定義了兩個對象obj1,obj2,依次輸出11,然后定義了對象obj3,調(diào)用復(fù)制構(gòu)造函數(shù),輸出2,最后執(zhí)行三次析構(gòu)函數(shù),輸出444。33、有如下類聲明:classBase{protected:intamount;public:Base(intn=0):amount(n){}intgetAmount()const{returnamount;}};classDerived:publicBase{protected:intvalue;public:Derived(intm,intn):value(m),Base(n){}intgetData()const{returnvalue+amount;}};已知x是一個Derived對象,則下列表達(dá)式中正確的是()。A、x.value+x.getAmount()B、x.getData()-x.getAmount()C、x.getData()-x.amountD、x.value+x.amount標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:本題考查公有繼承中派生類對象對基類的訪問屬性。在公有繼承中,派生類對象只能訪問基類的公有成員,而不能訪問基類的保護(hù)成員和私有成員。題中x是派生類的對象,只能訪問基類中公有的Base()和getAmount()成員,而不能訪問保護(hù)類型的amount成員,故選項(xiàng)C、D錯誤。而類對象對類成員的訪問也存在類似的情況,即類對象只能訪問類的公有成員,而value是Derived的保護(hù)成員,所以A選項(xiàng)也錯誤。故答案為B。34、有如下程序:#includeusingnamespacestd;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知識點(diǎn)解析:本題考查公用繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護(hù)成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。所以本題中n、k和setK變?yōu)榱伺缮惖谋Wo(hù)成員,不能直接使用,即1、3、4錯誤,所以B選項(xiàng)正確。35、有如下程序:#includeusingnamespacestd;classBase{intx;public:Base(intn=0):x(n){cout<A、375B、357C、0375D、0357標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個派生類的對象時,先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù),對象釋放時,先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。本題中定義了一個對象d1,先執(zhí)行基類的構(gòu)造函數(shù)輸出0,再執(zhí)行派生類的構(gòu)造函數(shù)輸出3,然后定義了一個對象d2(5,7),其中需要調(diào)用基類的構(gòu)造函數(shù)輸出7,最后輸出5,所以答案為C。36、有如下程序:#includeusingnamespacestd;classGA{public:virtualintf(){return1;}};classGB:publicGA{public:virtualintf(){return2;}};voidshow(GAg){cout<A、1111B、1211C、1112D、1212標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題主要考察虛函數(shù)。虛函數(shù)指在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù),本題中定義類GA的對象a,執(zhí)行show(a)、display(a),輸出11,定義了類GB的對象b,執(zhí)行show(b),仍然輸出1,display(b)執(zhí)行會調(diào)用派生類的f函數(shù),因?yàn)閒函數(shù)為虛函數(shù),輸出2,所以本題答案為C。37、下列有關(guān)模板的敘述中,正確的是()。A、函數(shù)模板不能含有常規(guī)形參B、函數(shù)模板的一個實(shí)例就是一個函數(shù)定義C、類模板的成員函數(shù)不能是模板函數(shù)D、用類模板定義對象時,絕對不能省略模板實(shí)參標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識,所以本題答案為B。38、下面是一個模板聲明的開始部分:templatedouble…由此可知()。A、這可能是一個函數(shù)模板的聲明B、這可能是一個類模板的聲明C、這既可能是一個函數(shù)模板的聲明,也可能是一個類模板的聲明D、這肯定是一個錯誤的模板聲明標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識,從templatedouble這里就可以看出這是一個函數(shù)模板的聲明。39、C++系統(tǒng)預(yù)定義了4個用于標(biāo)準(zhǔn)數(shù)據(jù)流的對象,下列選項(xiàng)中不屬于此類對象的是()。A、coutB、cinC、cerrD、cset標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:C++標(biāo)準(zhǔn)數(shù)據(jù)流的對象分別是cout、cin、cerr、clog,所以本題答案為D。40、下列語句都是程序運(yùn)行時的第1條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是()。A、cout<B、cout<C、cout<D、cout<標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查控制輸出格式,A、B、C選項(xiàng)都會輸出"12345",只有D選項(xiàng)輸出"12345",所以本題答案為D。國家二級C++機(jī)試(選擇題)模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列關(guān)于棧敘述正確的是()。A、棧頂元素最先能被刪除B、棧頂元素最后才能被刪除C、棧底元素永遠(yuǎn)不能被刪除D、棧底元素最先被刪除標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:棧是先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),所以棧頂元素最后入棧卻最先被刪除。棧底元素最先入棧卻最后被刪除。所以選擇A。2、下列敘述中正確的是()。A、在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態(tài)變化B、在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態(tài)變化C、在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態(tài)變化D、以上說法均不正確標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:棧是先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),在整個過程中,棧底指針不變,入棧與出棧操作均由棧頂指針的變化來操作,所以選擇C。3、某二叉樹共有7個結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有1個,則該二叉樹的深度為(假設(shè)根結(jié)點(diǎn)在第1層)()。A、3B、4C、6D、7標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,多為0的葉子結(jié)點(diǎn)總比度為2的結(jié)點(diǎn)多一個,所以本題中度為2的結(jié)點(diǎn)為1-1=0個,所以可以知道本題目中的二叉樹的每一個結(jié)點(diǎn)都有一個分支,所以共7個結(jié)點(diǎn)共7層,即度為7。4、軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是()。A、學(xué)生成績管理系統(tǒng)B、C語言編譯程序C、UNIX操作系統(tǒng)D、數(shù)據(jù)庫管理系統(tǒng)標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件、支撐軟件。操作系統(tǒng)、編譯程序、匯編程序、網(wǎng)絡(luò)軟件、數(shù)據(jù)庫管理系統(tǒng)都屬于系統(tǒng)軟件。所以B)、C)、D)都是系統(tǒng)軟件,只有A)是應(yīng)用軟件。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知識點(diǎn)解析:1966年Boehm和Jacopini證明了程序設(shè)計(jì)語言僅僅使用順序、選擇和重復(fù)三種基本控制結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計(jì)方法。6、下面描述中錯誤的是()。A、系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細(xì)設(shè)計(jì)B、軟件設(shè)計(jì)是將軟件需求轉(zhuǎn)換為軟件表示的過程C、數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計(jì)是軟件設(shè)計(jì)的任務(wù)之一D、PAD圖是軟件詳細(xì)設(shè)計(jì)的表示工具標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:詳細(xì)設(shè)計(jì)的任務(wù)是為軟件結(jié)構(gòu)圖中而非總體結(jié)構(gòu)圖中的每一個模塊確定實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié),所以A)錯誤。7、負(fù)責(zé)數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是()。A、數(shù)據(jù)定義語言B、數(shù)據(jù)管理語言C、數(shù)據(jù)操縱語言D、數(shù)據(jù)控制語言標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:數(shù)據(jù)定義語言:負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語言:負(fù)責(zé)數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作;數(shù)據(jù)控制語言:負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復(fù)等功能。8、一個教師可講授多門課程,一門課程可由多個教師講授。則實(shí)體教師和課程間的聯(lián)系是()。A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:因?yàn)橐粋€教師可講授多門課程,而一門課程又能由多個老師講授所以他們之間是多對多的關(guān)系,可以表示為m:n。9、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、并C、交D、差標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:關(guān)系T中的元組是關(guān)系R中有而關(guān)系S中沒有的元組的集合,即從關(guān)系R中除去與關(guān)系S中相同元組后得到的關(guān)系T。所以做的是差運(yùn)算。10、定義無符號整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是()。A、-369B、369C、0.369D、整數(shù)集合{1,2,3,4,5}標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:只有B)選項(xiàng)369可以用無符號整數(shù)來表示和存儲。A)選項(xiàng)-369有負(fù)號,選項(xiàng)C)0.369是小數(shù)都不能用無符號整數(shù)類存儲。選項(xiàng)D)是一個整數(shù)集合得用數(shù)組來存儲。11、下列字符串中可以用作C++標(biāo)識符的是A、1481varB、test-1481C、trueD、_123標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:用來表示變量、符號常量、函數(shù)、數(shù)組類型等實(shí)體名字的有效字符序列稱為標(biāo)識符,標(biāo)識符由字母、數(shù)字、和下劃線3種字符組成,且第一個字符必須為字母或者下劃線。C選項(xiàng)為C++的特定標(biāo)識符,只有D選項(xiàng)正確。12、下列枚舉類型的定義中,包含枚舉值3的是A、enumtest{LEFT,UP,RIGHT,DOWN};B、enumtest{LEFT,UP=5,RIGHT,DOWN};C、enumtest{LEFT=-1,UP,RIGHT,DOWN};D、enumtest{LEFT,UP,RIGHT=6,DOWN};標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:枚舉常量的定義enum枚舉類型名{常量1,常量2,常量3,.......};A選項(xiàng)包含的枚舉值為0、1、2、3,B選項(xiàng)包含的枚舉值為4、5、6、7,C選項(xiàng)包含的枚舉值為-1、0、1、2,D選項(xiàng)包含的枚舉值為4、5、6、7,所以A選項(xiàng)正確。13、有如下程序段:inti=1;while(1){i++;if(i==30)break;if(i%3==0)cout<<’*’;}執(zhí)行這個程序段輸出字符*的個數(shù)是A、30B、8C、9D、10標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題中while循環(huán)中當(dāng)i為3的倍數(shù)時輸出*,而i為30時跳出循環(huán),所以輸出9個*,答案為C。14、已知數(shù)組arr的定義如下:intarr[5]={1,2,3,4,5};下列語句中輸出結(jié)果不是3的是A、cout<<*arr+2<B、cout<<*(arr+2)<C、cout<<arr[2]<D、cout<<*arr<標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查以為數(shù)組和指針,一維數(shù)組名可以作為一個指針,指向數(shù)組的第一個元素,題目中要求輸出3,那么就是指向了數(shù)組的第三個元素,*arr表示數(shù)組的第一個元素1,所以輸出不出來3,所以選擇D選項(xiàng)。15、下列敘述中,錯誤的是A、true是一個邏輯型常量B、x是一個字符型常量C、100是一個int常量D、2.71828是一個double常量標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:考查常量定義,B選項(xiàng)中"x"為一個字符串,’x’才是字符常量,所以B選項(xiàng)錯誤。16、在C++中,用來取代C中的預(yù)處理宏函數(shù)的是A、重載函數(shù)B、友元函數(shù)C、遞歸函數(shù)D、內(nèi)聯(lián)函數(shù)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:內(nèi)聯(lián)函數(shù)具有一般函數(shù)的特性,它與一般函數(shù)所不同之處公在于函數(shù)調(diào)用的處理。一般函數(shù)進(jìn)行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時,是將調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換,內(nèi)聯(lián)函數(shù)被發(fā)明出來就是為了取代C中的宏,所以答案為D。17、通過運(yùn)算符重載,可以改變運(yùn)算符原有的A、優(yōu)先級B、結(jié)合性C、操作數(shù)類型D、操作數(shù)個數(shù)標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題考查運(yùn)算符重載,重載不能改變運(yùn)算符運(yùn)算對象的個數(shù);不能改變運(yùn)算符的優(yōu)先級別;不能改變運(yùn)算符的結(jié)合性;重載運(yùn)算符的函數(shù)不能有默認(rèn)值,否則就改變了運(yùn)算符參數(shù)的個數(shù);不能定義新的運(yùn)算符,某些運(yùn)算符不能重載。所以答案為C。18、在函數(shù)中,定義一個變量時,默認(rèn)的存儲類型是A、externB、autoC、registerD、static標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:extern可以置于變量或者函數(shù)前,以表示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時在其他模塊中尋找其定義。在C++語言中auto被解釋為一個自動存儲變量的關(guān)鍵字,也就是申明一塊臨時的變量內(nèi)存。register修飾符暗示編譯程序相應(yīng)的變量將被頻繁地使用,如果可能的話,應(yīng)將其保存在CPU的寄存器中,以加快其存儲速度。在變量前,加上關(guān)鍵字static,該變量就被定義成為一個靜態(tài)變量,該變量在全局?jǐn)?shù)據(jù)區(qū)分配內(nèi)存,所以答案為B。19、下列運(yùn)算符函數(shù)中肯定不屬于類Can的成員函數(shù)的是A、Canoperator-(Can);B、Canoperator-();C、Canoperator-(Can,Can);D、Canoperator-(int);標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:答案C的形式是重載為友元函數(shù),而友元函數(shù)不屬于類的成員函數(shù)。所以重載為友元函數(shù)需要兩個參數(shù),通過參數(shù)傳遞的方式得到參加運(yùn)算的兩個對象。其他的是重載為類的成員函數(shù),由于對象本身代表了一個操作數(shù),所以其參數(shù)只需要一個,其為參加運(yùn)算的另一個操作數(shù)。20、關(guān)于函數(shù)聲明格式中的<返回類型>,下列敘述錯誤的是A、<返回類型>有可能包含關(guān)鍵字trueB、<返回類型>有可能包含自定義標(biāo)識符C、<返回類型>有可能包含字符*D、<返回類型>有可能包含關(guān)鍵字float標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:本題考查函數(shù)返回類型,函數(shù)返回類型可以是普通常量型的,可以返回指針以及自定義類型,但是不能包含關(guān)鍵字true,所以A選項(xiàng)錯誤。21、下列關(guān)于運(yùn)算符重載的敘述中,錯誤的是A、不能通過運(yùn)算符重載在C++中創(chuàng)建新的運(yùn)算符B、賦值運(yùn)算符只能重載為成員函數(shù)C、運(yùn)算符函數(shù)重載為類的成員函數(shù)時,第一操作數(shù)是該類對象D、重載類型轉(zhuǎn)換運(yùn)算符時,應(yīng)聲明返回類型為void標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查運(yùn)算符重載,重載不能定義新的運(yùn)算符,且賦值運(yùn)算符只能重載為成員函數(shù),重載類型轉(zhuǎn)換運(yùn)算符時,聲明返回類型不一定是void,所以D選項(xiàng)錯誤。22、下列運(yùn)算符中,不能被重載的是A、||B、+=C、.D、--標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題考查運(yùn)算符重載,不能重載的運(yùn)算符只有5個:.、.*、::、sizeof、?:所以本題選擇C。23、有如下兩個類定義:classAA{};classBB{AAv1,*v2;BBv3;int*v4;};其中有一個成員變量的定義是錯誤的,這個變量是A、v1B、v2C、v3D、v4標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題考查類的定義,類定義中不能包含自己本身的對象,否則會引起像無限遞歸的問題,結(jié)果就是內(nèi)存被消耗殆盡。所以C選項(xiàng)錯誤。24、Sample是一個類,且有如下語句:Samplea[2],*p=newSample;執(zhí)行這個語句時調(diào)用Sample類的構(gòu)造函數(shù)的次數(shù)是A、0B、1C、2D、3標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查默認(rèn)構(gòu)造函數(shù),題中定義了二維對象數(shù)組以及一個指針對象,那么構(gòu)造函數(shù)就執(zhí)行3次,答案為D。25、當(dāng)一個類對象行將消亡時,系統(tǒng)自動調(diào)用A、析構(gòu)函數(shù)B、構(gòu)造函數(shù)C、靜態(tài)函數(shù)D、友元函數(shù)標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:當(dāng)對象脫離其作用域時(例如對象所在的函數(shù)已調(diào)用完畢),系統(tǒng)自動執(zhí)行析構(gòu)函數(shù)。析構(gòu)函數(shù)往往用來做"清理善后"的工作。所以選擇A。26、下列關(guān)于派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的敘述中,錯誤的是A、如果基類中沒有缺省構(gòu)造函數(shù),那么派生類必須定義構(gòu)造函數(shù)B、派生類的構(gòu)造函數(shù)會隱含調(diào)用基類的構(gòu)造函數(shù)C、在建立派生類對象時,先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)D、在銷毀派生類對象時,先調(diào)用基類的析構(gòu)函數(shù),再調(diào)用派生類的析構(gòu)函數(shù)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序,在銷毀派生類對象時,先調(diào)用派生類的析構(gòu)函數(shù),再調(diào)用基類的析構(gòu)函數(shù),所以D選項(xiàng)錯誤。27、派生類的成員函數(shù)不能訪問的基類的成員是A、公有成員和保護(hù)成員B、公有成員C、保護(hù)成員D、私有成員標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查派生類對基類成員的訪問屬性,派生類無論何種繼承,派生類的成員函數(shù)都不能訪問基類的私有成員,所以D選項(xiàng)錯誤。28、有如下類定義:classAA{inta;public:AA(intn=0):a(n){}};classBB:publicAA{public:BB(intn)__________};其中橫線處缺失部分是A、:AA(n){}B、:a(n){}C、{a(n);}D、{a=n;}標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:本題考查派生類的構(gòu)造函數(shù),其一般形式為:派生類構(gòu)造函數(shù)名(總參數(shù)表列):基類構(gòu)造函數(shù)名(參數(shù)表列)所以只有A選項(xiàng)正確。29、有如下類定義:classBox{public:doubleGetLength(){returnlength;}doubleGetWidth();doubleGetHeight();private:doublelength,width,height;};inlinedoubleBox::GetWidth(){returnwidth;}doubleBox::GetHeight(){returnheight;}在成員函數(shù)GetLenth、GetWidth和GetHeight中,內(nèi)聯(lián)函數(shù)有A、3個B、2個C、1個D、0個標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:在類體中定義的成員函數(shù),C++系統(tǒng)會自動將它們作為內(nèi)聯(lián)函數(shù)處理,而在類外定義的成員函數(shù),系統(tǒng)并不把它們默認(rèn)為內(nèi)聯(lián)函數(shù),使用inline也是內(nèi)聯(lián)函數(shù),所以共有2個內(nèi)聯(lián)函數(shù)GetLength和GetWidth,B選項(xiàng)正確。30、已知TV是一個類,并有函數(shù)func定義如下:voidfunc(){TVli,*net[2],company[3];}則在調(diào)用func()后,TV類的析構(gòu)函數(shù)被調(diào)用的次數(shù)是A、2次B、3次C、4次D、6次標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題考查默認(rèn)析構(gòu)函數(shù),題中定義了對象、包含三個元素的一維對象數(shù)組,所以析構(gòu)函數(shù)執(zhí)行4次,而對象指針數(shù)組并沒有實(shí)際占用空間,所以不執(zhí)行析構(gòu)函數(shù)。31、有如下程序:#include#includeusingnamespacestd;classMyBag{public:MyBag(stringbr="ABC"):brand(br){cout<A、MyBagarrays[2];B、MyBag*arrays=newMyBag[2];C、MyBagarrays[2]={MyBag("ABC")};D、MyBagarrays[2]={MyBag("CityLife"),MyBag("Micky")};標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查構(gòu)造函數(shù)的應(yīng)用,題目中A、B、C、D,都定義了包含兩個元素的一維數(shù)組,A、B、C都執(zhí)行題目中的構(gòu)造函數(shù),并且輸出"ABCABC",而D選項(xiàng)中由于構(gòu)造函數(shù)參數(shù)不為ABC,所以輸出為"CityLifeMicky"32、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}voidPrint(){cout<<’/’<<’N’<A、/N41/S54B、/N41/C54C、/C41/S54D、/C41/C54標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:本題考查構(gòu)造函數(shù)相關(guān)知識,本題中定義一個對象room1,執(zhí)行room1.Print時執(zhí)行構(gòu)造函數(shù)給size賦值為41,然后執(zhí)行voidPrint(){cout<<’/’<<’N’<33、有如下類定義:classPerson{public:Person(strings):name(s){}protected:stringname;};classFather:virtualpublicPerson{public:Father(strings):Person(s){}};classMother:virtualpublicPerson{public:Mother(strings):Person(s){}};classChild:publicFather,publicMother,virtualpublicPerson{public:Child(strings1,strings2,strings3):Mother(s1),Father(s2),Person(s3){}};在建立派生類Child的對象時,其基類Father、Mother和Person的構(gòu)造函數(shù)的調(diào)用順序?yàn)锳、Father,Mother,PersonB、Mother,Father,PersonC、Person,Father,MotherD、Father,Person,Mother,Person,Person標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:執(zhí)行派生類構(gòu)造函數(shù)的順序是:1、調(diào)用基類構(gòu)造函數(shù),2、調(diào)用子對象構(gòu)造函數(shù),3、再執(zhí)行派生類構(gòu)造函數(shù),所以本題中先調(diào)用基類person構(gòu)造函數(shù),然后執(zhí)行father構(gòu)造函數(shù),最后執(zhí)行mother構(gòu)造函數(shù)。34、有如下程序:#includeusingnamespacestd;classPoint{public:Point(intxx=0,intyy=0):x(xx),y(yy){}protected:voidSetXY(intxx,intyy){x=xx;y=yy;}private:intx,y;};classCircle:publicPoint{public:Circle(intr):radius(r){}voidSet(intr,intx,inty){radius=r;SetXY(x,y);}//①voidPrint()const{cout<A、①B、②C、③D、④標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:本題考查對象成員的引用,派生類公用繼承基類,但是不能繼承基類的私有成員,所以執(zhí)行voidPrint()const{cout<35、有如下程序:#include#include

溫馨提示

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

最新文檔

評論

0/150

提交評論