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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

國家二級C++機試(選擇題)模擬試卷16(共9套)(共222題)國家二級C++機試(選擇題)模擬試卷第1套一、選擇題(本題共25題,每題1.0分,共25分。)1、由于常對象不能被更新,因此()。A、通過常對象只能調用它的常成員函數B、通過常對象只能調用靜態(tài)成員函數C、常對象的成員都是常成員D、通過常對象可以調用任何不改變對象值的成員函數標準答案:A知識點解析:本題考查常對象的基本知識,常對象只能調用它的常成員函數,而不能調用非const函數,常對象的成員函數不一定都是常成員函數,只需保證其數據成員是常數據成員即可。所以本題選A。2、有如下函數模板:ternplateTcast(Uu){returnu;}其功能是將U類型數據轉換為T類型數據。已知i為int型變量,下列對模板函數cast的調用中正確的是()。A、cast(i);B、cast<>(i);C、cast(i);D、cast(i);標準答案:D知識點解析:本題考查函數模板的基本運用,屬于基礎知識。函數模板實際上是建立一個通用函數,其函數類型和形參類型不具體指定,用一個虛擬的類型代表,這個通用函數就是函數模板。函數模板可以設定默認參數,這樣在調用模板函數時就可以省略實參,函數模板的實例就是一個函數的定義。所以本題答案為D。3、假定MyClass為一個類,那么下列的函數說明中,()為該類的析構函數。A、void~MyClass();B、~MyClass(intn);C、MyClass();D、~MyClass();標準答案:D知識點解析:C++語言中析構函數為符號“~”加類名,且析構函數沒有返回值和參數,故前不加void關鍵字。所以正確的形式應該是~MyClass()。4、下列敘述中正確的是()。A、程序執(zhí)行的效率與數據的存儲結構密切相關B、程序執(zhí)行的效率只取決于程序的控制結構C、程序執(zhí)行的效率只取決于所處理的數據量D、以上都不正確標準答案:A知識點解析:影響程序執(zhí)行效率的因素有很多,如數據的存儲結構、程序處理的數據量、程序的算法等。順序存儲結構和鏈式存儲結構在數據插入和刪除操作上的效率就存在差別。其中,鏈式存儲結構的效率要高一些。5、下面關于算法的敘述中,正確的是()。A、算法的執(zhí)行效率與數據的存儲結構無關B、算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止C、算法的空間復雜度是指算法程序中指令(或語句)的條數D、以上三種描述都正確標準答案:B知識點解析:算法在運行過程中需輔助存儲空間的大小稱為算法的空間復雜度。算法的有窮性是指一個算法必須在執(zhí)行有限的步驟后結束。6、下列各組類型聲明符中,含義相同的一組是()。A、unsignedlongim和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int標準答案:B知識點解析:本題考查整型變量的類型,A、c選項中前者為無符號的,后者為有符號的,D選項中shortint為2個字節(jié),int為4個字節(jié)。7、執(zhí)行下列語句段后,輸出字符“*”的個數是()。for(inti=50;i>1;i-=2)cout<<’*’;A、24B、25C、26D、50標準答案:B知識點解析:本題考查for循環(huán)語句,題目中每執(zhí)行完循環(huán)體后,i都會減2,那么只有50到2之間的偶數才能輸出“*”,所以總共輸出25次。8、數據庫管理系統(tǒng)中負責數據模式定義的語言是()。A、數據定義語言B、數據管理語言C、數據操縱語言D、數據控制語言標準答案:A知識點解析:數據庫管理系統(tǒng)一般提供相應的數據語言,它們分別是:數據定義語言,負責數據的模式定義與數據的物理存取構建;數據操縱語言,負責數據的操縱,包括查詢及增、刪、改等操作;數據控制語言,負責數據完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復等功能。9、靜態(tài)數據成員在()進行初始化。A、成員函數列表B、類體外C、構造函數D、成員函數標準答案:B知識點解析:靜態(tài)數據成員不能在參數初始化表對靜態(tài)數據成員初始化,只能在類體外進行初始化。10、有三個關系R、S和T如下:由關系R和S通過運算得到關系T,則所使用的運算為()。A、并B、自然連接C、笛卡爾積D、交標準答案:D知識點解析:關系R與S經交運算后所得到的關系是由那些既在R內又在S內的有序組組成的,記為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<枚舉類型名>{<枚舉元素表>):其中:關鍵詞enum表示定義的是枚舉類型,枚舉類型名由標識符組成,而枚舉元素表由枚舉元素或枚舉常量組成。其中enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2}的值由0開始,即0,1,2,3。D中的本題中的枚舉類型中的數據值Wednesday為2,而Friday的值賦值為2,所以判斷Wednesday等于Friday的表達式值為真,即true。即選擇A。12、某系統(tǒng)總體結構如下圖所示該系統(tǒng)結構圖是A、層次結構B、網狀結構C、分支結構D、循環(huán)結構標準答案:A知識點解析:層次結構(hicrarchy)是一種操作系統(tǒng)的組織結構,其提供了一種隔離操作系統(tǒng)各層功能的模型。其包括歸屬層次結構dissonance-attributionhierarchy維度層次結構dimensionhiemrchv層次結構數據庫hierarchicaldatabase等。網狀結構這一名詞來自早期解剖學家用光學顯微鏡對腦干中央區(qū)網絡狀外觀的描述,在光鏡下這部分組織學的特點是神經細胞分散,形態(tài)各異,大小不等,神經纖維交錯穿行其間,形成一種灰白質交織的結構,稱之為網狀結構。分支結構的執(zhí)行是依據一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在于構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。循環(huán)結構可以減少源程序重復書寫的工作量,用來描述重復執(zhí)行某段算法的問題,這是程序設計中最能發(fā)揮計算機特長的程序結構。13、在下列關鍵字中,不能用來表示繼承方式的是()。A、privateB、staticC、publicD、protected標準答案:B知識點解析:此題考查的是繼承方式。繼承方式有私有(研vate)、保護(protected)、公有(public)三種。14、下列關于虛基類的描述中,錯誤的是()。A、使用虛基類可以消除由多繼承產生的二義性B、構造派生類對象時,虛基類的構造函數只被調用一次C、聲明“classB:virtualpublicA”說明類B為虛基類D、建立派生類對象時,首先調用虛基類的構造函數標準答案:C知識點解析:虛基類是為了消除由多重繼承產生的二義性而提出的。虛基類的說明格式是:Class<類名>:virtual<繼承方式><基類名>,其中關鍵字virtual與繼承方式的位置無關,但必須位于基類名之前,且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知識點解析:主函數中定義TestClass1的對象aa,*p對象指針,TestClass2的對象bb以及TestClass3的對象cc。p指向cc,TestClass3為TestClass2的派生類,構造函數輸出2。TestClass3中fun函數中為TestClass2中的fun,調用TestClass2的構造函數,輸出2。“p->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í)行這個程序的輸出結果是()。A、BaseBaseB、BaseDerivedC、DerivedBaseD、DerivedDerived標準答案:B知識點解析:此題考查的是虛函數的概念。在C++語言中,一個派生類的對象可以被它的任何一個基類的指針所指向,若基類和派生類中存在一模一樣的成員函數。那么通過該基類指針調用這樣的成員函數時,若這個成員函數被定義成虛函數,那么就調用派生類中的;否則就調用基類中的。本題中,在f()函數中,形參b是一個基類的引用,它引用的是主函數中定義的派生類對象obi,所以在調用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知識點解析:此題考查的是類的定義。一個類的長數據成員的初始化只能在成員初始化列表中進行,故選項A錯誤;常成員函數不能更新對象的數據成員,故選項B錯誤;靜態(tài)成員函數可以直接訪問類中說明的靜態(tài)成員,但不能直接訪問類中說明的非靜態(tài)成員,故選項C錯誤。18、下列關于C++預定義流對象的敘述中,正確的是()。A、cin是C++預定義的標準輸入流對象B、cin是C++預定義的標準輸入流類C、cout是C++預定義的標準輸入流對象D、cout是C++預定義的標準輸入流類標準答案:A知識點解析:cin為istream流類的標準輸入對象,標準輸入設備就是指鍵盤。19、有如下程序:#include<iostream>usingnamespacestd;classBASE{public:~BASE(){cout<<"BASE";}};classDERIVED:publicBASE{public:~DERIVED(){cout<<"DERIVED";}};intmain(){DERIVED.x;return0;}執(zhí)行后的輸出結果是()。A、BASEB、DERIVEDC、BASEDERIVEDD、DERIVEDBASE標準答案:D知識點解析:此題考查的是派生類的定義和使用。當對象被刪除時,派生類的析構函數就被執(zhí)行。由于析構函數不能被繼承,因此在執(zhí)行派生類的析構函數時,基類的析構函數也將被調用。執(zhí)行順序是先執(zhí)行派生類的析構函數,再執(zhí)行基類的析構函數,其順序與執(zhí)行構造函數的順序正好相反。20、在一個抽象類中,一定包含有()。A、虛函數B、純虛函數C、模板函數D、重載函數標準答案:B知識點解析:擁有純虛函數的類叫做抽象類,所以抽象類中必然包含有虛函數。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中的常成員函數h()返回數據成員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的構造函數,在構造函數中給變量xx和yy賦初值0。語句②是計算點p距原點的距離的函數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:}運行這個程序的輸出結果是()。A、DDB、BBC、BDD、DB標準答案:D知識點解析:在基類B中定義虛函數f()和成員函數g(),而在派生類D中定義了函數f()和同名函數g()。而函數h中的形參為指向基類的指針變量p,所以在主函數中執(zhí)行h(&obj)時,會調用派生類的函數f(),輸出D,再調用基類的函數g(),輸出B。24、有如下程序:#includeUsingnamespacestd;ClassAmount{intamount;public;Amount(intn=0):amount(n){}IntgetAmountoconst{returnamount;}Amount&operator+=(Amounta){amount+=a.amount;return;}};intmain(){Amountx(3),y(7);x+=y;cout<A、*thisB、thisC、&amountD、amount標準答案:A知識點解析:此題考查的是“+”運算符重載和this指針。語句amount+=a.amount;實現3和7的求和得到amount=10,要使程序的輸出結果為10,又因為函數的返回值類型為Amoum&,所以橫線處填入*this。25、有如下程序:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){cout.fill(’*’);cout<<left<<setw(4)<<123<<<’’OK’’<<endl;return0;}執(zhí)行這個程序的輸出結果是()。A、123*OKB、123*OK**C、*123OKD、*123**OK標準答案:A知識點解析:此題考查了輸出流的格式控制。cout的fill()是設置填充字符:left和endl分別是使輸出數據左對齊和換行;setw()函數的作用是設置輸入輸出的寬度,此設置效果只對以此輸入或輸出有效。此題中,輸出整數123時寬度為4且左對齊,得到“123*”;輸出字符串“OK”時寬度沒有定義實際大小輸出,結果得到OK:故最后得到的輸出結果是123*K。國家二級C++機試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列描述中正確的是A、一個邏輯數據結構只能有一種存儲結構B、數據的邏輯結構屬于線性結構,存儲結構屬于非線性結構C、一個邏輯數據結構可以有多種存儲結構,且各種存儲結構不影響數據處理的效率D、一個邏輯數據結構可以有多種存儲結構,且各種存儲結構影響數據處理的效率標準答案:D知識點解析:數據的邏輯結構是指數據集合中各數據元素之間所固有的邏輯關系:數據的存儲結構是在對數據進行處理時,各數據元素在計算機中的存儲關系。數據的存儲結構是指數據的邏輯結構在計算機中的表示,一種邏輯結構可以表示成多種存儲結構;而采用不同的存儲結構,其數據處理的效率是不同的。2、下列敘述中正確的是()。A、有一個以上根結點的數據結構不一定是非線性結構B、只有一個根結點的數據結構不一定是線性結構C、循環(huán)鏈表是非線性結構D、雙向鏈表是非線性結構標準答案:B知識點解析:在數據結構中,樹這類的數據結構只有一個根結點,但它不是線性結構。3、下列數據結構中,屬于非線性結構的是()。A、循環(huán)隊列B、帶鏈隊列C、二叉樹D、帶鏈棧標準答案:C知識點解析:根據數據結構中各數據元素之間的前后件關系的復雜程度,一般將數據結構分為兩大類:線性結構和非線性結構。循環(huán)隊列、帶鏈隊列和帶鏈棧都是線性結構,而二叉樹是非線性結構。4、下列關于C++函數的敘述中,正確的是()。A、每個函數至少要具有一個參數B、每個函數都必須返回一個值C、函數在被調用之前必須先聲明D、函數不能自己調用自己標準答案:C知識點解析:此題考查的是函數的性質。當調用無參函數時主函數并不將數據傳送給被調函數,且可以帶回或不帶回函數值。函數的遞歸調用就是直接或間接的調用自己。5、下列有關繼承和派生的敘述中,正確的是()。A、如果一個派生類公有繼承其基類,則該派生類對象可以訪問基類的保護成員B、派生類的成員函數可以訪問基類的所有成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現基類的一個純虛函數,則該派生類是一個抽象類標準答案:D知識點解析:私有繼承方式為基類的公用成員和保護成員在派生類中成了私有成員,其私有成員仍為基類私有,但派生類對象可以訪問基類的保護成員,所以基類對象不能賦值給派生類對象。抽象類是指含有純虛擬函數的類,所以選項D正確。6、數據字典(DD)所定義的對象都包含于()。A、數據流圖(DFD圖)B、程序流程圖C、軟件結構圖D、方框圖標準答案:A知識點解析:數據字典是指對數據的數據項、數據結構、數據流、數據存儲、處理邏輯、外部實體等進行定義和描述,其目的是對數據流程圖中的各個元素做出詳細的說明。7、下面不能作為結構化方法軟件需求分析工具的是()。A、系統(tǒng)結構圖B、數據字典(DD)C、數據流程圖(DFD圖)D、判定表標準答案:A知識點解析:按照DeMarco的定義,“結構化分析就是使用數據流圖(DFD圖)、數據字典(DD)、結構化英語、判定表和判定樹等工具,來建立一種新的、稱為結構化規(guī)格說明的目標文檔?!毕到y(tǒng)結構圖不能作為結構化方法軟件需求分析工具。8、有如下語句序列:charstr[10];cin>>str;當從鍵盤輸入“Ilovethisgame”時,str中的字符串是()。A、“Ilovethisgame”B、“Ilovethi”C、“Ilove”D、“I”標準答案:D知識點解析:cin是C++預定義的標準輸入流對象,cin用來接收字符串時,遇“空格”、“TAB”、“回車”時都會結束。所以本題答案為D。9、在結構化方法中,用數據流程圖(DFD)作為描述工具的軟件開發(fā)階段是()。A、邏輯設計B、需求分析C、詳細設計D、物理設計標準答案:B知識點解析:軟件開發(fā)階段包括需求分析、總體設計、詳細設計、編碼和測試五個階段。其中需求分析階段常用的工具是數據流圖和數據字典。10、下列for循環(huán)的循環(huán)體執(zhí)行次數為()。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個枚舉值全部未賦常量值時,它們自左至右分別與整數0、1、2、3…n-1對應;若第i個枚舉值賦常量值為m,則其未賦常量值的后續(xù)枚舉值分別與整數m+1、m+2…對應,直到下一個賦了值的枚舉值或結束。枚舉常量NAME的值為0。12、屬于對象構成成份的是A、規(guī)則B、屬性C、標識D、方法(或操作)標準答案:A知識點解析:對象由屬性、方法和標識構成。13、下列字符串中可以用作C++標識符的是()。A、2009varB、gotoC、test一2009D、_123標準答案:D知識點解析:標識符是用戶為程序中各種需要命名的“元素”所起的名字。標識符的組成要符合一定的規(guī)則:①標識符是一個以字母或下劃線開頭的,由字母、數字、下劃線組成的字符串。②標識符不能與任意一個關鍵字同名。③標識符中的字母區(qū)分大小寫。④標識符不宜過長。C++語言一般設定一個標識符的有效長度為32個字符。由這四條規(guī)則可知,選項D)為正確答案。14、在定義函數模板或類模板時,開頭的保留字是()。A、typenameB、templateC、classD、typedef標準答案:B知識點解析:定義函數模板或類模板時,開頭的保留字是template。15、有如下程序:#include<iostream>#include<cstring>usingnamespacestd;classXCF{inta:public:XCF(intaa=0):a(aa){cout<<"1";}XCF(XCF&x){a=x.a;cout<<"2";}~XCFO{cout<<a;}intGeta(){returna;}};intmain(){XCFd1(5),d2(d1);XCF*pd=newXCF(8);cout<<pd->Geta();deletepd;return0;}運行時的輸出結果是()。A、1215588B、1218855C、12185D、128512標準答案:B知識點解析:在這個程序中在建立對象d1(5)時,調用構造函數XCF(intaa=0):a(aa){cout<<"1";},輸出1;在建立d2(d1)時,調用拷貝構造函數XCF(XCF&x){a=x.a;cout<<"2";),輸出2;在建立newXCF(8)對象時,調用構造函數XCF(intaa=0):a(aa){cout<<"1";},輸出1;語句cout<<pd->Geta()的功能是輸出8;語句deletepd;調用析構函數~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知識點解析:由這個語句序列顯示的結果是BD,說明執(zhí)行了cout<<"B"和eout<<"D"語句。17、若已定義了類Vehicle,則下列派生類定義中;錯誤的是()。A、classCar:vehicle{/*類體略*/};B、classCar:publiccar{/*類體略*/};C、classCar:publicVehicle{/*類體略*/};D、classCar:virtualpublicVehicle{/*類體略*/};標準答案:B知識點解析:類Car不能派生自它本身。18、定義派生類時,若不使用關鍵字顯式地規(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;}運行時的輸出結果是()。A、5B、7C、9D、12標準答案:D知識點解析:根據類Point和類Circle韻定義可知,類Circle的實例c(3,4,5)的成員函數c.get()返回值為3+4+5=12。20、有如下程序:c1assBase{public:intdata;};c1assDerivedl:publicBase{};c1assDerived2:protectedBase{};intmain(){Derivedld1;Derived2d2;dl.data=0;//①d2.data=0;//②return0;}下列關于程序編譯結果的描述中,正確的是()。A、①②皆無編譯錯誤B、①有編澤錯誤,②無編譯錯誤C、①無編譯錯誤,②有編譯錯誤D、①②皆有編譯錯誤標準答案:C知識點解析:保護繼承的類Dervied2不能訪問基類Base中的公共數據成員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;}運行時的輸出結果是()。A、12B、34C、14D、32標準答案:D知識點解析:在派生類classB中對基類中的虛擬成員函數virtualvoidf()和實函數voidg()進行了重新定義,在主函數中通過語句show(b);調用派生類中的虛函數virtualvoidf(){cout<<3;}輸出3,調用基類的實函數voidg(){cout<<2;}輸出2。所以選項D為正確答案。22、已知將運算符“+”和“*”作為類Complex的成員函數重載,設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中調用了公有成員函數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時,分別調用基類Base1和Base1的構造函數。國家二級C++機試(選擇題)模擬試卷第3套一、選擇題(本題共35題,每題1.0分,共35分。)1、下列敘述中正確的是()。A、線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的B、線性表的鏈式存儲結構所需要的存儲空間一般要多于順序存儲結構C、線性表的鏈式存儲結構所需要的存儲空間一般要少于順序存儲結構D、以上都不正確標準答案:B知識點解析:線性表的存儲分為順序存儲和鏈式存儲。在順序存儲中,所有元素所占的存儲空間是連續(xù)的。而在鏈式存儲的方式中,將存儲空間的每一個存儲結點分為兩部分,一部分用于存儲數據元素的值,稱為數據域;另一部分用于存儲下一個元素的存儲序號,稱為指針域。所以線性表的鏈式存儲方式比順序存儲方式的存儲空間要大一些。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知識點解析:在主函數中for循環(huán)語句執(zhí)行4次,第一次循環(huán)結束時,變量f的值等于1,f1的值等于1,f2的值等于1;第二次循環(huán)結束時,變量f的值等于2,n的值等于1,f2的值等于2;第三次循環(huán)結束時,變量f的值等于3,f1的值等于2,f2的值等于3;第四次循環(huán)結束時,變量f的值等于5,f1的值等于3,f2的值等于5;結束循環(huán)。3、在軟件開發(fā)中,需求分析階段可以使用的工具是()。A、N―S圖B、DFD圖C、PAD圖D、程序流程圖標準答案:B知識點解析:在需求分析階段可以使用的工具有數據流圖DFD圖,數據字典DD,判定樹與判定表,所以選擇B。4、有三個關系R、S和T如下:由關系R和S通過運算得到關系T,則所使用的運算為()。A、笛卡爾積B、交C、并D、自然連接標準答案:D知識點解析:自然連接是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中把重復的屬性列去掉,所以根據T關系中的有序組可知R與S進行的是自然連接操作。5、冒泡排序在最壞情況下的比較次數是()。A、n(n+1)/2B、nlog2nC、n(n-1)/2D、n/2標準答案:C知識點解析:對n個結點的線性表采用冒泡排序,在最壞情況下,冒泡排序需要經過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數為n(n-1)/2。6、下列有關繼承和派生的敘述中,正確的是()。A、如果一個派生類公有繼承其基類,則該派生類對象可以訪問基類的保護成員B、派生類的成員函數可以訪問基類的所有成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現基類的一個純虛函數,則該派生類是一個抽象類標準答案:D知識點解析:私有繼承方式為基類的公用成員和保護成員在派生類中成了私有成員,其私有成員仍為基類私有,但派生類對象可以訪問基類的保護成員,所以基類對象不能賦值給派生類對象。抽象類是指含有純虛擬函數的類,所以選項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)利用的隊列結構所以隊頭指針有時可能大于隊尾指針有時也可能小于隊尾指針。10、下列對于軟件測試的描述中正確的是()。A、軟件測試的目的是證明程序是否正確B、軟件測試的目的是使程序運行結果正確C、軟件測試的目的是盡可能多地發(fā)現程序中的錯誤D、軟件測試的目的是使程序符合結構化原則標準答案:C知識點解析:軟件測試是為了發(fā)現錯誤而執(zhí)行程序的過程。一個好的測試用例是指很可能找到迄今為止尚未發(fā)現的錯誤的用例;一個成功的測試是發(fā)現了至今尚未發(fā)現的錯誤的測試。軟件測試的目的要以查找錯誤為中心,而不是為了演示軟件的正確功能。11、下面不屬于軟件工程過程的4種基本活動A、軟件規(guī)格說明B、軟件開發(fā)C、軟件演進D、軟件測試標準答案:D知識點解析:軟件工程過程的4種基本活動是:軟件規(guī)格說明、軟件開發(fā)、軟件確認、軟件演進。12、在數據管理技術發(fā)展的三個階段中,數據共享最好的是()。A、人工管理階段B、文件系統(tǒng)階段C、數據庫系統(tǒng)階段D、三個階段相同標準答案:C知識點解析:數據管理技術的發(fā)展經歷了三個階段:人工管理階段、文件系統(tǒng)階段和數據庫系統(tǒng)階段。人工管理階段無共享,冗余度大;文件管理階段共享性差,冗余度大;數據庫系統(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;}//拷貝構造函數~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知識點解析:拷貝構造函數也是構造函數,但它只有一個參數,這個參數是本類的對象,即other,所以賦值操作將本類的參數other.number賦值給number;而且采用對象的引用的形式,也就是&other。15、下列敘述中正確的是A、對象具有封裝性B、對象標識可以不唯一C、對象間的通信是靠方法調用D、對象是屬性名和屬性的封裝體標準答案:A知識點解析:對象的特征有:唯一性、分類性、繼承性和多態(tài)性(多形性)。對象的要素有:抽象、封裝性(信息隱藏)和共享性。對象標識是唯一的。16、有三個關系R、S和T如下:則由關系R和S得到關系T的操作是()。A、自然連接B、交C、投影D、并標準答案:A知識點解析:在實際應用中,最常用的連接是一個叫自然連接的特例。它滿足下面的條件:兩關系間有公共域;通過公共域的相等值進行連接。通過觀察三個關系R,S,T的結果可知關系T是由關系R和S進行自然連接得到的。17、設一棵滿二叉樹共有15個結點,則在該滿二叉樹中的葉子結點數為()。A、7B、8C、9D、10標準答案:B知識點解析:在具有n個結點的滿二叉樹,其非葉子結點數為int(n/2),而葉子結點數等于總結點數減去非葉子結點數。本題n=15,故非葉子結點數等于int(15/2)=7,葉子結點數等于15-7=8。18、下列敘述中,錯誤的是()。A、false是一個邏輯型常量B、b是一個字符型常量C、365是一個int常量D、3.1415926是一個double常量標準答案:B知識點解析:字符常量簡稱字符,它以單引號作為起止符號,中間有一個或若干個字符?;蛘咭浴埃堋遍_頭的包括多個字符的字符序列也符合規(guī)定的字符常量。19、數據獨立性是數據庫技術的重要特點之一,所謂數據獨立性是指A、數據與程序獨立存放B、不同的數據被存放在不同的文件中C、不同的數據只能被對應的應用程序所使用D、以上三種說法都不對標準答案:D知識點解析:數據獨立性是指數據庫中數據獨立于應用程序而不依賴于應用程序,即數據與程序間的互不依賴性。也就是說數據的邏輯結構、存儲結構與存取方式的改變不會影響應用程序。數據的獨立性包括物理獨立性和邏輯獨立性兩級。①物理獨立性:數據的物理結構(包括存儲結構、存取方式等)的改變,如存儲設備的更換、物理存儲的更換、存取方式改變等都不影響數據庫的邏輯結構,從而不致引起應用程序的變化。②邏輯獨立性:數據庫總體邏輯結構的改變,如修改數據模式、增加新的數據類型、改變數據間聯(lián)系等,不需要相應的應用程序改變,這就是數據的邏輯獨立性。20、有如下類定義:classTV{public:Tv(intS=41,stringbr=“TCL”):size(s),brand(br){}一Tv(){}private:intsize;stringbrand;};若執(zhí)行語句TVli,*net[2],company[3];則Tv類的構造函數被調用的次數是()。A、6次B、4次C、3次D、2次標準答案:B知識點解析:本題考查構造函數和析構函數,題中定義了一個對象以及對象數組,那么構造函數需要執(zhí)行4次,而,*net[2]并不執(zhí)行構造函數,所以答案為B。21、在關系模型中,每一個二維表稱為一個A、關系B、屬性C、元組D、主碼(鍵)標準答案:A知識點解析:每個二維表代表一個關系,由表框架及表的元組組成。22、生成派生類對象時,派生類構造函數調用基類構造函數的條件是()。A、無需任何條件B、基類中顯示定義了構造函數C、派生類中顯式定義了構造函數D、派生類構造函數明確調用了基類構造函數標準答案:A知識點解析:因為派生類從基類中繼承,它含有基類中的數據成員和函數成員,所以當生成派生類對象時,能無條件的調用基類的構造函數。23、有如下兩個類定義:classAA{};classBB{AAv1,*v2;BBv3:int*v4;};其中有一個成員變量的定義是錯誤的,這個變量是()。A、vlB、v2C、v3D、v4標準答案:C知識點解析:在定義類的數據成員時,類中的數據成員可以是任意類型,包括整型、浮點型、字符符型、數組、指針和引用等,也可以是對象。但是要注意,只有另外一個類的對象,才可以作為該類的成員,即作為類的成員對象存在。自身類的對象是不可以作為自身類的成員存在,但自身類的指針可以。對于本題,在定義類BB時,不能包括其對象v3。24、建立一個類對象時,系統(tǒng)自動調用()。A、析構函數B、構造函數C、靜態(tài)函數D、友元函數標準答案:B知識點解析:建立一個類的對象時,編譯程序需要為對象分配存儲空間,進行必要的初始化。在C++中,這項工作是由構造函數來完成。25、有如下程序段:inti=0,j=1;int&r=i;//①r=j;//②int*p=&i://③*p=&r;//④其中會產生編譯錯誤的語句是()。A、④B、③C、②D、①標準答案:A知識點解析:此題考查的是指針和引用。本題中,語句①是一條合法的引用聲明語句,使得變量i被r引用;語句②通過引用r將變量j的值賦給變量i;語句③聲明了指針變量p,并初始化指向變量i;語句④中*p代表了變量i的值,要將&r賦給*p,這會使編譯器產生類型不符的錯誤提示。26、在類聲明中,緊跟在“public;”后聲明的成員的訪問權限是()。A、私有B、公有C、保護D、默認標準答案:B知識點解析:類中提供了3種訪問控制的權限:公有。私有和保護。其中公有類型定義了類的外部接口,任何一個外部的訪問都必須通過外部接口進行。私有類型的成員只允許本類的成員函數訪問,來自類外部的任何訪問都是非法的,保護類型介于公有類型和私有類型之間,在繼承和派生時可以體現出其特點。27、在類聲明中,緊跟在“public:”后聲明的成員的訪問權限是()。A、私有B、公有C、保護D、默認標準答案:B知識點解析:類中提供了3種訪問控制的權限:公有,私有和保護。其中公有類型定義了類的外部接口,任何一個外部的訪問都必須通過外部接口進行。私有類型的成員只允許本類的成員函數訪問,來自類外部的任何訪問都是非法的,保護類型介于公有類型和私有類型之間,在繼承和派生時可以體現出其特點。28、如需要向一個二進制文件尾部添加數據,則該文件的打開方式為()。A、ios_base::appB、ios_base::binary|ios—base::outC、ios—base::outD、ios_base::binary|ios_base::app標準答案:D知識點解析:iosbase::binary模式是作為二進制文件打開,iosbase::app模式是作為添加數據而打開(總是在尾部寫)。29、派生類的成員函數不能訪問基類的()。A、公有成員和保護成員B、公有成員C、私有成員D、保護成員標準答案:C知識點解析:此題考查的是派生類對基類成員的訪問。派生類對基類的各個成員的訪問能力與繼承方式無關,其成員不能訪問基類中的私有成員,可以訪問基類的公有成員和保護成員。30、若AA為一個類,a為該類的非靜態(tài)數據成員,在該類的一個成員函數定義中訪問a時,其書寫格式為()。A、aB、AA.aC、a{}D、AA::a{}標準答案:A知識點解析:類AA的成員函數直接引用類AA的非靜態(tài)數據成員。31、若要對類BigNumber中重載的類型轉換運算符long進行聲明,下列選項中正確的是()。A、operatorlong()const;B、operatorlong(bigNumber);C、longoperatorlong()const;D、longoperatorlong(BigNumber);標準答案:A知識點解析:在重載類型轉換符時,由于運算符本身已經表示出返回值類型,因此不需要返回值類型的聲明。32、有如下函數模板:templateTcast(Uu){returnu;}其功能是將U類型數據轉換為T類型數據。已知i為int型變量,下列對模板函數cast的調用中正確的是()。A、cast(i);B、cast<>(i);C、cast(i);D、cast(i);標準答案:D知識點解析:此題考查的是模板函數的調用。本題中cast()函數的實參i只能確定模板參數U的類型為int,而不能確定另外一個模板參數T,故選項A、B錯誤;C++語言不允許隱式地將int轉化為char*,故選項C錯誤。33、下列關于類模板的描述中,錯誤的是()。A、類模板的成員函數都是模板函數B、可以為類模板參數設置默認值C、類模板描述了一組類D、類模板中只允許有一個類型參數標準答案:D知識點解析:類模板就是一系列相關類的模型或樣板,這些類的成員組成相同,成員函數的源代碼形式相同,所不同的只是所針對的類型(成員的類型以及成員函數的參數和返回值的類型)。一個類模板的格式是:temp1ate<<模板形參表聲明>><類聲明>,<模板形參表聲明>是由一個或多個模板形參組成。在定義類模板時,可以為模板形參表聲明的最后若干個參數設置默認值。34、下列關于C++流的描述中,錯誤的是()。A、cout>>’A’表達式可輸出字符AB、eof()函數可以檢測是否到達文件尾C、對磁盤文件進行流操作時,必須包含頭文件fstreamD、以ios_base::out模式打開的文件不存在時,將自動建立一個新文件標準答案:A知識點解析:cout是一個標準輸出流對象。>>稱之為提取運算符,它的功能是從輸入流中提取數據賦值給一個變量。<<為插入運算符,其功能是把表達式的值插入到輸出流中。當系統(tǒng)執(zhí)行cout<<x操作時,首先根據x值的類型調用相應的插入運算符重載器函數,把x的值傳送給對應的形參,接著執(zhí)行函數體,把x的值輸出到顯示器屏幕上,在當前屏幕光標位置處顯示出來,然后返回ostream流,以便繼續(xù)使用插入運算符輸出下一個表達式的值。對于本題來說,要輸出字符‘A’的值應該寫成cout<<’A’。因而選項A)是錯誤的。35、下列運算符中,不能被重載的是()。A、&&B、!=C、.D、++標準答案:C知識點解析:此題考查的是運算符重載。在C++中,只有.、.*、.>*、::、?:這五個運算符不能重載。國家二級C++機試(選擇題)模擬試卷第4套一、選擇題(本題共23題,每題1.0分,共23分。)1、結構化程序設計的基本原則不包括()。A、多態(tài)性B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:結構化程序設計的思想包括:自頂向下、逐步求精、模塊化、限制使用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<類型名>{<枚舉值表>};<枚舉值表>包含多個枚舉值,它們用逗號隔開,每個枚舉值就是一個枚舉常量。枚舉值有兩種定義形式:一是<值名>;二是<值名>=<整型常量>。關于枚舉類型有以下4點說明:①一個enum類型實際上是int類型的一個子集,其每一個枚舉值代表一個整數。②n個枚舉值全部未賦常量值時,它們自左至右分別與整數0,l,…n.1對應。③若第i個枚舉值賦常量值為m,則其未賦常量值的后續(xù)枚舉值分別與整數m+l,m+2…對應,直到下一個賦了值的枚舉值或結束。因此,為枚舉值賦的整型常量值應從左到右遞增。④枚舉類型的聲明也可作為組聲明若干整型符號常量的方法。也就是說,把每個要聲明的符號常量作為一個枚舉值,將各個枚舉值合在一起定義成一個枚舉類型。對于本題來說,在選項A)巾,對4個枚舉值沒有賦常量值,所以它們從左到右與整數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;}則該程序的輸出結果是()。A、11B、20C、21D、31標準答案:C知識點解析:由主函數入手,定義變量x、y、z,然后調用函數fun,其中的參數為(x--,y++,x+y)的計算結果和z--的計算結果,所以調用fun(13,8)計算結果為21。4、下列鏈表中,其邏輯結構屬于非線性結構的是()。A、二叉鏈表B、循環(huán)鏈表C、雙向鏈表D、帶鏈的棧標準答案:A知識點解析:二叉鏈表作為樹的存儲結構。鏈表中結點的兩個鏈域分別指向該結點的第一個孩子結點和下一個兄弟結點。5、某二叉樹共有12個結點,其中葉子結點只有1個。則該二叉樹的深度為(根結點在第1層)A、3B、6C、8D、12標準答案:D知識點解析:根據二叉樹的性質,度為0的結點(即葉子結點)總是比度為2的結點多一個。題目中的二叉樹的葉子結點為1,因此度為2的結點的數目為0,故該二叉樹為12層,每層只有一個結點。6、有如下程序:#includeusingnamespacestd;intmain(){int*p;*P=9;cout<<"Thevalueatp:"<<*p;return0;}編譯運行程序將出現的情況是()。A、編譯時出現語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標準答案:D知識點解析:此題考查的是指針的使用。本題中,在給*p賦值前,指針p并沒有指向一個具體的對象。此時可以通過編譯,但運行時由于p中為隨機值,該賦值可能會破壞內存中某個重要的地址空間的內容,導致程序出錯。7、已知遞歸函數fun的定義如下:intfun(intn){if(n<=1)return1;//遞歸結束情況elsereturnn*fun(n.2);//遞歸}則函數調用語句fun(5)的返回值是()。A、5B、12C、15D、30標準答案:C知識點解析:遞歸函數fun被定義為含有參數intn,返回整型。其中fun函數遞歸調用本身,當n=1時,fun返回1,如果大于1那么執(zhí)行n*fun(n-2)。所以,當n等于5時,執(zhí)行5*fun(3);當3時繼續(xù)調用fun,3*fun(1),即fun(5)=5*(3*fun(1)),答案為15。8、若從為一個類,a為該類的非靜態(tài)數據成員,在該類的一個成員函數定義中訪問a時,其書寫格式為()。A、aB、AA.aC、a{)D、AA∷a{}標準答案:A知識點解析:類從的成員函數直接引用類從的非靜態(tài)數據成員。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,則輸出結果分別是()。A、4,6B、3,6C、4,7D、5,7標準答案:D知識點解析:此題首先讀入數值4賦給變量x,因為x++>5不成立,因為“++”后綴,之后x的值變?yōu)?,執(zhí)行語句cout<<x-<<end1;輸出:5,之后x的值變?yōu)?。當讀入的數值是6時,因為x++>》5成立,所以執(zhí)行語句cout<<x<<end1;輸出7。11、下列關于類成員對象構造函數調用順序的敘述中,正確的是()。A、與它們在初始化列表中的順序相同B、與它們在類中聲明的順序相同C、與析構函數的調用順序相同D、順序不確定標準答案:B知識點解析:類成員對象構造函數的調用是按照在類中定義的順序進行的,而不是按照構造函數說明后的冒號順序進行構造的。12、有三個關系R、S和T如下:由關系R和S通過運算得到關系T,則所使用的運算為()。A、并B、自然連接C、笛卡爾積D、交標準答案:D知識點解析:關系R與S經交運算后所得到的關系是由那些既在R內又在S內的有序組組成的,記為R∩S。13、下列敘述中正確的是A、對象標識具有唯一性B、屬性是對象的動態(tài)屬性C、任何對象都必須有多態(tài)性D、對象是對象屬性和方法的封裝體標準答案:A知識點解析:每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。14、按照標識符的要求,下列選項中,()符號不能組成標識符。A、連接符B、下劃線C、大小寫字母D、數字字符標準答案:A知識點解析:此題考查的是標識符。標識符是由數字、字母以及下劃線構成,其第一個字符必須是字母或下劃線,中間不能有空格:標識符的長度是任意的,但由于編譯系統(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個枚舉值全部未賦常量值時,它們自左至右分別與整數0、1、2、3…n-1對應:若第i個枚舉值賦常量值為m,則其未賦常量值的后續(xù)枚舉值分別與整數m+1、m+2…對應,直到下一個賦了值的枚舉值或結束。16、下列語句中錯誤的是()。A、constinta;B、constinta=10;C、eonstint*point=0;D、constint*point=newint(10);標準答案:A知識點解析:由關鍵字const聲明符號常量的同時必須為其賦初值。17、下列關于運算符重載的描述中,錯誤的是()。A、∷運算符不能重載B、類型轉換運算符只能作為成員函數重載C、將運算符作為非成員函數重載時必須定義為友元D、重載[]運算符應完成“下標訪問”操作標準答案:C知識點解析:C++把重載的運算符視為特殊的函數,稱為運算符函數?!斑\算符重載”是針對C++中原有運算符進行的,不可能通過重載創(chuàng)造出新的運算符。18、有如下程序:#includeusingnamespacestd;intmain(){cout.fill(’*’);cout.width(6);cout.fill(’#’);cout<<123<A、###123B、123###C、***123D、123***標準答案:A知識點解析:此題考查的是I/O格式化輸出。函數width(intn)設置輸入輸出寬度,當實際數據寬度小于制定的寬度時,多余的位置用填充字符填滿;當實際數據寬度大于設置的寬度時,仍按實際寬度輸出;函數fill(charc)用來設置填充字符。19、有如下兩個類定義classxx{private:dOublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;potected:doubley2;public:doubley3;};在類YY中保護成員變量的個數是()。A、1B、2C、3D、4標準答案:C知識點解析:在C++中派生類從基類保護繼承時,基類的公有成員在派生類中改變?yōu)楸Wo成員,基類的保護成員在派生類中仍為保護成員。所以對于本題來說,YY類保護繼承自類XX,那么類XX中的公有成員x3和保護成員x2在派生類中都成為保護成員,再加上類YY。中的保護成員y2,因此在派生類YY中保護成員的個數為3。20、下列有關繼承和派生的敘述中,正確的是()。A、派生類不能訪問基類的保護成員B、作為虛基類的類不能被實例化C、派生類應當向基類的構造函數傳遞參數D、虛函數必須在派生類中重新實現標準答案:C知識點解析:此題考查的是繼承和派生。無論使用哪種繼承方式,派生類中的成員都不能訪問基類中的私有成員,而可以訪問基類中的公有成員和保護成員,所以選項A錯誤;C++中只有抽象類不能被實例化,而虛基類不一定非得是抽象類。所以選項B錯誤;在派生類中可以重新定義從基類繼承下來的虛函數,也可以不重新定義,故選項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:}程序的輸出結果是()。A、BBBB、BBDC、DBBD、DBD標準答案:C知識點解析:此題考查的是虛函數與多態(tài)性。在成員函數的聲明前面加上Virual關鍵字,即可把函數聲明為虛函數;在C++中,一個基類指針可以用于指向它的派生類對象,而且通過這樣的指針調用虛函數時,被調用的是該指針實際所指向的對象類的那個重定義版本。此題中,fun1()和fun2()的形參分別是基類的指針和引用,給fun1()傳入的實參是指向派生類對象的指針p,fun1()將調用D類中的show()輸出字符‘D’;給fun2()出入的實參是基類對象,fun2()調用類B中的show()輸出字符‘B’;fun3()由于形參是基類對象,調用的始終都是基類的show(),輸出字符‘B’。故最終輸出結果是DBB。22、C++系統(tǒng)預定了4個用于標準數據流的對象,下列選項中不屬于此類對象的是()。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相當于當前位置(負數表示當前位置之前);ios_base::end相對于文件尾。國家二級C++機試(選擇題)模擬試卷第5套一、選擇題(本題共20題,每題1.0分,共20分。)1、對長度為n的線性表排序,在最壞情況下,比較次數不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序標準答案:D知識點解析:除了堆排序算法的比較次數是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指向的存儲單元的內容,即變量值。所以木p指向a的值3。3、軟件是指()。A、程序B、程序和文檔C、算法加數據結構D、程序、數據與相關文檔的完整集合標準答案:D知識點解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分。是包括程序、數據與相關文檔的完整集合。軟件由兩部分組成:一是機器可執(zhí)行的程序和數據;二是機器不可執(zhí)行的,與軟件開發(fā)、運行、維護、使用等有關的文檔。4、假定a=3,下列程序的運行結果是()。#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主函數入手,調用fun函數獲得返回值result輸出。題目中假定a=3,即調用語句fun(a.)中的輸入參數為a,進入fun函數,在for循環(huán)中當i小于等于n,即輸入參數3時,循環(huán)3次執(zhí)行“p*=i;result+=p;”語句。即執(zhí)行三次p=p*i,result=result+p,result的結果為9。返回的fun函數結果為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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論