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

下載本文檔

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

文檔簡介

國家二級C++機試(選擇題)模擬試卷16(共9套)(共222題)國家二級C++機試(選擇題)模擬試卷第1套一、選擇題(本題共25題,每題1.0分,共25分。)1、由于常對象不能被更新,因此()。A、通過常對象只能調(diào)用它的常成員函數(shù)B、通過常對象只能調(diào)用靜態(tài)成員函數(shù)C、常對象的成員都是常成員D、通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)標準答案:A知識點解析:本題考查常對象的基本知識,常對象只能調(diào)用它的常成員函數(shù),而不能調(diào)用非const函數(shù),常對象的成員函數(shù)不一定都是常成員函數(shù),只需保證其數(shù)據(jù)成員是常數(shù)據(jù)成員即可。所以本題選A。2、有如下函數(shù)模板:ternplateTcast(Uu){returnu;}其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是()。A、cast(i);B、cast<>(i);C、cast(i);D、cast(i);標準答案:D知識點解析:本題考查函數(shù)模板的基本運用,屬于基礎(chǔ)知識。函數(shù)模板實際上是建立一個通用函數(shù),其函數(shù)類型和形參類型不具體指定,用一個虛擬的類型代表,這個通用函數(shù)就是函數(shù)模板。函數(shù)模板可以設(shè)定默認參數(shù),這樣在調(diào)用模板函數(shù)時就可以省略實參,函數(shù)模板的實例就是一個函數(shù)的定義。所以本題答案為D。3、假定MyClass為一個類,那么下列的函數(shù)說明中,()為該類的析構(gòu)函數(shù)。A、void~MyClass();B、~MyClass(intn);C、MyClass();D、~MyClass();標準答案:D知識點解析:C++語言中析構(gòu)函數(shù)為符號“~”加類名,且析構(gòu)函數(shù)沒有返回值和參數(shù),故前不加void關(guān)鍵字。所以正確的形式應該是~MyClass()。4、下列敘述中正確的是()。A、程序執(zhí)行的效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)B、程序執(zhí)行的效率只取決于程序的控制結(jié)構(gòu)C、程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量D、以上都不正確標準答案:A知識點解析:影響程序執(zhí)行效率的因素有很多,如數(shù)據(jù)的存儲結(jié)構(gòu)、程序處理的數(shù)據(jù)量、程序的算法等。順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)在數(shù)據(jù)插入和刪除操作上的效率就存在差別。其中,鏈式存儲結(jié)構(gòu)的效率要高一些。5、下面關(guān)于算法的敘述中,正確的是()。A、算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)B、算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止C、算法的空間復雜度是指算法程序中指令(或語句)的條數(shù)D、以上三種描述都正確標準答案:B知識點解析:算法在運行過程中需輔助存儲空間的大小稱為算法的空間復雜度。算法的有窮性是指一個算法必須在執(zhí)行有限的步驟后結(jié)束。6、下列各組類型聲明符中,含義相同的一組是()。A、unsignedlongim和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int標準答案:B知識點解析:本題考查整型變量的類型,A、c選項中前者為無符號的,后者為有符號的,D選項中shortint為2個字節(jié),int為4個字節(jié)。7、執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是()。for(inti=50;i>1;i-=2)cout<<’*’;A、24B、25C、26D、50標準答案:B知識點解析:本題考查for循環(huán)語句,題目中每執(zhí)行完循環(huán)體后,i都會減2,那么只有50到2之間的偶數(shù)才能輸出“*”,所以總共輸出25次。8、數(shù)據(jù)庫管理系統(tǒng)中負責數(shù)據(jù)模式定義的語言是()。A、數(shù)據(jù)定義語言B、數(shù)據(jù)管理語言C、數(shù)據(jù)操縱語言D、數(shù)據(jù)控制語言標準答案:A知識點解析:數(shù)據(jù)庫管理系統(tǒng)一般提供相應的數(shù)據(jù)語言,它們分別是:數(shù)據(jù)定義語言,負責數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語言,負責數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作;數(shù)據(jù)控制語言,負責數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復等功能。9、靜態(tài)數(shù)據(jù)成員在()進行初始化。A、成員函數(shù)列表B、類體外C、構(gòu)造函數(shù)D、成員函數(shù)標準答案:B知識點解析:靜態(tài)數(shù)據(jù)成員不能在參數(shù)初始化表對靜態(tài)數(shù)據(jù)成員初始化,只能在類體外進行初始化。10、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運算得到關(guān)系T,則所使用的運算為()。A、并B、自然連接C、笛卡爾積D、交標準答案:D知識點解析:關(guān)系R與S經(jīng)交運算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的有序組組成的,記為R∩S。11、定義如下枚舉類型enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};則下列語句正確的是()。A、表達式Wednesday=Friday的值是trueB、Dayday;day=3C、Dayday;day=Mondday+3D、Dayday;day=Tuesday+10標準答案:A知識點解析:enum<枚舉類型名>{<枚舉元素表>):其中:關(guān)鍵詞enum表示定義的是枚舉類型,枚舉類型名由標識符組成,而枚舉元素表由枚舉元素或枚舉常量組成。其中enum{Monday,Tuesday,Wednesday,Thrusday,F(xiàn)riday=2}的值由0開始,即0,1,2,3。D中的本題中的枚舉類型中的數(shù)據(jù)值Wednesday為2,而Friday的值賦值為2,所以判斷Wednesday等于Friday的表達式值為真,即true。即選擇A。12、某系統(tǒng)總體結(jié)構(gòu)如下圖所示該系統(tǒng)結(jié)構(gòu)圖是A、層次結(jié)構(gòu)B、網(wǎng)狀結(jié)構(gòu)C、分支結(jié)構(gòu)D、循環(huán)結(jié)構(gòu)標準答案:A知識點解析:層次結(jié)構(gòu)(hicrarchy)是一種操作系統(tǒng)的組織結(jié)構(gòu),其提供了一種隔離操作系統(tǒng)各層功能的模型。其包括歸屬層次結(jié)構(gòu)dissonance-attributionhierarchy維度層次結(jié)構(gòu)dimensionhiemrchv層次結(jié)構(gòu)數(shù)據(jù)庫hierarchicaldatabase等。網(wǎng)狀結(jié)構(gòu)這一名詞來自早期解剖學家用光學顯微鏡對腦干中央?yún)^(qū)網(wǎng)絡狀外觀的描述,在光鏡下這部分組織學的特點是神經(jīng)細胞分散,形態(tài)各異,大小不等,神經(jīng)纖維交錯穿行其間,形成一種灰白質(zhì)交織的結(jié)構(gòu),稱之為網(wǎng)狀結(jié)構(gòu)。分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當?shù)姆种дZ句。循環(huán)結(jié)構(gòu)可以減少源程序重復書寫的工作量,用來描述重復執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機特長的程序結(jié)構(gòu)。13、在下列關(guān)鍵字中,不能用來表示繼承方式的是()。A、privateB、staticC、publicD、protected標準答案:B知識點解析:此題考查的是繼承方式。繼承方式有私有(研vate)、保護(protected)、公有(public)三種。14、下列關(guān)于虛基類的描述中,錯誤的是()。A、使用虛基類可以消除由多繼承產(chǎn)生的二義性B、構(gòu)造派生類對象時,虛基類的構(gòu)造函數(shù)只被調(diào)用一次C、聲明“classB:virtualpublicA”說明類B為虛基類D、建立派生類對象時,首先調(diào)用虛基類的構(gòu)造函數(shù)標準答案:C知識點解析:虛基類是為了消除由多重繼承產(chǎn)生的二義性而提出的。虛基類的說明格式是:Class<類名>:virtual<繼承方式><基類名>,其中關(guān)鍵字virtual與繼承方式的位置無關(guān),但必須位于基類名之前,且virtual只對緊隨其后基類名起作用。對于本題來說,聲明“classB:virtualpublicA”說明類A為虛基類。15、有如下程序:#include<iostream>usingnamespacestd;classTestClass1{public:virtualvoidfun(){cout<<"1";}};classTestClass2:publicTestClass1{public:TestClass2(){cout<<"2";}};classTestClass3:publicTestClass2{public:virtualvoidfun(){TestClass2::fun();cout<<"3";}};intmain(){TestClass1aa,*p;TestClass2bb;TestClass3cc;p=&cc;p->fun();return0:}執(zhí)行上面程序的輸出是()。A、1122B、2112C、2213D、2223標準答案:C知識點解析:主函數(shù)中定義TestClass1的對象aa,*p對象指針,TestClass2的對象bb以及TestClass3的對象cc。p指向cc,TestClass3為TestClass2的派生類,構(gòu)造函數(shù)輸出2。TestClass3中fun函數(shù)中為TestClass2中的fun,調(diào)用TestClass2的構(gòu)造函數(shù),輸出2?!皃->funn();”,TestClass2繼承于TestClass1中的fun,所以輸出1。然后輸出TestClass3中的“cout<<"3"”,即輸出3。16、有如下程序:#includeusingnamespacestd;classBase{public:voidfunlO{cout<<“BasCn”;)virtualvoidfun20{cout<<“BasCn”;)};classDerived:publicBase{public:voidfunlO{cout<<”Derivedha”;)voidfun2(){cout<<”DerivedLq”;));voidf(Base&b){b.funl0;b.fun2();)intmain(){Derivedobj;f(obj);return0:}執(zhí)行這個程序的輸出結(jié)果是()。A、BaseBaseB、BaseDerivedC、DerivedBaseD、DerivedDerived標準答案:B知識點解析:此題考查的是虛函數(shù)的概念。在C++語言中,一個派生類的對象可以被它的任何一個基類的指針所指向,若基類和派生類中存在一模一樣的成員函數(shù)。那么通過該基類指針調(diào)用這樣的成員函數(shù)時,若這個成員函數(shù)被定義成虛函數(shù),那么就調(diào)用派生類中的;否則就調(diào)用基類中的。本題中,在f()函數(shù)中,形參b是一個基類的引用,它引用的是主函數(shù)中定義的派生類對象obi,所以在調(diào)用fun()時,運行的是基類的版本,而fun2()運行的是派生類的版本。17、有如下類定義:classTest{public:Test(){a=0;c=0;)//①intf(inta)const{this一>a=a;}//②staticintg(){retuma;}//③void.h(intb){Test::b=b;);//④private:inta:staticintb:constintc;};intTest::b=0;在標注號碼的行中,能被正確編譯的是()。A、①B、②C、③D、④標準答案:D知識點解析:此題考查的是類的定義。一個類的長數(shù)據(jù)成員的初始化只能在成員初始化列表中進行,故選項A錯誤;常成員函數(shù)不能更新對象的數(shù)據(jù)成員,故選項B錯誤;靜態(tài)成員函數(shù)可以直接訪問類中說明的靜態(tài)成員,但不能直接訪問類中說明的非靜態(tài)成員,故選項C錯誤。18、下列關(guān)于C++預定義流對象的敘述中,正確的是()。A、cin是C++預定義的標準輸入流對象B、cin是C++預定義的標準輸入流類C、cout是C++預定義的標準輸入流對象D、cout是C++預定義的標準輸入流類標準答案:A知識點解析:cin為istream流類的標準輸入對象,標準輸入設(shè)備就是指鍵盤。19、有如下程序:#include<iostream>usingnamespacestd;classBASE{public:~BASE(){cout<<"BASE";}};classDERIVED:publicBASE{public:~DERIVED(){cout<<"DERIVED";}};intmain(){DERIVED.x;return0;}執(zhí)行后的輸出結(jié)果是()。A、BASEB、DERIVEDC、BASEDERIVEDD、DERIVEDBASE標準答案:D知識點解析:此題考查的是派生類的定義和使用。當對象被刪除時,派生類的析構(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ù)的順序正好相反。20、在一個抽象類中,一定包含有()。A、虛函數(shù)B、純虛函數(shù)C、模板函數(shù)D、重載函數(shù)標準答案:B知識點解析:擁有純虛函數(shù)的類叫做抽象類,所以抽象類中必然包含有虛函數(shù)。21、有如下類定義:classTest{chara;constcharb;public:Test(charc){a=c;b=c;)//第1行voidf(chara)const{this->a=a;}//第2行voidg(charb){this->b=b;)//第3行charh()const{returna;}//第4行};編譯時沒有錯誤的行是()。A、第1行B、第2行C、第3行D、第4行標準答案:D知識點解析:類Test中的常成員函數(shù)h()返回數(shù)據(jù)成員a的值。22、有如下程序:#include<iostream>#include<cmath>usingstd::cout;classPoint{public:Menddoubledistance(constPoint&p);//p距原點的距離Point(intxx=0,intyy=0):x(xx),y(yy){}//①private:intx,y;};doubledistance(constPoint&p){//②returnsqrt(p.x*p.x+p.y*p.y);}intmain(){Pointp1(3,4);cout<<distance(p1);//③return0;}下列敘述中正確的是()。A、程序編譯正確B、程序編譯時語句①出錯C、程序編譯時語句②出錯D、程序編譯時語句③出錯標準答案:A知識點解析:這段程序是正確的,計算p距離原點的距離。語句①是類Point的構(gòu)造函數(shù),在構(gòu)造函數(shù)中給變量xx和yy賦初值0。語句②是計算點p距原點的距離的函數(shù)distance。語句③是計算點p1距離原點的距離并輸出。23、有如下程序:#includeusingnamespacestd;classB{public:virtualvoidf(){cout<<"B";}voidg(){cout<<"B";}};classD:publicB{public:voidf(){cout<<"D";}voidg(){cout<<"D";}};voidh(B*p){p->f();p->g();}intmain(){Dobj;h(&obj);return0:}運行這個程序的輸出結(jié)果是()。A、DDB、BBC、BDD、DB標準答案:D知識點解析:在基類B中定義虛函數(shù)f()和成員函數(shù)g(),而在派生類D中定義了函數(shù)f()和同名函數(shù)g()。而函數(shù)h中的形參為指向基類的指針變量p,所以在主函數(shù)中執(zhí)行h(&obj)時,會調(diào)用派生類的函數(shù)f(),輸出D,再調(diào)用基類的函數(shù)g(),輸出B。24、有如下程序:#includeUsingnamespacestd;ClassAmount{intamount;public;Amount(intn=0):amount(n){}IntgetAmountoconst{returnamount;}Amount&operator+=(Amounta){amount+=a.a(chǎn)mount;return;}};intmain(){Amountx(3),y(7);x+=y;cout<A、*thisB、thisC、&amountD、amount標準答案:A知識點解析:此題考查的是“+”運算符重載和this指針。語句amount+=a.a(chǎn)mount;實現(xiàn)3和7的求和得到amount=10,要使程序的輸出結(jié)果為10,又因為函數(shù)的返回值類型為Amoum&,所以橫線處填入*this。25、有如下程序:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){cout.fill(’*’);cout<<left<<setw(4)<<123<<<’’OK’’<<endl;return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、123*OKB、123*OK**C、*123OKD、*123**OK標準答案:A知識點解析:此題考查了輸出流的格式控制。cout的fill()是設(shè)置填充字符:left和endl分別是使輸出數(shù)據(jù)左對齊和換行;setw()函數(shù)的作用是設(shè)置輸入輸出的寬度,此設(shè)置效果只對以此輸入或輸出有效。此題中,輸出整數(shù)123時寬度為4且左對齊,得到“123*”;輸出字符串“OK”時寬度沒有定義實際大小輸出,結(jié)果得到OK:故最后得到的輸出結(jié)果是123*K。國家二級C++機試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列描述中正確的是A、一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)B、數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)C、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率D、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率標準答案:D知識點解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系:數(shù)據(jù)的存儲結(jié)構(gòu)是在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲關(guān)系。數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示,一種邏輯結(jié)構(gòu)可以表示成多種存儲結(jié)構(gòu);而采用不同的存儲結(jié)構(gòu),其數(shù)據(jù)處理的效率是不同的。2、下列敘述中正確的是()。A、有一個以上根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)B、只有一個根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)C、循環(huán)鏈表是非線性結(jié)構(gòu)D、雙向鏈表是非線性結(jié)構(gòu)標準答案:B知識點解析:在數(shù)據(jù)結(jié)構(gòu)中,樹這類的數(shù)據(jù)結(jié)構(gòu)只有一個根結(jié)點,但它不是線性結(jié)構(gòu)。3、下列數(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)系的復雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。循環(huán)隊列、帶鏈隊列和帶鏈棧都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。4、下列關(guān)于C++函數(shù)的敘述中,正確的是()。A、每個函數(shù)至少要具有一個參數(shù)B、每個函數(shù)都必須返回一個值C、函數(shù)在被調(diào)用之前必須先聲明D、函數(shù)不能自己調(diào)用自己標準答案:C知識點解析:此題考查的是函數(shù)的性質(zhì)。當調(diào)用無參函數(shù)時主函數(shù)并不將數(shù)據(jù)傳送給被調(diào)函數(shù),且可以帶回或不帶回函數(shù)值。函數(shù)的遞歸調(diào)用就是直接或間接的調(diào)用自己。5、下列有關(guān)繼承和派生的敘述中,正確的是()。A、如果一個派生類公有繼承其基類,則該派生類對象可以訪問基類的保護成員B、派生類的成員函數(shù)可以訪問基類的所有成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類標準答案:D知識點解析:私有繼承方式為基類的公用成員和保護成員在派生類中成了私有成員,其私有成員仍為基類私有,但派生類對象可以訪問基類的保護成員,所以基類對象不能賦值給派生類對象。抽象類是指含有純虛擬函數(shù)的類,所以選項D正確。6、數(shù)據(jù)字典(DD)所定義的對象都包含于()。A、數(shù)據(jù)流圖(DFD圖)B、程序流程圖C、軟件結(jié)構(gòu)圖D、方框圖標準答案:A知識點解析:數(shù)據(jù)字典是指對數(shù)據(jù)的數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、處理邏輯、外部實體等進行定義和描述,其目的是對數(shù)據(jù)流程圖中的各個元素做出詳細的說明。7、下面不能作為結(jié)構(gòu)化方法軟件需求分析工具的是()。A、系統(tǒng)結(jié)構(gòu)圖B、數(shù)據(jù)字典(DD)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)化方法軟件需求分析工具。8、有如下語句序列:charstr[10];cin>>str;當從鍵盤輸入“Ilovethisgame”時,str中的字符串是()。A、“Ilovethisgame”B、“Ilovethi”C、“Ilove”D、“I”標準答案:D知識點解析:cin是C++預定義的標準輸入流對象,cin用來接收字符串時,遇“空格”、“TAB”、“回車”時都會結(jié)束。所以本題答案為D。9、在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是()。A、邏輯設(shè)計B、需求分析C、詳細設(shè)計D、物理設(shè)計標準答案:B知識點解析:軟件開發(fā)階段包括需求分析、總體設(shè)計、詳細設(shè)計、編碼和測試五個階段。其中需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典。10、下列for循環(huán)的循環(huán)體執(zhí)行次數(shù)為()。for(inti(0),j(10);i=j=4;i++,j--)A、0B、1C、4D、無限標準答案:D知識點解析:循環(huán)條件i=i=4;是個賦值語句,使得i,i的值非0,所以是死循環(huán)。11、己知枚舉類型定義語句為:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};則下列敘述中錯誤的是()。A、枚舉常量NAME的值為1B、枚舉常量NUMBER的值為1C、枚舉常量MINUS的值為6D、枚舉常量PRINT的值為10標準答案:A知識點解析:此題考查的是枚舉類型的聲明。聲明枚舉類型的語法形式為:enum類型名{枚舉值表}。需注意的是:當n個枚舉值全部未賦常量值時,它們自左至右分別與整數(shù)0、1、2、3…n-1對應;若第i個枚舉值賦常量值為m,則其未賦常量值的后續(xù)枚舉值分別與整數(shù)m+1、m+2…對應,直到下一個賦了值的枚舉值或結(jié)束。枚舉常量NAME的值為0。12、屬于對象構(gòu)成成份的是A、規(guī)則B、屬性C、標識D、方法(或操作)標準答案:A知識點解析:對象由屬性、方法和標識構(gòu)成。13、下列字符串中可以用作C++標識符的是()。A、2009varB、gotoC、test一2009D、_123標準答案:D知識點解析:標識符是用戶為程序中各種需要命名的“元素”所起的名字。標識符的組成要符合一定的規(guī)則:①標識符是一個以字母或下劃線開頭的,由字母、數(shù)字、下劃線組成的字符串。②標識符不能與任意一個關(guān)鍵字同名。③標識符中的字母區(qū)分大小寫。④標識符不宜過長。C++語言一般設(shè)定一個標識符的有效長度為32個字符。由這四條規(guī)則可知,選項D)為正確答案。14、在定義函數(shù)模板或類模板時,開頭的保留字是()。A、typenameB、templateC、classD、typedef標準答案:B知識點解析:定義函數(shù)模板或類模板時,開頭的保留字是template。15、有如下程序:#include<iostream>#include<cstring>usingnamespacestd;classXCF{inta:public:XCF(intaa=0):a(aa){cout<<"1";}XCF(XCF&x){a=x.a(chǎn);cout<<"2";}~XCFO{cout<<a;}intGeta(){returna;}};intmain(){XCFd1(5),d2(d1);XCF*pd=newXCF(8);cout<<pd->Geta();deletepd;return0;}運行時的輸出結(jié)果是()。A、1215588B、1218855C、12185D、128512標準答案:B知識點解析:在這個程序中在建立對象d1(5)時,調(diào)用構(gòu)造函數(shù)XCF(intaa=0):a(aa){cout<<"1";},輸出1;在建立d2(d1)時,調(diào)用拷貝構(gòu)造函數(shù)XCF(XCF&x){a=x.a(chǎn);cout<<"2";),輸出2;在建立newXCF(8)對象時,調(diào)用構(gòu)造函數(shù)XCF(intaa=0):a(aa){cout<<"1";},輸出1;語句cout<<pd->Geta()的功能是輸出8;語句deletepd;調(diào)用析構(gòu)函數(shù)~XCF(),輸出8;當退出程序時,分別釋放對象d2、d1,輸出55。16、有如下語句序列:ifstreaminfile("DATA.DAT");if(infile.good())eout<<"A";else{cout<<"B";ofstreamoutfile("DATA.DAT");if(outfile.fail())cout<<"C";elsecout<<"D";}若執(zhí)行這個語句序列顯示的是BD,則說明文件DATA.DAT()。A、以讀方式打開成功B、以讀方式打開失敗,但以寫方式打開成功C、以讀方式打開失敗,以寫方式打開也失敗D、以讀方式打開成功,以寫方式打開也成功標準答案:B知識點解析:由這個語句序列顯示的結(jié)果是BD,說明執(zhí)行了cout<<"B"和eout<<"D"語句。17、若已定義了類Vehicle,則下列派生類定義中;錯誤的是()。A、classCar:vehicle{/*類體略*/};B、classCar:publiccar{/*類體略*/};C、classCar:publicVehicle{/*類體略*/};D、classCar:virtualpublicVehicle{/*類體略*/};標準答案:B知識點解析:類Car不能派生自它本身。18、定義派生類時,若不使用關(guān)鍵字顯式地規(guī)定采用何種繼承方式,則默認方式為()。A、私有繼承B、非私有繼承C、保護繼承D、公有繼承標準答案:A知識點解析:繼承的方式包括三種:公有繼承,保護繼承和私有繼承。如果不顯示的給出繼承方式,缺省的類繼承方式是私有繼承private。19、有如下程序:#include<iostream>usingnamespacestd;classPoint{intx,y;public:Point(intx1=0,inty1=0):x(x1),y(y1){}intget(){returnx+y;}};classCircle{Pointcenter;intradius;public:Circle(intcx,intcy,intr):center(cx,cy),radius(r){}intgetO{returncenter.get0+radius;}};intmain(){Circlec(3,4,5);cout<<c.get()<<end1;return0;}運行時的輸出結(jié)果是()。A、5B、7C、9D、12標準答案:D知識點解析:根據(jù)類Point和類Circle韻定義可知,類Circle的實例c(3,4,5)的成員函數(shù)c.get()返回值為3+4+5=12。20、有如下程序:c1assBase{public:intdata;};c1assDerivedl:publicBase{};c1assDerived2:protectedBase{};intmain(){Derivedld1;Derived2d2;dl.data=0;//①d2.data=0;//②return0;}下列關(guān)于程序編譯結(jié)果的描述中,正確的是()。A、①②皆無編譯錯誤B、①有編澤錯誤,②無編譯錯誤C、①無編譯錯誤,②有編譯錯誤D、①②皆有編譯錯誤標準答案:C知識點解析:保護繼承的類Dervied2不能訪問基類Base中的公共數(shù)據(jù)成員data。21、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assA{public:virtualvoidf(){cout<<1;}voidg0{cout<<2;}};c1assB:publicA{public:Virtualvoidf(){cout<<3;}voidg(){cout<<4;}};voidshow(A&a){a.f();a.g();}intmain(){Bb;show(b);return0;}運行時的輸出結(jié)果是()。A、12B、34C、14D、32標準答案:D知識點解析:在派生類classB中對基類中的虛擬成員函數(shù)virtualvoidf()和實函數(shù)voidg()進行了重新定義,在主函數(shù)中通過語句show(b);調(diào)用派生類中的虛函數(shù)virtualvoidf(){cout<<3;}輸出3,調(diào)用基類的實函數(shù)voidg(){cout<<2;}輸出2。所以選項D為正確答案。22、已知將運算符“+”和“*”作為類Complex的成員函數(shù)重載,設(shè)c1和c2是類Complex的對象,則表達式c1+c2*c1等價于()。A、c1.operator*(c2.operator+(c1))B、c1.operator+(c2.operator*(c1))C、c1.operator*(c1.operator+(c2))D、c2.operator+(c1.operator*(c1))標準答案:B知識點解析:表達式c1+c2*c1的含義是c1加上c2與c1的積。23、有如下程序:#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:}在標注號碼的四條語句中正確的是()。A、1B、2C、3D、4標準答案:B知識點解析:因為類BB公有繼承自類AA,所以AA中的保護成員和公有成員在類BB中仍是保護成員和公有成員。在選項B中調(diào)用了公有成員函數(shù)setN(intn){this->n=n;},對保護成員n進行賦值操作。24、下列模板聲明中,有語法錯誤的是()。A、template<typenameT>Tfun(Tx){returnx;}B、template<typenameT>Tfun(Tx,intn){returnx*n;}C、template<classT>Tfun(T*p){return*p;}D、template<classT>TclassA{Tn;};標準答案:D知識點解析:第四個選項是定義類模板的,但是class前面的T是多余的。對于第二個選項,同一個類的對象相乘還是同一個類的對象,但是可能要考慮溢出的問題。25、有如下程序:#includeusingnamespacestd;classBasel{public:Basel(intd){cout<A、1234B、2134C、12D、21標準答案:D知識點解析:程序在創(chuàng)建派生類對象d時,分別調(diào)用基類Base1和Base1的構(gòu)造函數(shù)。國家二級C++機試(選擇題)模擬試卷第3套一、選擇題(本題共35題,每題1.0分,共35分。)1、下列敘述中正確的是()。A、線性表的鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的B、線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)C、線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)D、以上都不正確標準答案:B知識點解析:線性表的存儲分為順序存儲和鏈式存儲。在順序存儲中,所有元素所占的存儲空間是連續(xù)的。而在鏈式存儲的方式中,將存儲空間的每一個存儲結(jié)點分為兩部分,一部分用于存儲數(shù)據(jù)元素的值,稱為數(shù)據(jù)域;另一部分用于存儲下一個元素的存儲序號,稱為指針域。所以線性表的鏈式存儲方式比順序存儲方式的存儲空間要大一些。2、有如下程序:#includeusingnamespacestd;intmain(){intef1=0,f2=1;for(inti=3;i<=6;i++){f=f1+f2;f1=f2;t2=f}cout<A、2B、3C、5D、8標準答案:C知識點解析:在主函數(shù)中for循環(huán)語句執(zhí)行4次,第一次循環(huán)結(jié)束時,變量f的值等于1,f1的值等于1,f2的值等于1;第二次循環(huán)結(jié)束時,變量f的值等于2,n的值等于1,f2的值等于2;第三次循環(huán)結(jié)束時,變量f的值等于3,f1的值等于2,f2的值等于3;第四次循環(huán)結(jié)束時,變量f的值等于5,f1的值等于3,f2的值等于5;結(jié)束循環(huán)。3、在軟件開發(fā)中,需求分析階段可以使用的工具是()。A、N―S圖B、DFD圖C、PAD圖D、程序流程圖標準答案:B知識點解析:在需求分析階段可以使用的工具有數(shù)據(jù)流圖DFD圖,數(shù)據(jù)字典DD,判定樹與判定表,所以選擇B。4、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運算得到關(guān)系T,則所使用的運算為()。A、笛卡爾積B、交C、并D、自然連接標準答案:D知識點解析:自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復的屬性列去掉,所以根據(jù)T關(guān)系中的有序組可知R與S進行的是自然連接操作。5、冒泡排序在最壞情況下的比較次數(shù)是()。A、n(n+1)/2B、nlog2nC、n(n-1)/2D、n/2標準答案:C知識點解析:對n個結(jié)點的線性表采用冒泡排序,在最壞情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。6、下列有關(guān)繼承和派生的敘述中,正確的是()。A、如果一個派生類公有繼承其基類,則該派生類對象可以訪問基類的保護成員B、派生類的成員函數(shù)可以訪問基類的所有成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類標準答案:D知識點解析:私有繼承方式為基類的公用成員和保護成員在派生類中成了私有成員,其私有成員仍為基類私有,但派生類對象可以訪問基類的保護成員,所以基類對象不能賦值給派生類對象。抽象類是指含有純虛擬函數(shù)的類,所以選項D正確。7、帶鏈隊列空的條件是A、front=rear=NULLB、front=rear=一1C、front=NULL且rear=一1D、front=-1且rear=NULL標準答案:A知識點解析:帶鏈隊列空的條件有兩個:一個是front=tear,一個是他們都等于空。8、軟件按功能可以分為:應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是()。A、編譯程序B、操作系統(tǒng)C、教務管理系統(tǒng)D、匯編程序標準答案:C知識點解析:編譯軟件、操作系統(tǒng)、匯編程序都屬于系統(tǒng)軟件,只有c教務管理系統(tǒng)才是應用軟件。9、對于循環(huán)隊列,下列敘述中正確的是()。A、隊頭指針是固定不變的B、隊頭指針一定大于隊尾指針C、隊頭指針一定小于隊尾指針D、隊頭指針可以大于隊尾指針,也可以小于隊尾指針標準答案:D知識點解析:循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環(huán)利用的隊列結(jié)構(gòu)所以隊頭指針有時可能大于隊尾指針有時也可能小于隊尾指針。10、下列對于軟件測試的描述中正確的是()。A、軟件測試的目的是證明程序是否正確B、軟件測試的目的是使程序運行結(jié)果正確C、軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤D、軟件測試的目的是使程序符合結(jié)構(gòu)化原則標準答案:C知識點解析:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。一個好的測試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯誤的用例;一個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。軟件測試的目的要以查找錯誤為中心,而不是為了演示軟件的正確功能。11、下面不屬于軟件工程過程的4種基本活動A、軟件規(guī)格說明B、軟件開發(fā)C、軟件演進D、軟件測試標準答案:D知識點解析:軟件工程過程的4種基本活動是:軟件規(guī)格說明、軟件開發(fā)、軟件確認、軟件演進。12、在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。A、人工管理階段B、文件系統(tǒng)階段C、數(shù)據(jù)庫系統(tǒng)階段D、三個階段相同標準答案:C知識點解析:數(shù)據(jù)管理技術(shù)的發(fā)展經(jīng)歷了三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。人工管理階段無共享,冗余度大;文件管理階段共享性差,冗余度大;數(shù)據(jù)庫系統(tǒng)管理階段共享性大,冗余度小。13、一間宿舍可住多個學生,則實體宿舍和學生之間的聯(lián)系是()。A、—對一B、一對多C、多對一D、多對多標準答案:B知識點解析:兩個實體集間的聯(lián)系可以有下面幾種:一對一的聯(lián)系、一對多或多對一的聯(lián)系和多對多的聯(lián)系。由于一個宿舍可以住多個學生,所以它們的聯(lián)系是一對多聯(lián)系。14、有以下程序,在橫線應添加()。#include<iostream>usingnamespacestd;classTestClass{public:TestClass(intn){number=n;}//拷貝構(gòu)造函數(shù)~TestClass(){}private:intnumber;};TestClassfun(TestClassp){TestClasstemp(p);returntemp;}intmain(){TestClassobj1(10),obj2(0);TestClassobj3(obj1);obj2=fun(obj3);return0:}A、TestClass(TestClass&other){number=other.number;}B、TestClass(TestClassother){number=other.number;}C、TestClass(TestClass&other){number;}D、TestClass(&other){number=other.number;}標準答案:A知識點解析:拷貝構(gòu)造函數(shù)也是構(gòu)造函數(shù),但它只有一個參數(shù),這個參數(shù)是本類的對象,即other,所以賦值操作將本類的參數(shù)other.number賦值給number;而且采用對象的引用的形式,也就是&other。15、下列敘述中正確的是A、對象具有封裝性B、對象標識可以不唯一C、對象間的通信是靠方法調(diào)用D、對象是屬性名和屬性的封裝體標準答案:A知識點解析:對象的特征有:唯一性、分類性、繼承性和多態(tài)性(多形性)。對象的要素有:抽象、封裝性(信息隱藏)和共享性。對象標識是唯一的。16、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、交C、投影D、并標準答案:A知識點解析:在實際應用中,最常用的連接是一個叫自然連接的特例。它滿足下面的條件:兩關(guān)系間有公共域;通過公共域的相等值進行連接。通過觀察三個關(guān)系R,S,T的結(jié)果可知關(guān)系T是由關(guān)系R和S進行自然連接得到的。17、設(shè)一棵滿二叉樹共有15個結(jié)點,則在該滿二叉樹中的葉子結(jié)點數(shù)為()。A、7B、8C、9D、10標準答案:B知識點解析:在具有n個結(jié)點的滿二叉樹,其非葉子結(jié)點數(shù)為int(n/2),而葉子結(jié)點數(shù)等于總結(jié)點數(shù)減去非葉子結(jié)點數(shù)。本題n=15,故非葉子結(jié)點數(shù)等于int(15/2)=7,葉子結(jié)點數(shù)等于15-7=8。18、下列敘述中,錯誤的是()。A、false是一個邏輯型常量B、b是一個字符型常量C、365是一個int常量D、3.1415926是一個double常量標準答案:B知識點解析:字符常量簡稱字符,它以單引號作為起止符號,中間有一個或若干個字符?;蛘咭浴埃堋遍_頭的包括多個字符的字符序列也符合規(guī)定的字符常量。19、數(shù)據(jù)獨立性是數(shù)據(jù)庫技術(shù)的重要特點之一,所謂數(shù)據(jù)獨立性是指A、數(shù)據(jù)與程序獨立存放B、不同的數(shù)據(jù)被存放在不同的文件中C、不同的數(shù)據(jù)只能被對應的應用程序所使用D、以上三種說法都不對標準答案:D知識點解析:數(shù)據(jù)獨立性是指數(shù)據(jù)庫中數(shù)據(jù)獨立于應用程序而不依賴于應用程序,即數(shù)據(jù)與程序間的互不依賴性。也就是說數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)與存取方式的改變不會影響應用程序。數(shù)據(jù)的獨立性包括物理獨立性和邏輯獨立性兩級。①物理獨立性:數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)、存取方式等)的改變,如存儲設(shè)備的更換、物理存儲的更換、存取方式改變等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應用程序的變化。②邏輯獨立性:數(shù)據(jù)庫總體邏輯結(jié)構(gòu)的改變,如修改數(shù)據(jù)模式、增加新的數(shù)據(jù)類型、改變數(shù)據(jù)間聯(lián)系等,不需要相應的應用程序改變,這就是數(shù)據(jù)的邏輯獨立性。20、有如下類定義:classTV{public:Tv(intS=41,stringbr=“TCL”):size(s),brand(br){}一Tv(){}private:intsize;stringbrand;};若執(zhí)行語句TVli,*net[2],company[3];則Tv類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是()。A、6次B、4次C、3次D、2次標準答案:B知識點解析:本題考查構(gòu)造函數(shù)和析構(gòu)函數(shù),題中定義了一個對象以及對象數(shù)組,那么構(gòu)造函數(shù)需要執(zhí)行4次,而,*net[2]并不執(zhí)行構(gòu)造函數(shù),所以答案為B。21、在關(guān)系模型中,每一個二維表稱為一個A、關(guān)系B、屬性C、元組D、主碼(鍵)標準答案:A知識點解析:每個二維表代表一個關(guān)系,由表框架及表的元組組成。22、生成派生類對象時,派生類構(gòu)造函數(shù)調(diào)用基類構(gòu)造函數(shù)的條件是()。A、無需任何條件B、基類中顯示定義了構(gòu)造函數(shù)C、派生類中顯式定義了構(gòu)造函數(shù)D、派生類構(gòu)造函數(shù)明確調(diào)用了基類構(gòu)造函數(shù)標準答案:A知識點解析:因為派生類從基類中繼承,它含有基類中的數(shù)據(jù)成員和函數(shù)成員,所以當生成派生類對象時,能無條件的調(diào)用基類的構(gòu)造函數(shù)。23、有如下兩個類定義:classAA{};classBB{AAv1,*v2;BBv3:int*v4;};其中有一個成員變量的定義是錯誤的,這個變量是()。A、vlB、v2C、v3D、v4標準答案:C知識點解析:在定義類的數(shù)據(jù)成員時,類中的數(shù)據(jù)成員可以是任意類型,包括整型、浮點型、字符符型、數(shù)組、指針和引用等,也可以是對象。但是要注意,只有另外一個類的對象,才可以作為該類的成員,即作為類的成員對象存在。自身類的對象是不可以作為自身類的成員存在,但自身類的指針可以。對于本題,在定義類BB時,不能包括其對象v3。24、建立一個類對象時,系統(tǒng)自動調(diào)用()。A、析構(gòu)函數(shù)B、構(gòu)造函數(shù)C、靜態(tài)函數(shù)D、友元函數(shù)標準答案:B知識點解析:建立一個類的對象時,編譯程序需要為對象分配存儲空間,進行必要的初始化。在C++中,這項工作是由構(gòu)造函數(shù)來完成。25、有如下程序段:inti=0,j=1;int&r=i;//①r=j;//②int*p=&i://③*p=&r;//④其中會產(chǎn)生編譯錯誤的語句是()。A、④B、③C、②D、①標準答案:A知識點解析:此題考查的是指針和引用。本題中,語句①是一條合法的引用聲明語句,使得變量i被r引用;語句②通過引用r將變量j的值賦給變量i;語句③聲明了指針變量p,并初始化指向變量i;語句④中*p代表了變量i的值,要將&r賦給*p,這會使編譯器產(chǎn)生類型不符的錯誤提示。26、在類聲明中,緊跟在“public;”后聲明的成員的訪問權(quán)限是()。A、私有B、公有C、保護D、默認標準答案:B知識點解析:類中提供了3種訪問控制的權(quán)限:公有。私有和保護。其中公有類型定義了類的外部接口,任何一個外部的訪問都必須通過外部接口進行。私有類型的成員只允許本類的成員函數(shù)訪問,來自類外部的任何訪問都是非法的,保護類型介于公有類型和私有類型之間,在繼承和派生時可以體現(xiàn)出其特點。27、在類聲明中,緊跟在“public:”后聲明的成員的訪問權(quán)限是()。A、私有B、公有C、保護D、默認標準答案:B知識點解析:類中提供了3種訪問控制的權(quán)限:公有,私有和保護。其中公有類型定義了類的外部接口,任何一個外部的訪問都必須通過外部接口進行。私有類型的成員只允許本類的成員函數(shù)訪問,來自類外部的任何訪問都是非法的,保護類型介于公有類型和私有類型之間,在繼承和派生時可以體現(xiàn)出其特點。28、如需要向一個二進制文件尾部添加數(shù)據(jù),則該文件的打開方式為()。A、ios_base::appB、ios_base::binary|ios—base::outC、ios—base::outD、ios_base::binary|ios_base::app標準答案:D知識點解析:iosbase::binary模式是作為二進制文件打開,iosbase::app模式是作為添加數(shù)據(jù)而打開(總是在尾部寫)。29、派生類的成員函數(shù)不能訪問基類的()。A、公有成員和保護成員B、公有成員C、私有成員D、保護成員標準答案:C知識點解析:此題考查的是派生類對基類成員的訪問。派生類對基類的各個成員的訪問能力與繼承方式無關(guān),其成員不能訪問基類中的私有成員,可以訪問基類的公有成員和保護成員。30、若AA為一個類,a為該類的非靜態(tài)數(shù)據(jù)成員,在該類的一個成員函數(shù)定義中訪問a時,其書寫格式為()。A、aB、AA.a(chǎn)C、a{}D、AA::a{}標準答案:A知識點解析:類AA的成員函數(shù)直接引用類AA的非靜態(tài)數(shù)據(jù)成員。31、若要對類BigNumber中重載的類型轉(zhuǎn)換運算符long進行聲明,下列選項中正確的是()。A、operatorlong()const;B、operatorlong(bigNumber);C、longoperatorlong()const;D、longoperatorlong(BigNumber);標準答案:A知識點解析:在重載類型轉(zhuǎn)換符時,由于運算符本身已經(jīng)表示出返回值類型,因此不需要返回值類型的聲明。32、有如下函數(shù)模板:templateTcast(Uu){returnu;}其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是()。A、cast(i);B、cast<>(i);C、cast(i);D、cast(i);標準答案:D知識點解析:此題考查的是模板函數(shù)的調(diào)用。本題中cast()函數(shù)的實參i只能確定模板參數(shù)U的類型為int,而不能確定另外一個模板參數(shù)T,故選項A、B錯誤;C++語言不允許隱式地將int轉(zhuǎn)化為char*,故選項C錯誤。33、下列關(guān)于類模板的描述中,錯誤的是()。A、類模板的成員函數(shù)都是模板函數(shù)B、可以為類模板參數(shù)設(shè)置默認值C、類模板描述了一組類D、類模板中只允許有一個類型參數(shù)標準答案:D知識點解析:類模板就是一系列相關(guān)類的模型或樣板,這些類的成員組成相同,成員函數(shù)的源代碼形式相同,所不同的只是所針對的類型(成員的類型以及成員函數(shù)的參數(shù)和返回值的類型)。一個類模板的格式是:temp1ate<<模板形參表聲明>><類聲明>,<模板形參表聲明>是由一個或多個模板形參組成。在定義類模板時,可以為模板形參表聲明的最后若干個參數(shù)設(shè)置默認值。34、下列關(guān)于C++流的描述中,錯誤的是()。A、cout>>’A’表達式可輸出字符AB、eof()函數(shù)可以檢測是否到達文件尾C、對磁盤文件進行流操作時,必須包含頭文件fstreamD、以ios_base::out模式打開的文件不存在時,將自動建立一個新文件標準答案:A知識點解析:cout是一個標準輸出流對象。>>稱之為提取運算符,它的功能是從輸入流中提取數(shù)據(jù)賦值給一個變量。<<為插入運算符,其功能是把表達式的值插入到輸出流中。當系統(tǒng)執(zhí)行cout<<x操作時,首先根據(jù)x值的類型調(diào)用相應的插入運算符重載器函數(shù),把x的值傳送給對應的形參,接著執(zhí)行函數(shù)體,把x的值輸出到顯示器屏幕上,在當前屏幕光標位置處顯示出來,然后返回ostream流,以便繼續(xù)使用插入運算符輸出下一個表達式的值。對于本題來說,要輸出字符‘A’的值應該寫成cout<<’A’。因而選項A)是錯誤的。35、下列運算符中,不能被重載的是()。A、&&B、!=C、.D、++標準答案:C知識點解析:此題考查的是運算符重載。在C++中,只有.、.*、.>*、::、?:這五個運算符不能重載。國家二級C++機試(選擇題)模擬試卷第4套一、選擇題(本題共23題,每題1.0分,共23分。)1、結(jié)構(gòu)化程序設(shè)計的基本原則不包括()。A、多態(tài)性B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:結(jié)構(gòu)化程序設(shè)計的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A。2、下列枚舉類型的定義中,包含枚舉值3的是()。A、enumtest{RED,YELLOW,BLUE,BLACK};B、enumtest{RED,YELLOW=4,BLUE,BLACK};C、enumtest{RED=-1,YELLOW,BLUE,BLACK};D、enumtest{RED,YELLOW=6,BLUE,BLACK};標準答案:A知識點解析:聲明枚舉類型的語法格式為:enum<類型名>{<枚舉值表>};<枚舉值表>包含多個枚舉值,它們用逗號隔開,每個枚舉值就是一個枚舉常量。枚舉值有兩種定義形式:一是<值名>;二是<值名>=<整型常量>。關(guān)于枚舉類型有以下4點說明:①一個enum類型實際上是int類型的一個子集,其每一個枚舉值代表一個整數(shù)。②n個枚舉值全部未賦常量值時,它們自左至右分別與整數(shù)0,l,…n.1對應。③若第i個枚舉值賦常量值為m,則其未賦常量值的后續(xù)枚舉值分別與整數(shù)m+l,m+2…對應,直到下一個賦了值的枚舉值或結(jié)束。因此,為枚舉值賦的整型常量值應從左到右遞增。④枚舉類型的聲明也可作為組聲明若干整型符號常量的方法。也就是說,把每個要聲明的符號常量作為一個枚舉值,將各個枚舉值合在一起定義成一個枚舉類型。對于本題來說,在選項A)巾,對4個枚舉值沒有賦常量值,所以它們從左到右與整數(shù)0,1,2,3相對應。因而選項A)為正確選項。3、閱讀下面程序:#include<iostream.h>fun(inta,intB.{intc;c=a+b:returnC;}voidmain(){intx=6,y=7,z=8,r;r=fun((x--,y++,x+y),z--);cout<<r<<end1;}則該程序的輸出結(jié)果是()。A、11B、20C、21D、31標準答案:C知識點解析:由主函數(shù)入手,定義變量x、y、z,然后調(diào)用函數(shù)fun,其中的參數(shù)為(x--,y++,x+y)的計算結(jié)果和z--的計算結(jié)果,所以調(diào)用fun(13,8)計算結(jié)果為21。4、下列鏈表中,其邏輯結(jié)構(gòu)屬于非線性結(jié)構(gòu)的是()。A、二叉鏈表B、循環(huán)鏈表C、雙向鏈表D、帶鏈的棧標準答案:A知識點解析:二叉鏈表作為樹的存儲結(jié)構(gòu)。鏈表中結(jié)點的兩個鏈域分別指向該結(jié)點的第一個孩子結(jié)點和下一個兄弟結(jié)點。5、某二叉樹共有12個結(jié)點,其中葉子結(jié)點只有1個。則該二叉樹的深度為(根結(jié)點在第1層)A、3B、6C、8D、12標準答案:D知識點解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。題目中的二叉樹的葉子結(jié)點為1,因此度為2的結(jié)點的數(shù)目為0,故該二叉樹為12層,每層只有一個結(jié)點。6、有如下程序:#includeusingnamespacestd;intmain(){int*p;*P=9;cout<<"Thevalueatp:"<<*p;return0;}編譯運行程序?qū)⒊霈F(xiàn)的情況是()。A、編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標準答案:D知識點解析:此題考查的是指針的使用。本題中,在給*p賦值前,指針p并沒有指向一個具體的對象。此時可以通過編譯,但運行時由于p中為隨機值,該賦值可能會破壞內(nèi)存中某個重要的地址空間的內(nèi)容,導致程序出錯。7、已知遞歸函數(shù)fun的定義如下:intfun(intn){if(n<=1)return1;//遞歸結(jié)束情況elsereturnn*fun(n.2);//遞歸}則函數(shù)調(diào)用語句fun(5)的返回值是()。A、5B、12C、15D、30標準答案:C知識點解析:遞歸函數(shù)fun被定義為含有參數(shù)intn,返回整型。其中fun函數(shù)遞歸調(diào)用本身,當n=1時,fun返回1,如果大于1那么執(zhí)行n*fun(n-2)。所以,當n等于5時,執(zhí)行5*fun(3);當3時繼續(xù)調(diào)用fun,3*fun(1),即fun(5)=5*(3*fun(1)),答案為15。8、若從為一個類,a為該類的非靜態(tài)數(shù)據(jù)成員,在該類的一個成員函數(shù)定義中訪問a時,其書寫格式為()。A、aB、AA.a(chǎn)C、a{)D、AA∷a{}標準答案:A知識點解析:類從的成員函數(shù)直接引用類從的非靜態(tài)數(shù)據(jù)成員。9、對于語句cout<<endl<<x;中的各個組成部分,下列敘述中錯誤的是()。A、“cout”是一個輸出流對象B、“end1”的作用是輸出回車換行C、“x”是一個變量D、“<<”稱作提取運算符標準答案:D知識點解析:語句cout<<end1<<x;作用是輸出回車和變量x的值。所以題目中選項A、B、C的敘述均正確,只有選項D敘述錯誤,“<<”是插入運算符。10、閱讀下面的程序:#include<iostream.h>voidmain(){intx;cin>>x;if(x++>5)cout<<x<<end1;elsecout<<x--<<end1;}如果兩次執(zhí)行上述程序,且鍵盤輸入分別為4和6,則輸出結(jié)果分別是()。A、4,6B、3,6C、4,7D、5,7標準答案:D知識點解析:此題首先讀入數(shù)值4賦給變量x,因為x++>5不成立,因為“++”后綴,之后x的值變?yōu)?,執(zhí)行語句cout<<x-<<end1;輸出:5,之后x的值變?yōu)?。當讀入的數(shù)值是6時,因為x++>》5成立,所以執(zhí)行語句cout<<x<<end1;輸出7。11、下列關(guān)于類成員對象構(gòu)造函數(shù)調(diào)用順序的敘述中,正確的是()。A、與它們在初始化列表中的順序相同B、與它們在類中聲明的順序相同C、與析構(gòu)函數(shù)的調(diào)用順序相同D、順序不確定標準答案:B知識點解析:類成員對象構(gòu)造函數(shù)的調(diào)用是按照在類中定義的順序進行的,而不是按照構(gòu)造函數(shù)說明后的冒號順序進行構(gòu)造的。12、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運算得到關(guān)系T,則所使用的運算為()。A、并B、自然連接C、笛卡爾積D、交標準答案:D知識點解析:關(guān)系R與S經(jīng)交運算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的有序組組成的,記為R∩S。13、下列敘述中正確的是A、對象標識具有唯一性B、屬性是對象的動態(tài)屬性C、任何對象都必須有多態(tài)性D、對象是對象屬性和方法的封裝體標準答案:A知識點解析:每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。14、按照標識符的要求,下列選項中,()符號不能組成標識符。A、連接符B、下劃線C、大小寫字母D、數(shù)字字符標準答案:A知識點解析:此題考查的是標識符。標識符是由數(shù)字、字母以及下劃線構(gòu)成,其第一個字符必須是字母或下劃線,中間不能有空格:標識符的長度是任意的,但由于編譯系統(tǒng)的限制一般不超過31個字符;標識符中的大小寫字母是不同的;定義標識符時不能采用系統(tǒng)的保留字。15、已知枚舉類型聲明語句為:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10}:則下列說法中錯誤的是()。A、枚舉常量YELLOW的值為1B、枚舉常量RED的值為6C、枚舉常量BLACK的值為10D、枚舉常量WHITE的值為1標準答案:D知識點解析:此題考查的是枚舉類型的聲明。聲明枚舉類型的語法形式為:enum類型名{枚舉值表}。需注意的是:當n個枚舉值全部未賦常量值時,它們自左至右分別與整數(shù)0、1、2、3…n-1對應:若第i個枚舉值賦常量值為m,則其未賦常量值的后續(xù)枚舉值分別與整數(shù)m+1、m+2…對應,直到下一個賦了值的枚舉值或結(jié)束。16、下列語句中錯誤的是()。A、constinta;B、constinta=10;C、eonstint*point=0;D、constint*point=newint(10);標準答案:A知識點解析:由關(guān)鍵字const聲明符號常量的同時必須為其賦初值。17、下列關(guān)于運算符重載的描述中,錯誤的是()。A、∷運算符不能重載B、類型轉(zhuǎn)換運算符只能作為成員函數(shù)重載C、將運算符作為非成員函數(shù)重載時必須定義為友元D、重載[]運算符應完成“下標訪問”操作標準答案:C知識點解析:C++把重載的運算符視為特殊的函數(shù),稱為運算符函數(shù)?!斑\算符重載”是針對C++中原有運算符進行的,不可能通過重載創(chuàng)造出新的運算符。18、有如下程序:#includeusingnamespacestd;intmain(){cout.fill(’*’);cout.width(6);cout.fill(’#’);cout<<123<A、###123B、123###C、***123D、123***標準答案:A知識點解析:此題考查的是I/O格式化輸出。函數(shù)width(intn)設(shè)置輸入輸出寬度,當實際數(shù)據(jù)寬度小于制定的寬度時,多余的位置用填充字符填滿;當實際數(shù)據(jù)寬度大于設(shè)置的寬度時,仍按實際寬度輸出;函數(shù)fill(charc)用來設(shè)置填充字符。19、有如下兩個類定義classxx{private:dOublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;potected:doubley2;public:doubley3;};在類YY中保護成員變量的個數(shù)是()。A、1B、2C、3D、4標準答案:C知識點解析:在C++中派生類從基類保護繼承時,基類的公有成員在派生類中改變?yōu)楸Wo成員,基類的保護成員在派生類中仍為保護成員。所以對于本題來說,YY類保護繼承自類XX,那么類XX中的公有成員x3和保護成員x2在派生類中都成為保護成員,再加上類YY。中的保護成員y2,因此在派生類YY中保護成員的個數(shù)為3。20、下列有關(guān)繼承和派生的敘述中,正確的是()。A、派生類不能訪問基類的保護成員B、作為虛基類的類不能被實例化C、派生類應當向基類的構(gòu)造函數(shù)傳遞參數(shù)D、虛函數(shù)必須在派生類中重新實現(xiàn)標準答案:C知識點解析:此題考查的是繼承和派生。無論使用哪種繼承方式,派生類中的成員都不能訪問基類中的私有成員,而可以訪問基類中的公有成員和保護成員,所以選項A錯誤;C++中只有抽象類不能被實例化,而虛基類不一定非得是抽象類。所以選項B錯誤;在派生類中可以重新定義從基類繼承下來的虛函數(shù),也可以不重新定義,故選項D錯誤。21、有如下程序;#includeusingnamespacestd;classB{public:virtualvoidshow(){tout<<"B";}};classD:publicB{public:voidshow(){cout<<"D";}};voidfun1(B*ptr){ptr->show();)voidfun2(B&ref){ref.show();}voidfun3(Bb){b.show();)intmain(){Bb,*p=newD;Dd;fun1(p);fun2(b);fun3(d);return0:}程序的輸出結(jié)果是()。A、BBBB、BBDC、DBBD、DBD標準答案:C知識點解析:此題考查的是虛函數(shù)與多態(tài)性。在成員函數(shù)的聲明前面加上Virual關(guān)鍵字,即可把函數(shù)聲明為虛函數(shù);在C++中,一個基類指針可以用于指向它的派生類對象,而且通過這樣的指針調(diào)用虛函數(shù)時,被調(diào)用的是該指針實際所指向的對象類的那個重定義版本。此題中,fun1()和fun2()的形參分別是基類的指針和引用,給fun1()傳入的實參是指向派生類對象的指針p,fun1()將調(diào)用D類中的show()輸出字符‘D’;給fun2()出入的實參是基類對象,fun2()調(diào)用類B中的show()輸出字符‘B’;fun3()由于形參是基類對象,調(diào)用的始終都是基類的show(),輸出字符‘B’。故最終輸出結(jié)果是DBB。22、C++系統(tǒng)預定了4個用于標準數(shù)據(jù)流的對象,下列選項中不屬于此類對象的是()。A、coutB、cinC、cerrD、cset標準答案:D知識點解析:C++流有4個預定義的流對象,它們分別是:cin標準輸入;cout標準輸出;cerr標準出錯信息輸出;clog帶緩沖的標準出錯信息輸出。23、在下列枚舉符號中,用來表示“相對于當前位置”文件定位方式的是()。A、iosbase::curB、iosbase::begC、iosbase::outD、iosbase::end.標準答案:A知識點解析:C++流的定位方式(也就是指針移動方式)有三種,被定義為ios_base::seek_dir中的一組枚舉符號:ios_base::beg相當于文件首;ios_base::cur相當于當前位置(負數(shù)表示當前位置之前);ios_base::end相對于文件尾。國家二級C++機試(選擇題)模擬試卷第5套一、選擇題(本題共20題,每題1.0分,共20分。)1、對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序標準答案:D知識點解析:除了堆排序算法的比較次數(shù)是O(nlog2n),其他的都是n(n一1)/2。2、如果有以下定義及初始化:inta=3,*p=&a;則由此可以推斷,*p的值是()。A、變量a的值,即3B、變量a的地址值C、變量P的地址值D、無意義標準答案:A知識點解析:題目中的定義初始化是定義一個整型變量a,初始化為3。而“int*p=&a;”是定義一個整型指針變量p,將變量a的地址作為指針變量p的初值。木p是指針變量p指向的存儲單元的內(nèi)容,即變量值。所以木p指向a的值3。3、軟件是指()。A、程序B、程序和文檔C、算法加數(shù)據(jù)結(jié)構(gòu)D、程序、數(shù)據(jù)與相關(guān)文檔的完整集合標準答案:D知識點解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分。是包括程序、數(shù)據(jù)與相關(guān)文檔的完整集合。軟件由兩部分組成:一是機器可執(zhí)行的程序和數(shù)據(jù);二是機器不可執(zhí)行的,與軟件開發(fā)、運行、維護、使用等有關(guān)的文檔。4、假定a=3,下列程序的運行結(jié)果是()。#include<iostream.h>intfun(intn);voidmain(){cout<<’’Pleaseinputanumber:’’;inta,result=0;cin>>a;result=fun(a);cout<<result<<end1;}intfun(intn){iIltp=1,result=0;tbr(inti=1;i<=n;i++){p*=i;result+=p;}returnresult;}A、4B、8C、9D、20標準答案:C知識點解析:由程序main主函數(shù)入手,調(diào)用fun函數(shù)獲得返回值result輸出。題目中假定a=3,即調(diào)用語句fun(a.)中的輸入?yún)?shù)為a,進入fun函數(shù),在for循環(huán)中當i小于等于n,即輸入?yún)?shù)3時,循環(huán)3次執(zhí)行“p*=i;result+=p;”語句。即執(zhí)行三次p=p*i,result=result+p,result的結(jié)果為9。返回的fun函數(shù)結(jié)果為9,即“cout<<result<<end1;”輸出9。5、有如下程序:#includeusingnamespacestd;classPoint{public:staticintnumber;public:Pointo{number++;}

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論