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

下載本文檔

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

文檔簡介

國家二級C++機(jī)試(選擇題)模擬試卷39(共9套)(共206題)國家二級C++機(jī)試(選擇題)模擬試卷第1套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列字符串中可以用作C++標(biāo)識符的是()。A、2009varB、gotoC、test_2009D、_123標(biāo)準(zhǔn)答案:D知識點解析:標(biāo)識符是用戶為程序中各種需要命名的“元素”所起的名字。標(biāo)識符的組成要符合一定的規(guī)則:①標(biāo)識符是一個以字母或下劃線開頭的,由字母、數(shù)字、F劃線組成的字符串。②標(biāo)識符不能與任意一個關(guān)鍵字同名。③標(biāo)識符中的字母區(qū)分大小寫。④標(biāo)識符不宜過長。c++語言一般設(shè)定一個標(biāo)識符的有效長度為32個字符。由這四條規(guī)則可知,選項D)為正確答案。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)標(biāo)準(zhǔn)答案:B知識點解析:在數(shù)據(jù)結(jié)構(gòu)中,樹這類的數(shù)據(jù)結(jié)構(gòu)只有一個根結(jié)點,但它不是線性結(jié)構(gòu)。3、有如下程序:#include<iostream>usingnamespacestd;intmain(){int*p;*p=9;cout<<"Thevalueatp:"<<*p;return0:}編譯運行程序?qū)⒊霈F(xiàn)的情況是()。A、編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標(biāo)準(zhǔn)答案:D知識點解析:題目程序中“int,*p;”是定義了一個指針變量p,“*p=9;”是將p當(dāng)前指向的指針賦為9。指針p在執(zhí)行這個賦值操作前并沒有初始化這個變量p,所以會有p未初始化的警告錯誤。4、以下程序的輸出的結(jié)果是()。#include<iostream.h>intx=3;voidmain(){voidfun();inti;for(i=1;i<x;i++)fun();}voidfun(){staticintx=1;x*=x+1;cout<<x<<’’’’;}A、3,3B、2,2C、2,6D、2,5標(biāo)準(zhǔn)答案:C知識點解析:由主函數(shù)入手,在for循環(huán)中調(diào)用fun函數(shù),其中調(diào)用次數(shù)為2次。fun中x為靜態(tài)變量,有效到文件結(jié)束,所以第一次調(diào)用為x=x*(x+1)=1*(1+1)=2,第二次調(diào)用2*(2+1)=6。5、一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次人棧,然后再依次出棧,則元素出棧的順序是()。A、12345ABCDEB、EDCBA54321C、ABCDEl2345D、54321EDCBA標(biāo)準(zhǔn)答案:B知識點解析:棧是先進(jìn)后出的原則組織數(shù)據(jù),所以入棧最早的最后出棧,所以選擇B。6、有如下程序:#include<iostream>usingnamespacestd;classTest{public:Test(){n+=2;}~Test(){n-=3;}staticintgetNum(){returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<"n="<<Test::getNum()<<endl;return0:}執(zhí)行后的輸出結(jié)果是()。A、n=0B、n=1C、n=2D、n=3標(biāo)準(zhǔn)答案:A知識點解析:語句Test*p=newTest;會調(diào)用類的構(gòu)造函數(shù)Test(){n+=2;},使n的值由原來的1變?yōu)?,然后deletep調(diào)用類的析構(gòu)函數(shù)~Test(){n-=3;},因為n是static型變量,所以會在3的基礎(chǔ)上減3使得輸出結(jié)果為0。7、對長度為n的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為()。A、log2nB、n/2C、nD、n+1標(biāo)準(zhǔn)答案:C知識點解析:在進(jìn)行順序查找過程中,如果被查的元素是線性表中的最后一個元素,或者被查元素根本不在線性表中,則為了查找這個元素需要與線性表中的所有元素進(jìn)行比較,這是順序查找的最壞情況,需要比較的次數(shù)為n次。8、有如下程序:#includeusingnamespacestd;classONE{intc;public:ONE():c(0){cout<A、3B、23C、123D、213標(biāo)準(zhǔn)答案:C知識點解析:由類TWO的定義可知,其成員為類ONE的兩個對象onel和one2。所以在主函數(shù)中構(gòu)建類TWO的對象t(4)時,先后調(diào)用類ONE的構(gòu)造函數(shù)ONE():c(0){tout9、在E—R圖中,用來表示實體的圖形是()。A、矩形B、橢圓形C、菱形D、三角形標(biāo)準(zhǔn)答案:A知識點解析:在E—R圖中,用矩形表示實體集,在矩形內(nèi)寫上該實體集的名字:用橢圓形表示屬性;用菱形(內(nèi)部寫上聯(lián)系名)表示聯(lián)系。10、有如下程序:撕ncludeusingnamespacestd;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知識點解析:本題考查公用繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護(hù)成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。所以本題中n、k和setK變?yōu)榱伺缮惖谋Wo(hù)成員,不能直接使用,即1、3、4錯誤,所以B選項正確。11、下列選項中,與實現(xiàn)運行時多態(tài)性無關(guān)的是()。A、重載函數(shù)B、虛函數(shù)C、指針D、引用標(biāo)準(zhǔn)答案:A知識點解析:在C++中,多態(tài)性可以分為兩類:編譯時的多態(tài)性和運行時的多態(tài)性。編譯時的多態(tài)性是通過函數(shù)重載和模版體現(xiàn)的,運行時的多態(tài)性是通過虛函數(shù)體現(xiàn)的。12、己知函數(shù)FA調(diào)用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知識點解析:在C++中,在調(diào)用任何函數(shù)之前,必須確保它已有原型說明。函數(shù)原型說明通常放在程序文件的頭部,以使得該文件中所有函數(shù)都能調(diào)用它們。在本題中,當(dāng)函數(shù)FA調(diào)用FB時,函數(shù)FB可以定義在FA的后面,但是FB的原型必須出現(xiàn)在FA的定義之前,因而選項D)為正確答案。13、C++中的模板包括()。A、對象模板和函數(shù)模板B、對象模板和類模板C、函數(shù)模板和類模板D、變量模板和對象模板標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是模板。在C++語言中,模板有兩類:函數(shù)模板和類模板。14、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assMyClass{public:MyClass(){cout<<’*’;}MyClass(MyClass&a){cout<<’#’;}~MyClass(){cout<<’@’;}};intmain(),MyClassa;Myc1assb(a);return0;}運行時的輸出結(jié)果是()。A、*@#@B、#@*@C、*#@@D、#*@@標(biāo)準(zhǔn)答案:C知識點解析:程序在執(zhí)行時,先創(chuàng)建類對象a,輸出.,再創(chuàng)建類對象b,輸出#,然后再依次調(diào)用類對象b和a的析構(gòu)函數(shù),輸出兩個@。15、有如下程序:usingnamespacestd;classBoat;classCar{public:Car(inti):weight(i){}friendintTotal(constCar&c,constBoat&b);////①private:intweight;};classBoat{public:Boat(inti):weight(i){}friendintTotal(constCar&c,constBoat&b);private:intweight;};intTotal(constCar&c,constBoat&b){//②returnc.weight+b.weight;}intmain(){Carc(10);Boatb(8);cout<<"Thetotalweightis"<<Total(c,b)<<endl;//③return0:}下列關(guān)于程序的描述中,正確的是()。A、程序編譯正確B、程序編譯時語句①出錯C、程序編譯時語句②出錯D、程序編譯時語句③出錯標(biāo)準(zhǔn)答案:A知識點解析:程序中定義了類Car和類Boat,在兩個類中分別定義他們的構(gòu)造函數(shù)和友元函數(shù)friend。程序在VC6.0中編譯通過。16、下列有關(guān)函數(shù)重載的敘述中,錯誤的是()。A、函數(shù)重載就是用相同的函數(shù)名定義多個函數(shù)B、重載函數(shù)的參數(shù)列表必須不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)可以帶有默認(rèn)值標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是函數(shù)重載的概念。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。故選項c錯誤。17、下列關(guān)于派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的說法中,錯誤的是()。A、派生類的構(gòu)造函數(shù)會隱含調(diào)用基類的構(gòu)造函數(shù)B、如果基類中沒有缺省構(gòu)造函數(shù),那么派生類必須定義構(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知識點解析:此題考查的是派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)。在撤銷派生類對象時,析構(gòu)函數(shù)的執(zhí)行過程和構(gòu)造函數(shù)嚴(yán)格相反,即:對派生類新增普通成員進(jìn)行清理;調(diào)用成員對象析構(gòu)函數(shù),調(diào)用基類析構(gòu)函數(shù)對基類進(jìn)行清理。18、有如下程序:#include<iostrearn>usingnamespacestd;classPublication{//出版物類charname[30];public:Publication(char*name="未知名稱"){strcpy(this->name,name);}constchar*getName()const{returnname;}virtualconstchar*getType()const{return"未知類型";}};classBook:publicPublication{//書類public:Book(char*name):Publication(name){}virtualconstchar*getType()const{return"書";{}};voidshowPublication(Publication&p){cout<<p.getType()<<":"<<p.getName()<<endl;}intmain(){Bookbook("精彩人生");showPublication(book);return0;}運行時的輸出結(jié)果是()。A、未知類型:未知名稱B、未知類型:精彩人生C、書:未知名稱D、書:精彩人生標(biāo)準(zhǔn)答案:D知識點解析:因為類Book繼承自基類Publication,所以在類Book中的虛常成員函數(shù)*getType(){return"書";}就會覆蓋基類中的虛常成員函數(shù)*getTrype()eonst{return"未知類型";},所以在主函數(shù)中調(diào)用函數(shù)showPublication(book)時,getType()函數(shù)的輸出的結(jié)果是“書”,getName()函數(shù)的輸出結(jié)果為“精彩人生”。19、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assPublication{//出版物類charname[30];public:Publication(char*name="未知名稱"){strcpy(this—>name,name);}constchar*getName()const{returnname;}virtualconstchar*getType()const{return"未知類型";}};c1assBook:publicPublication{//書類public:Book(char*name):Publication(name){}virtualconstchar*getType()const{return"書";}};voidshowPublication(Publication&p){cout<<p.getType()<<":"<<p.getName()<<end1;}intmain(){Bookbook("精彩人生");showPublication(book);return0;}運行時的輸出結(jié)果是()。A、未知類型:未知名稱B、未知類型:精彩人生C、書:未知名稱D、書:精彩人生標(biāo)準(zhǔn)答案:D知識點解析:因為類Book繼承自基類Publication,所以在類Book中的虛常成員函數(shù)*getType(){retum"書";}就會覆蓋基類中的虛常成員函數(shù)*getType()const{return"未知類型";},所以在主函數(shù)中調(diào)用函數(shù)showPublication(book)時,getType()函數(shù)的輸出的結(jié)果是“書”,getName()函數(shù)的輸出結(jié)果為“精彩人生”。20、有如下程序:#includeusingnamespacestd;classBase{public:virtualvoidShow(){cout<<’B’;}};classDerived:publicBase{public:voidShow(){cout<<’D’;}};intmain(){Base*p1=newDerived;Derived*p2=newDerived;p1->Show();p2->Show();deletep1:deletep2;return0;}運行這個程序的輸出結(jié)果是()。A、BBB、BDC、DBD、DD標(biāo)準(zhǔn)答案:D知識點解析:在基類Base中定義了虛函數(shù)Show()輸出字符‘B’,而在派生類Derived中對虛函數(shù)Show()進(jìn)行了重新定義,輸出字符‘D’。在主函數(shù)中對基類和派生類中的虛函數(shù)Show(1)進(jìn)行了多態(tài)調(diào)用,此時調(diào)用的是派生類中重新定義的Show(),輸出字符‘D’。21、在類中重載賦值運算符時,應(yīng)將其聲明為類的()。A、靜態(tài)函數(shù)B、友元函數(shù)C、成員函數(shù)D、構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:C知識點解析:賦值運算符只能作為類的成員函數(shù)重載。22、有如下程序:#includeusingnamespacestd;classA{public:A0{cout<<’A’;}~A(){cout<<’C’;}};classB:publicA{public:BO{cout<<’G’;}~B(){cout<<’T’;}};intmain(){Bobj;return0;}運行這個程序的輸出結(jié)果是()。A、GATCB、AGTCC、GACTD、AGCT標(biāo)準(zhǔn)答案:B知識點解析:派生類B是由基類A公開繼承而來,所以在創(chuàng)建類B的obj對象時,首先執(zhí)行基類A的構(gòu)造函數(shù)A(),輸出A,再執(zhí)行派生類B的構(gòu)造函數(shù)B(),輸出G,當(dāng)程序結(jié)束時,首先執(zhí)行派生類的析構(gòu)函數(shù)~B(),輸出T,珥執(zhí)行基類A的析構(gòu)函數(shù)~A(),輸出C。23、如果利用C++流進(jìn)行輸入輸出,下面的敘述中正確的是()。A、只能借助于流對象進(jìn)行輸入輸出B、只能進(jìn)行格式化輸入輸出C、只能借助于cin和cout進(jìn)行輸入輸出D、只能使用運算符>>和<<進(jìn)行輸入輸出標(biāo)準(zhǔn)答案:A知識點解析:此題考查的知識點是C++流。利用C++流既可以進(jìn)行有格式輸入輸出,也可以進(jìn)行無格式輸入輸出,所以選項B錯誤:C++的4個預(yù)定義的流對象為:cin一標(biāo)準(zhǔn)輸入,cout一標(biāo)準(zhǔn)輸出,Cerr一標(biāo)準(zhǔn)出錯信息輸出,clog一帶緩沖的標(biāo)準(zhǔn)出錯信息輸出,選項C錯誤;C++流除了可以使用提取“>>”插入“<<”進(jìn)行輸入輸出外,還可以通過流對象的一些成員函數(shù)進(jìn)行輸入輸出,故選項D錯誤。24、下列有關(guān)C++流的敘述中,錯誤的是()。A、C++操作符setw設(shè)置的輸出寬度永久有效B、C++操作符endl可以實現(xiàn)輸出的回車換行C、處理文件I/O時,要包含頭文件fstreamD、進(jìn)行輸入操作時,eof()函數(shù)用于檢測是否到達(dá)文件尾標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是C++流。CH操作符setw()的作用是設(shè)置輸入輸出寬度,且只對當(dāng)前一次有效,并非永久有效,故選項A敘述錯誤。25、已知Value是一個類,Value是Value的一個對象。下列以非成員函數(shù)形式重載的運算符函數(shù)原形中,正確的是()。A、Valueoperator+(Valuev,inti);B、Valueoperator+(ValueV=value,inti);C、Valueoperator+(Valuevinti=0);D、Valueoperator+(Valuev=value,inti=0);標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是重載加法運算符“+”?!?”是二元運算符,其第一操作數(shù)是對象本身,i為第二操作數(shù),由此可知選項B正確。國家二級C++機(jī)試(選擇題)模擬試卷第2套一、選擇題(本題共21題,每題1.0分,共21分。)1、下列敘述中正確的是()。A、算法就是程序B、設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計C、設(shè)計算法時只需要考慮結(jié)果的可靠性D、以上三種說法都不對標(biāo)準(zhǔn)答案:D知識點解析:所謂算法是指解題方案的準(zhǔn)確而完整的描述。是一組嚴(yán)謹(jǐn)?shù)囟x運算順序的規(guī)則,并且每一個規(guī)則都是有效的,且是明確的,此順序?qū)⒃谟邢薜拇螖?shù)下終止。算法不等于程序,也不等于計算方法。設(shè)計算法時不僅要考慮對數(shù)據(jù)對象的運算和操作,還要考慮算法的控制結(jié)構(gòu)。2、下列關(guān)于類定義的說法中,正確的是()。A、類定義中包括數(shù)據(jù)成員和函數(shù)成員的聲明B、類成員的缺省訪問權(quán)限是保護(hù)的C、數(shù)據(jù)成員必須被聲明為私有的D、成員函數(shù)只能在類體外進(jìn)行定義標(biāo)準(zhǔn)答案:A知識點解析:類的成員的缺省訪問權(quán)限是私有的,數(shù)據(jù)成員可以是私有,可以是公用的,也可以是受保護(hù)的。類的成員函數(shù)可以在類內(nèi)定義。3、有如下兩個類定義:classAA{);classBB{AAvl,*v2;BBv3:int*v4;);其中有一個成員變量的定義是錯誤的,這個變量是()。A、vlB、v2C、v3D、v4標(biāo)準(zhǔn)答案:C知識點解析:在定義類的數(shù)據(jù)成員時,類中的數(shù)據(jù)成員可以是任意類型,包括整型、浮點型、字符符型、數(shù)組、指針和引用等,也可以是對象。但是要注意,只有另外一個類的對象,才可以作為該類的成員,即作為類的成員對象存在。自身類的對象是不可以作為自身類的成員存在,但自身類的指針可以。對于本題,在定義類BB時,不能包括其對象v3。4、下面描述中錯誤的是()。A、系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細(xì)設(shè)計B、軟件設(shè)計是將軟件需求轉(zhuǎn)換為軟件表示的過程C、數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計是軟件設(shè)計的任務(wù)之一D、PAD圖是軟件詳細(xì)設(shè)計的表示工具標(biāo)準(zhǔn)答案:A知識點解析:軟件設(shè)計是將軟件需求轉(zhuǎn)換為軟件表示的過程;數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計是軟件設(shè)計的任務(wù)之一;PAD圖,即問題分析圖,是一種主要用于描述軟件詳細(xì)設(shè)計的圖形工具。5、有如下程序:#include<iostream>usingnamespacestd;classA{public:A(){cout<<"A";}};classB{public:B(){cout<<"B";}};classC:publicA{Bb:public:C(){cout<<"C";}};intmain(){Cobj;return0:}執(zhí)行后的輸出結(jié)果是()。A、CBAB、BACC、ACBD、ABC標(biāo)準(zhǔn)答案:D知識點解析:此題中,語句Cobj對象初始化首先調(diào)用基類的構(gòu)造函數(shù)A(),輸出“A”,其次是C類中對象的構(gòu)造函數(shù)的調(diào)用,即調(diào)用B(),輸出“B”;最后是調(diào)用自身的構(gòu)造函數(shù)C(),輸出“C”。6、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、交C、投影D、并標(biāo)準(zhǔn)答案:A知識點解析:選擇是單目運算,其運算對象是一個表。該運算按給定的條件,從表中選出滿足條件的行形成一個新表作為運算結(jié)果。投影也是單目運算,該運算從表中選出指定的屬性值組成一個新表。自然連接是一種特殊的等價連接,它將表中有相同名稱的列自動進(jìn)行記錄匹配。自然連接不必指定任何同等連接條件。7、字面常量42、4.2、42L的數(shù)據(jù)類型分別是()。A、long,double,intB、long,float,intC、int,double,longD、int,float,long標(biāo)準(zhǔn)答案:C知識點解析:此題考查的知識點是字面常量。對于整型字面常量,只要沒有超過c++中整數(shù)所能表示的范圍,C++將自動按整數(shù)來存儲此數(shù),也可以通過在整型字面常量后添加u或1來指定無符號整數(shù)或長整數(shù)來存儲;對于實型字面常量,C++將自動按照雙精度數(shù)來存儲,也可以通過在實型字面常量后添加f來指定按單精度數(shù)存儲。8、下列選項中,與實現(xiàn)運行時多態(tài)性無關(guān)的是()。A、重載函數(shù)B、虛函數(shù)C、指針D、引用標(biāo)準(zhǔn)答案:A知識點解析:在C++中,多態(tài)性可以分為兩類:編譯時的多態(tài)性和運行時的多態(tài)性。編譯時的多態(tài)性是通過函數(shù)重載和模版體現(xiàn)的,運行時的多態(tài)性是通過虛函數(shù)體現(xiàn)的。9、有如下程序:#inc1ude<iostream>usingnamespacestd;classPoint{intx,y;public:Point(intxl=0,int’yl=0):x(xl),y(yl){}intget(){returnx+y;}};classCirc1e{Pointcenter;intradius;public:Circ1e(intcx,intcy,intr):center(cx,cy),radius(r){}intget(){retumcenter.get()+radius;}};intmain(){Circ1ec(3,4,5);cout<<c.get()<<endl;return0:}運行時的輸出結(jié)果是()。A、5B、7C、9D、12標(biāo)準(zhǔn)答案:D知識點解析:根據(jù)類Point和類Circle的定義可知,類Circle的實例c(3,4,5)的成員函數(shù)c.get()返回值為3+4+5=12。10、對于一個類定義,下列敘述中錯誤的是()。A、如果沒有定義拷貝構(gòu)造函數(shù),編譯器將生成一個拷貝構(gòu)造函數(shù)B、如果沒有定義缺省的構(gòu)造函數(shù),編譯器將一定生成一個缺省的構(gòu)造函數(shù)C、如果沒有定義構(gòu)造函數(shù),編譯器將生成一個缺省的構(gòu)造函數(shù)和一個拷貝構(gòu)造函數(shù)D、如果已經(jīng)定義了構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會生成任何構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是構(gòu)造函數(shù)。如果一個類中沒有定義任何構(gòu)造函數(shù),編譯器將生成一個不帶參數(shù)的公有缺省構(gòu)造函數(shù)。但只要定義了一個任意的構(gòu)造函數(shù),就不會生成缺省構(gòu)造函數(shù)了。11、若要對Data類中重載的加法運算符成員函數(shù)進(jìn)行聲明,下列選項中正確的是()。A、Data+(Data);B、Dataoperator+{Data};C、Data+operator{Data};D、operator+(Data,Data);標(biāo)準(zhǔn)答案:B知識點解析:“+”是一個二元運算符,因此作為成員函數(shù)重載時參數(shù)表中只有一個參數(shù),對應(yīng)于第二個操作數(shù),而第一個操作數(shù)是對象本身。運算符函數(shù)的函數(shù)名是由運算符前加關(guān)鍵字operator構(gòu)成的。12、有如下程序:#inc1ude<iostream>usingnamespacestd;classMyclass{public:Myclass(intx):val(x){}voidSet(intx){val=x;}voidPrint()const{cont<<"Val="<<Val<<’\t’;)private:intval,};intmain(){constMyclassobj1(10);Myclassobj2(20);obj1.Print();//語句1obj2.Print();//語句2obj1.Set(20);//語句3obj2.Set(30);//語句4return0;}其主函數(shù)中錯誤的語句是()。A、語句1B、語句2C、語句3D、語句4標(biāo)準(zhǔn)答案:C知識點解析:在創(chuàng)建類對象objl(10)時,前面有關(guān)鍵字const,所以當(dāng)語句3調(diào)用objl的成員函數(shù)試圖修改其私有成員的數(shù)值的時候,會編譯出錯。13、已知函數(shù)f的原型是“voidflint*x,int&y);”,變量v1、v2的定義是“intv1,v2;”,下列調(diào)用語句中,正確的是()。A、f(v1,V2);B、f(v1,&V2);C、f(&v1,v2);D、f(&v1,&v2);標(biāo)準(zhǔn)答案:C知識點解析:在函數(shù)f的形參表達(dá)式中第一個形參為整型指針變量,第二個為整型引用變量,所以用實參v1的指針初始化第一個形參,用實參v2初始化第二形參。14、有如下程序:#include<iostream>usingnarnespacestd;voidfl(int&x){x++;}voidf2(intx){++x;}intmain(){intx=10,y=12;f1(x);f2(y);cout<<x+y<<end1;return0;}運行這個程序的輸出結(jié)果是()。A、22B、23C、24D、25標(biāo)準(zhǔn)答案:B知識點解析:在函數(shù)f1(int&x){x++;}中,是對變量x的引用,所以當(dāng)在main函數(shù)中執(zhí)行“f1(x);”語句后,變量x的值等于ll,而在函數(shù)voidf2(intx){++x;}中,對變量x的傳遞調(diào)用,在main函數(shù)中執(zhí)行“f2(y);”語句后,變量y的值仍然等于12,所以輸出x+y的值等于23。15、下列關(guān)于繼承方式的描述中,錯誤的是()。A、如果不顯式地指定繼承方式,缺省的繼承方式是私有(private)B、采用公有繼承方式時,基類中的公有成員在派生類中仍是公有成員C、采用保護(hù)繼承方式時,基類中的保護(hù)成員在派生類中仍然是保護(hù)成員D、采用私有繼承方式時,基類中的私有成員在派生類中仍然是私有成員標(biāo)準(zhǔn)答案:D知識點解析:基類中的私有成員在派生類中是隱蔽的,只能在基類內(nèi)部訪問。派生類中的成員不可以訪問基類中的私有成員,只可以訪問基類中的公有成員和保護(hù)成員。16、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assXX{intx;public:XX(intxx=0):x(xx){}intgetX(){returnx;)};c1assYY:publicXX{inty;public:YY(intxx,intyy):XX(xx),y(yy){}intgetV(){retumgetX()+y;}};intmain(){YYc(3,4);cout<<c.getV()+c.getXO<<end1;return0;}運行這個程序的輸出結(jié)果是()。A、3B、4C、7D、10標(biāo)準(zhǔn)答案:D知識點解析:由于類YY公開繼承自類XX,所以執(zhí)行表達(dá)式c.getVO+c.getXO的值等于3+3+4=10。17、有如下程序:#includeusingnamespacestd;classA{public:virtualvoidf(){cout<<1;}voidg(){cout<<2;}};classB: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標(biāo)準(zhǔn)答案:D知識點解析:在派生類classB中對基類中的虛擬成員函數(shù)virtualvoidf()和實函數(shù)voidgO進(jìn)行了重新定義,在主函數(shù)中通過語句show(b);調(diào)用派生類中的虛函數(shù)virrualvoidf(){cout<<3;}輸出3,調(diào)用基類的實函數(shù)voidg(){cout<<2;}輸出2。所以選項D為正確答案。18、下列關(guān)于輸入輸出流的敘述中,正確的是()。A、一個文件流可以與一個數(shù)據(jù)文件相聯(lián)系B、cin是專門從鍵盤輸入數(shù)據(jù)的輸入流類C、流運算符<<用來從輸入流中讀取數(shù)據(jù)D、寬度設(shè)置的效果永久有效標(biāo)準(zhǔn)答案:A知識點解析:當(dāng)程序與外界環(huán)境進(jìn)行信息交換時,存在著兩個對象,一個是程序中的流對象,另一個是文件對象。程序建立一個流對象,并指定這個流對象與某個文件對象建立連接,程序操作流對象,流對象通過文件系統(tǒng)對所連接的文件對象產(chǎn)生作用。19、若目前D盤根目錄下并不存在test.txt文件,則下列打開文件方式不會自動創(chuàng)建test.txt文件的是()。A、ifstreamfin;fin.open(’’d:\\test.txt’’,ios_base::in);B、fstreamrio;fio.open(’’d:\\test.txt’’,ios_base::out);C、ofstreamlout;fout.open(’’d:\\test.txt’’,ios_base::out);D、ofstreamfout;fout.open(’’d:\\test.txt’’,ios_base::app);標(biāo)準(zhǔn)答案:A知識點解析:如果以iso_base::in模式打開文件但文件又不存在時,可以通過fail()測出文件打開失敗,不會自動創(chuàng)建文件。20、C++系統(tǒng)預(yù)定了4個用于標(biāo)準(zhǔn)數(shù)據(jù)流的對象,下列選項中不屬于此類對象的是()。A、coutB、cinC、cerrD、cset標(biāo)準(zhǔn)答案:D知識點解析:C++流有4個預(yù)定義的流對象,它們分別是:ein標(biāo)準(zhǔn)輸入:cout標(biāo)準(zhǔn)輸出;cerr標(biāo)準(zhǔn)出錯信息輸出;clog帶緩沖的標(biāo)準(zhǔn)出錯信息輸出。21、若目前D盤根目錄下并不存在test.txt文件,則下列打開文件方式不會自動創(chuàng)建test.txt文件的是()。A、ifstreamfin;fin.open(’’d:\\test.txt’’,ios_base::in);B、fstreamrio;fio.open(’’d:\\test.txt’’,ios_base::out);C、ofstreamlout;fout.open(’’d:\\test.txt’’,ios_base::out);D、ofstreamfout;fout.open(’’d:\\test.txt’’,ios_base::app);標(biāo)準(zhǔn)答案:A知識點解析:如果以iso_base::in模式打開文件但文件又不存在時,可以通過fail()測出文件打開失敗,不會自動創(chuàng)建文件。國家二級C++機(jī)試(選擇題)模擬試卷第3套一、選擇題(本題共20題,每題1.0分,共20分。)1、以下程序的輸出的結(jié)果是()。#include<iostream.h>intx=3;voidmain(){voidfun();inti;for(i=1;i<x;i++)fun();}voidfun(){staticintx=1;x*=x+1;cout<<x<<’’’’;}A、3,3B、2,2C、2,6D、2,5標(biāo)準(zhǔn)答案:C知識點解析:由主函數(shù)入手,在for循環(huán)中調(diào)用fun函數(shù),其中調(diào)用次數(shù)為2次。fun中x為靜態(tài)變量,有效到文件結(jié)束,所以第一次調(diào)用為x=x*(x+1)=1*(1+1)=2,第二次調(diào)用2*(2+1)=6。2、下列方法中,屬于白盒法設(shè)計測試用例的方法的是()。A、錯誤推測B、因果圖C、基本路徑測試D、邊界值分析標(biāo)準(zhǔn)答案:C知識點解析:白盒測試方法也稱為結(jié)構(gòu)測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。3、有如下類聲明:classSAMPLE{intn;public:SAMPLE(inti=0):n(i){}voidsetvalue(intn0);};下列關(guān)于getValue成員函數(shù)的實現(xiàn)中,正確的是()。A、SAMPLE∷setValue(intn0){n=n0;}B、voidSAMPLE∷setValue(intn0){n=n0;}C、voidsetvalue(intn0){n=n0;}D、(intn0){n=n0;}標(biāo)準(zhǔn)答案:B知識點解析:此題考查了成員函數(shù)的定義格式。在類外部對成員函數(shù)定義時的一般格式為:返回類型類名∷成員函數(shù)名(參數(shù)表){函數(shù)體},故此題正確答案為選項B。4、下列各選項中,不屬乎序言性注釋的是()。A、程序標(biāo)題B、程序設(shè)計者C、主要算法D、數(shù)據(jù)狀態(tài)標(biāo)準(zhǔn)答案:D知識點解析:注釋一般為序言性注釋和功能性注釋。序言性注釋常位于程序開頭部分,它包括程序標(biāo)題、程序功能說明、主要算法、接口說明、程序位置、開發(fā)簡歷、程序設(shè)計者、復(fù)審者、復(fù)審日期及修改日期等。功能性注釋一般嵌在源程序體之中,用于描述其后的語句或程序的主要功能。5、軟件測試的目的是()。A、評估軟件可靠性B、發(fā)現(xiàn)并改正程序中的錯誤C、改正程序中的錯誤D、發(fā)現(xiàn)程序中7的錯誤標(biāo)準(zhǔn)答案:D知識點解析:軟件測試的目的是為了發(fā)現(xiàn)程序中的錯誤,而軟件調(diào)試是為了更正程序中的錯誤。6、有如下程序#includeusingnamespacestd;inti=1:classFun{public:staticinti;intvalue(){returni—l;}intvalue()const{returni+l;));intFun::i=2;intmain(){inti=3;Funfunl;constFunfun2;retumO;)若程序的輸出結(jié)果是:123則程序中下劃線處遺漏的語句是()。A、cout<B、cout<C、cout<D、cout<標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是常成員函數(shù)。const關(guān)鍵字可以用于參與重函數(shù)的區(qū)分,此時常對象調(diào)用常成員函數(shù),一般對象調(diào)用一般成員函數(shù),當(dāng)類中只有一個常成員函數(shù)時,一般對象也可以調(diào)用該常成員函數(shù)。本題中,通過funl調(diào)用value(]函數(shù)時,是調(diào)用前一個,而通過fun2調(diào)用value()函數(shù)是調(diào)用后一個;另外,value()函數(shù)中訪問的i是類中定義的數(shù)據(jù)成員i,全局變量i在類中被“屏蔽”。funl.value()輸出i.1=2.1=l:fun2.value()調(diào)用后一個value()函數(shù)輸出i+1=2+l=3;Fun::i是通過類名直接訪問類的靜態(tài)數(shù)據(jù)成員i的值,即2;所以正確的輸出順序是A選項。7、下面屬于白盒測試方法的是A、等價類劃分法B、邏輯覆蓋C、邊界值分析法D、錯誤推測法標(biāo)準(zhǔn)答案:B知識點解析:白盒測試的主要方法有邏輯覆蓋、基本路徑測試等。8、在下列字符中,不允許作為C++標(biāo)識符的是()。A、bB、BC、_D、2標(biāo)準(zhǔn)答案:D知識點解析:C++的標(biāo)識符是一個以字母或下劃線開頭的,由字母、數(shù)字、下劃線組成的字符串。9、若x和y是程序中的兩個整型變量,則下列if語句中正確的是()。A、if(x==0)y=1;elsey=2;B、if(x==0)theny=1elsey=2;C、if(x==0)y=1elsey=2;D、if(x==0)y=1;elsey=2;標(biāo)準(zhǔn)答案:A知識點解析:ifelse語句的形式為:if(<條件>)<語句1>else<語句2>所以符合以上形式的ifelse語句為選項A。10、已知函數(shù)fun的原型為intfun(int,int,int);下列重載函數(shù)原型中錯誤的是()。A、charfun(int,int);B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);標(biāo)準(zhǔn)答案:D知識點解析:重載函數(shù)至少要在參數(shù)個數(shù)或參數(shù)類型上不同。而選項D中的函數(shù)與原函數(shù)只是函數(shù)類型不同,而其他完全相同(參數(shù)個數(shù)及類型),則不能作為重載函數(shù)來使用。11、下列關(guān)于C++流的描述中,錯誤的是()。A、cout>>~A表達(dá)式可輸出字符AB、eof()函數(shù)可以檢測是否到達(dá)文件尾C、對磁盤文件進(jìn)行流操作時,必須包含頭文件fstreamD、以iosbase::out模式打開的文件不存在時,將自動建立一個新文件標(biāo)準(zhǔn)答案:A知識點解析:cout是一個標(biāo)準(zhǔn)輸出流對象。>>稱之為提取運算符,它的功能是從輸入流中提取數(shù)據(jù)賦值給一個變量。<<為插入運算符,其功能是把表達(dá)式的值插入到輸出流中。當(dāng)系統(tǒng)執(zhí)行cout<12、有如下類定義:classPoint{private;staticinthow_many;};________how_many=0;要初始化Point類的靜態(tài)成員howmany,下劃線處應(yīng)填入的內(nèi)容是()。A、ingB、staticintC、intPoint::D、staticintPoint::標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是靜態(tài)數(shù)據(jù)成員的初始化。靜態(tài)數(shù)據(jù)成員應(yīng)在類體外進(jìn)行初始化,且初始化的一般格式為:數(shù)據(jù)類型類名::靜態(tài)數(shù)據(jù)成員名=初始值。13、有如下類定義:classMyClass{intx;public:MyClass0:x(0),y(0){}intGetX(){returiax;}voidSetX(intxx){x=xx;}inty;};已知obi是類MyClass的對象,下列語句中違反類成員訪問控制權(quán)限的是()。A、obj.xB、obj.yC、obj.GetX()D、obj.SetX(0)標(biāo)準(zhǔn)答案:A知識點解析:由類MyClass的定義可知,數(shù)據(jù)成員x屬于私有成員,所以只能在類的內(nèi)部訪問。類MyClass的對象obj不能訪問類MyClass的私有成員x。14、有如下程序#inc1ude<iostream>usingnamespacestd;c1assBase{protected:Base(){cout<<’A’;}Base(charc){cout<<c;}};c1assDerived:publicBase{public:Derived(charc){cout<<c,)};intmain(){Deriveddl(’B’);return0;}執(zhí)行這個程序屏幕上將顯示輸出()。A、BB、BAC、ABD、BB標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是派生類對象的構(gòu)造。建立派生類對象時,構(gòu)造函數(shù)的執(zhí)行順序是:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個基類被被繼承時聲明的順序;執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中聲明的順序;執(zhí)行派生類的構(gòu)造函數(shù)。此題中,在建立派生類Derived的對象dl時會先調(diào)用基類Base的構(gòu)造,調(diào)用的是默認(rèn)構(gòu)造函數(shù),輸出字符’A’;然后調(diào)用自身的構(gòu)造函數(shù),輸出‘B’;故程序的輸出結(jié)果是:AB。15、有如下程序:#includeusmgnamespacestd;classA{Public:AO{tout<<"A";}~A(){cout<<"~A;}};classB:publicA{A*p;public:B(){cout<<"B";P=newA();}~B(){tout<<"~B";deletep;}};intmain(){Bobj;return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是派生類對象的構(gòu)造與析構(gòu)。建立派生類對象時,構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個基類被定義時聲明的順序(自左向右)->執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中聲明的順序一>執(zhí)行派生類的構(gòu)造函數(shù)。所以本題在建立派生類B的對象obj是會先調(diào)用基類A的構(gòu)造函數(shù),然后調(diào)用自身的構(gòu)造函數(shù)。注意:B類中定義的成員p是A類的指針而不是一個對象,故在調(diào)用自身構(gòu)造函數(shù)前不需要構(gòu)造。而在B類構(gòu)造函數(shù)中使用new操作符動態(tài)地構(gòu)造了一個A類的對象,所以整個構(gòu)造結(jié)果是輸出:ABA。派生類對象的析構(gòu)與構(gòu)造嚴(yán)格相反,即先析構(gòu)自身,然后析構(gòu)自身所包含的成員對象,最后調(diào)用基類的析構(gòu)函數(shù)。故本題中當(dāng)main()函數(shù)返回時,析構(gòu)B類的對象obj:首先調(diào)用~B(),接著再調(diào)用~A0因為在~B()函數(shù)中釋放了動態(tài)創(chuàng)建的A類對象,故整個析構(gòu)所輸出的結(jié)果是~B~A~A。所以這個程序輸出結(jié)果為ABA~B~A~A16、如果不使用多態(tài)機(jī)制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基類繼承的成員。有如下程序,沒有使用多態(tài)機(jī)制。#includeusingnamespacestd;classBase{inta,b;public:Base(intx,inty){a=x;b=y;}voidshow(){cout<A、10,20B、30,40C、20,30D、50,50標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是多態(tài)性。在C++中,一個基類指針可以用于指向它的派生類對象,而且通過這樣的指針調(diào)用虛函數(shù)時,被調(diào)用的是該指針實際所指向的對象類的那個重定義版本。在實函數(shù)的情況下。通過基類指針?biāo){(diào)用的只能是基類的那個函數(shù)版本,無法調(diào)用劍派生類中重定義函數(shù)。此題中,通過指針pb所調(diào)用的是基類的版本,即輸出a和b的值10,20。17、下列關(guān)于運算符函數(shù)的描述中,錯誤的是()。A、運算符函數(shù)的名稱總是以operator為前綴B、運算符函數(shù)的參數(shù)可以是對象C、運算符函數(shù)只能定義為類的成員函數(shù)D、在表達(dá)式中使用重載的運算符相當(dāng)于調(diào)用運算符重載函數(shù)標(biāo)準(zhǔn)答案:C知識點解析:C++把重載的運算符視為特殊的函數(shù),稱為運算符函數(shù)。編譯系統(tǒng)能夠依據(jù)使用運算符的不同環(huán)境,即參數(shù)(操作數(shù))的數(shù)量或類型的差異,區(qū)分同一運算符的不同含義。運算符函數(shù)作為非成員函數(shù)時,所有的操作數(shù)必須出現(xiàn)在參數(shù)表中。18、下面程序中對一維坐標(biāo)點類Point進(jìn)行運算符重載#include<iostream>usingnamespacestd;classPoint{public:Point(intval){x=val;}Point&operator++(){x++;rcturn*this;}Pointoperator++(int){Pointold=*this;++(*this);returnold;}IntGetX()const{returnx;}private:intx;};hatmain(){Pointa(10);cout<<(++a).GetX();cout<<a++.GetX();return0;}編譯和運行情況是()。A、運行時輸出1011B、運行時輸出1111C、運行時輸出1112D、編譯有錯標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是重載增1運算符“++”。此題中,Point&operator++()重載的是前綴形式,而Pointoperator++(int)重載的是后綴形式。所以主函數(shù)中第1條輸出語句輸出11,此時a.x的值為11:第2條輸出語句,首先創(chuàng)建了一個P0int對象old保存自身,然后通過語句++(*this);調(diào)用前綴++的重載函數(shù),因為返回值是改變前保存的old對象,故仍輸出11。19、當(dāng)使用ifstream流類定義一個流對象并打開一個磁盤文件時,文件的默認(rèn)打開方式為()。A、ios_base:finB、ios_base::in|ios_base::outC、iosbase::outD、iosbase::in&iosbase::out標(biāo)準(zhǔn)答案:A知識點解析:對于ifstream,默認(rèn)打開模式是ios_base::in。ifstream只能用于輸入,它沒有提供任何用于輸出的操作。20、下列關(guān)于文件流的描述中,正確的是()。A、文件流只能完成針對磁盤文件的輸入和輸出B、建立一個文件流對象時,必須同時打開一個文件C、若輸入流要打開的文件不存在,將建立一個新文件D、若輸出流要打開的文件不存在,將建立一個新文件標(biāo)準(zhǔn)答案:D知識點解析:對于輸入文件流類ifstream,默認(rèn)的打開模式是ios_base::in,當(dāng)以這種方式打開文件而文件又不存在時,通過fail()可測試打開失敗(返回值為true),對于輸出文件流類ofstream,默認(rèn)的打開模式是iosbase::out,當(dāng)以這種方式打開文件而文件又不存在時,將自動建立新文件。國家二級C++機(jī)試(選擇題)模擬試卷第4套一、選擇題(本題共20題,每題1.0分,共20分。)1、按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。A、隊列B、棧C、雙向鏈表D、二叉樹標(biāo)準(zhǔn)答案:B知識點解析:棧是限定在一端進(jìn)行插入與刪除的線性表。在棧中,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另…端稱為棧底。棧頂元素總是最后被插入的元素,也是最先被刪除的元素;棧底元素總是最先被插入的元素,也是最后才能被刪除的元素。即棧是按照“后進(jìn)先出”(LastInFirstOut,簡稱LIFO)或“先進(jìn)后出”(FirstInLastOut,簡稱FILO)的原則組織數(shù)據(jù)的。因此,棧也稱為“后進(jìn)先出表”或“先進(jìn)后出”表。2、下列描述中正確的是()。A、軟件交付使用后還需要再進(jìn)行維護(hù)B、軟件工具交付使用就不需要再進(jìn)行維護(hù)C、軟件交付使用后其生命周期就結(jié)束D、軟件維護(hù)是指修復(fù)程序中被破壞的指令標(biāo)準(zhǔn)答案:A知識點解析:通常將軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用退役的過程稱為軟件生命周期。軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護(hù)三個階段。已交付的軟件投入運行后,應(yīng)在運行使用中不斷地維護(hù),根據(jù)新提出的需要進(jìn)行必要而且可能的擴(kuò)充和刪改。3、有如下程序:#includeusingnamespacestd;classMusic{public:voidsetTitle(char*str){strcpy(title,str);}protected:chartype[10];private:chartitle[20];};classJazz:publicMusic{public:voidset(char*str){strcpy(type,“Jazz”);//①strcpy(rifle,str);//②}};下列敘述中正確的是()。A、程序編譯正確B、程序編譯時語句①出錯C、程序編譯時語句②出錯D、程序編譯時語句①和②都出錯標(biāo)準(zhǔn)答案:C知識點解析:本題考查公用繼承和保護(hù)繼承對基類成員的訪問屬性。公用繼承中,基類的公用成員和保護(hù)成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。保護(hù)成員不能被類外訪問,但是可以被派生類的成員函數(shù)訪問。Type成為派生類的保護(hù)成員,可以被派生類訪問,title仍為基類私有,派生類不能直接訪問。所以答案為C。4、下列關(guān)于this指針的敘述中,正確的是()。A、任何與類相關(guān)的函數(shù)都有this指針B、類的成員函數(shù)都有this指針C、類的友元函數(shù)都有this指針D、類的非靜態(tài)成員函數(shù)才有this指針標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是this指針的使用。類的每一個成員函數(shù)都有一個隱含的常量指針,即this指針。類的靜態(tài)成員函數(shù)不能含有this指針,因為this指針是一個指向本對象的指針。5、下面屬于黑盒測試方法的是A、判定覆蓋B、條件覆蓋C、錯誤推測法D、基本路徑測試標(biāo)準(zhǔn)答案:C知識點解析:黑盒測試方法包括:等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、判定表驅(qū)動法、正交試驗設(shè)計法、功能圖法、場景法等。6、有如下類聲明:classMyBASE{intk;public:voidset(intn){k=n;}intget()const{returnk;}};classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE∷set(m);j=n;}intget()const{returnMyBASE∷get()+j;}};則類MyDERIVED中保護(hù)的數(shù)據(jù)成員和成員函數(shù)的個數(shù)是()。A、4B、3C、2D、1標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是派生與繼承中的訪問權(quán)限。protected派生:private->不可見;protected->private;public->protected。7、屬于對象構(gòu)成成份的是A、規(guī)則B、屬性C、標(biāo)識D、方法(或操作)標(biāo)準(zhǔn)答案:A知識點解析:對象由屬性、方法和標(biāo)識構(gòu)成。8、以下程序輸出結(jié)果是():#include<iostream>usingnamespacestd;voidadd(intx,inty,int*z){*z=y+x;}intmain(){inta,b,c;add(8,4,&a);add(6,a,&b);add(a,b,&c);cout<<a<<","<<b<<","<<c<<endl;return0;}A、12,10,14B、12,18,30C、12,6,18D、12,14,30標(biāo)準(zhǔn)答案:B知識點解析:由主函數(shù)main入手,調(diào)用add函數(shù),其中第三個參數(shù)為引用,即傳值為地址。當(dāng)add函數(shù)中第三個參數(shù)改變時,主函數(shù)中這個值也會改變。那么第一個add調(diào)用后a=12,所以第二個調(diào)用中a=12。調(diào)用后b=18。那么第三個調(diào)用后c=30。9、針對數(shù)組定義intdata[10];,下列表述中錯誤的是()。A、用*data可訪問到數(shù)組的首元素B、用data[9]可訪問到數(shù)組的末元素C、用data[10]訪問數(shù)組元素會超出數(shù)組邊界D、data共有10個元素,其首元素是data[1]標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是數(shù)組和指針的概念。題目中data[10]共有10個元素,分別是data[0]、data[1]、data[2]、data[3]…data[9],首元素是data[0],所以選項D錯誤;其他選項均正確。10、下列關(guān)于運算符重載的描述中,錯誤的是()。A、∷運算符不能重載B、類型轉(zhuǎn)換運算符只能作為成員函數(shù)重載C、將運算符作為非成員函數(shù)重載時必須定義為友元D、重載[]運算符應(yīng)完成“下標(biāo)訪問”操作標(biāo)準(zhǔn)答案:C知識點解析:C++把重載的運算符視為特殊的函數(shù),稱為運算符函數(shù)?!斑\算符重載”是針對C++中原有運算符進(jìn)行的,不可能通過重載創(chuàng)造出新的運算符。11、若有定義語句“inti=2,j=3;”,則表達(dá)式i/j的結(jié)果是()。A、0B、0.7C、0.66667D、0.66666667標(biāo)準(zhǔn)答案:A知識點解析:由于變量i、j都是整型變量,所以兩者相除所得的商也是整型數(shù)據(jù)。12、建立一個有成員對象的派生類對象時,各構(gòu)造函數(shù)體的執(zhí)行次序為()。A、派生類、成員對象類、基類B、成員對象類、基類、派生類C、基類、成員對象類、派生類D、基類、派生類、成員對象類標(biāo)準(zhǔn)答案:C知識點解析:建立派生類對象的時候,構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用的順序按照基類被繼承時候的順序(自左向右)。然后是執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中的聲明順序(自上而下),最后是執(zhí)行派生類的構(gòu)造函數(shù)。13、有如下兩個類定義classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;potected:doubley2;public:doubley3;};在類YY中保護(hù)成員變量的個數(shù)是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識點解析:在C++中派生類從基類保護(hù)繼承時,基類的公有成員在派生類中改變?yōu)楸Wo(hù)成員,基類的保護(hù)成員在派生類中仍為保護(hù)成員。所以對于本題來說,YY類保護(hù)繼承自類XX,那么類XX中的公有成員x3和保護(hù)成員x2在派生類中都成為保護(hù)成員,再加上類YY中的保護(hù)成員y2,因此在派生類YY中保護(hù)成員的個數(shù)為3。14、有如下兩個類定義classxx{private:doublex1;protected:double:x2;public:doublex3;};classYY:protectedXX{private:doubley1;potected:doubley2;public:doubley3;};在類YY中保護(hù)成員變量的個數(shù)是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識點解析:在C++中派生類從基類保護(hù)繼承時,基類的公有成員在派生類中改變?yōu)楸Wo(hù)成員,基類的保護(hù)成員在派生類中仍為保護(hù)成員。所以對于本題來說,YY類保護(hù)繼承自類XX,那么類XX中的公有成員x3和保護(hù)成員x2在派生類中都成為保護(hù)成員,再加上類YY中的保護(hù)成員y2,因此在派生類YY中保護(hù)成員的個數(shù)為3。15、C++中的模板包括()。A、對象模板和函數(shù)模板B、對象模板和類模板C、函數(shù)模板和類模板D、變量模板和對象模板標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是模板。在C++語言中,模板有兩類:函數(shù)模板和類模板。16、在C++中,打開一個文件時與該文件建立聯(lián)系的是()。A、流對象B、模板C、函數(shù)D、類標(biāo)準(zhǔn)答案:A知識點解析:在C++中,打開一個文件時與該文件建立聯(lián)系的是流對象。17、有如下程序:#include<iostream>usingnamespacestd;classBase{public:virtualvoidfunction1(){tout<<’0’;}voidfunction2(){cout<<’1’;}};classDerived:publicBase{public:voidfunction1(){tout<<’2’;}voidfunction2(){cout<<’3’;}};intmain(){Base*p=newDerived();p->function1();p->function2();return0;};運行時的輸出結(jié)果是()。A、01B、21C、03D、23標(biāo)準(zhǔn)答案:B知識點解析:函數(shù)function1()在基類Base中定義為虛成員函數(shù),而在派生類Dervied中重新進(jìn)行了定義,輸出字符2,函數(shù)function2()在基類Base中定義虛成員函數(shù),在主函數(shù)中使用指向基類的指針變量p訪問function2()時,輸出1。18、下列關(guān)于運算符重載的敘述中,正確的是()。A、通過運算符重載,可以定義新的運算符B、有的運算符只能作為成員函數(shù)重載C、若重載運算符+,則相應(yīng)的運算符函數(shù)名是+D、重載一個二元運算符時,必須聲明兩個形參標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是運算符重載。C++中,“=”、“[]”、“()”、“->”以及所有的類型轉(zhuǎn)換符只能作為成員函數(shù)重載,故B選項正確;運算符重載只是賦予已有的運算符多重含義,并不是定義新的運算符;運算符函數(shù)的函數(shù)名就是在運算符前加上關(guān)鍵字operator。19、下面程序中對一維坐標(biāo)點類Point進(jìn)行運算符重載#includeusingnamespacestd;classPoint{public:Point(intval){x=val;}Point&operator++(){x++;return*this;)Pointoperator++(int){Pointold=*this;++(*this);returnold;}IntGetX()const{returnx;}private:intx;};intmain(){Pointa(10);cout<<(++a).GetX();cout<A、運行時輸出1011B、運行時輸出1111C、運行時輸出1112D、編譯有錯標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是重載增1運算符“++”。此題中,Point&operator++()重載的是前綴形式,而Pointoperator++(int)重載的是后綴形式。所以主函數(shù)中第1條輸出語句輸出11,此時a.x的值為11;第2條輸出語句,首先創(chuàng)建了一個Point對象old保存自身,然后通過語句++(*this);調(diào)用前綴++的重載函數(shù),因為返回值是改變前保存的old對象,故仍輸出11。20、下列關(guān)于類模板的描述中,錯誤的是()。A、類模板的成員函數(shù)都是模板函數(shù)B、可以為類模板參數(shù)設(shè)置默認(rèn)值C、類模板描述了一組類D、類模板中只允許有一個類型參數(shù)標(biāo)準(zhǔn)答案:D知識點解析:類模板就是一系列相關(guān)類的模型或樣板,這些類的成員組成相同,成員函數(shù)的源代碼形式相同,所不同的只是所針對的類型(成員的類型以及成員函數(shù)的參數(shù)和返回值的類型)。一個類模板的格式是:template<<模板形參表聲明>><類聲明>,<模板形參表聲明>是由一個或多個模板形參組成。在定義類模板時,可以為模板形參表聲明的最后若干個參數(shù)設(shè)置默認(rèn)值。國家二級C++機(jī)試(選擇題)模擬試卷第5套一、選擇題(本題共17題,每題1.0分,共17分。)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ù)處理的效率標(biāo)準(zhǔn)答案:D知識點解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系;數(shù)據(jù)的存儲結(jié)構(gòu)是在對數(shù)據(jù)進(jìn)行處理時,各數(shù)據(jù)元素在計算機(jī)中的存儲關(guān)系。數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的表示,一種邏輯結(jié)構(gòu)可以表示成多種存儲結(jié)構(gòu);而采用不同的存儲結(jié)構(gòu),其數(shù)據(jù)處理的效率是不同的。2、在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()。A、需求分析階段B、概念設(shè)計階段C、邏輯設(shè)計階段D、物理設(shè)計階段標(biāo)準(zhǔn)答案:C知識點解析:E―R圖轉(zhuǎn)換成關(guān)系模型數(shù)據(jù)則是把圖形分析出來的聯(lián)系反映到數(shù)據(jù)庫中,即設(shè)計出表,所以屬于邏輯設(shè)計階段。3、下列描述中正確的是()。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ù)處理的效率標(biāo)準(zhǔn)答案:D知識點解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系;數(shù)據(jù)的存儲結(jié)構(gòu)是在對數(shù)據(jù)進(jìn)行處理時,各數(shù)據(jù)元素在計算機(jī)中的存儲關(guān)系。數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的表示,一種邏輯結(jié)構(gòu)可以表示成多種存儲結(jié)構(gòu);而采用不同的存儲結(jié)構(gòu),其數(shù)據(jù)處理的效率是不同的。4、設(shè)循環(huán)隊列的存儲空間為Q(1:35),初始狀態(tài)為front=rear=35?,F(xiàn)經(jīng)過一系列入隊與退隊運算后,front=15,rear=15,則循環(huán)隊列中的元素個數(shù)為A、15B、16C、20D、0或35標(biāo)準(zhǔn)答案:D知識點解析:循環(huán)隊列的隊頭指針和尾指針都等于15,此循環(huán)隊列中元素的個數(shù)有兩種情況,第一種情況是隊頭指針和尾指針都是第一次到達(dá)15,此時元素個數(shù)為0;第二種情況是隊頭指針第一次到達(dá)15,而尾指針第二次到達(dá)15,此時元素個數(shù)為35。5、下列敘述中正確的是()。A、對長度為n的有序鏈表進(jìn)行查找,最壞情況下需要的比較次數(shù)為nB、對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為(n/2)C、對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為(log2n)D、對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為(nlog2n)標(biāo)準(zhǔn)答案:A知識點解析:本題主要考查的知識點為查找技術(shù)。順序查找的使用情況:①線性表為無序表;②表采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。二分法查找只適用于順序存儲的有序表,并不適用于線性鏈表。6、結(jié)構(gòu)化程序設(shè)計的基本原則不包括()。A、多元性B、自頂向下C、模塊化D、逐步求精標(biāo)準(zhǔn)答案:A知識點解析:結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為:自頂向下,逐步求精,模塊化和限制使用GOTO語句,其中不包括多態(tài)性。7、下列給字符數(shù)組進(jìn)行初始化中,正確的是()。A、chars1[]="12345abcd";B、chars2131="xyz";C、chars3[][3]={’a’,’x’,’y’};D、chars412131={"xyz","mnp"};標(biāo)準(zhǔn)答案:C知識點解析:在C++中定義二維數(shù)組時并賦值,則數(shù)組的行數(shù)可以省略不寫。選項A)、B)、D)均是字符字符串初始化。。8、下面描述中不屬于數(shù)據(jù)庫系統(tǒng)特點的是()。A、數(shù)據(jù)共享B、數(shù)據(jù)完整性C、數(shù)據(jù)冗余度高D、數(shù)據(jù)獨立性高標(biāo)準(zhǔn)答案:C知識點解析:數(shù)據(jù)系統(tǒng)的基本特點有數(shù)據(jù)的集成性、數(shù)據(jù)的高共享性與低冗余性、數(shù)據(jù)的獨立性、數(shù)據(jù)統(tǒng)一管理與控制。9、下列敘述中,錯誤的是()。A、false是一個邏輯型常量B、b是一個字符型常量C、365是一個int常量D、3.1415926是一個double常量標(biāo)準(zhǔn)答案:B知識點解析:字符常量簡稱字符,它以單引號作為起止符號,中間有一個或若干個字符?;蛘咭浴埃堋遍_頭的包括多個字符的字符序列也符合規(guī)定的字符常量。10、有如下函數(shù)模板:template<classT>Tsquare(Tx){returnx*x;}其中T是()。A、函數(shù)形參B、函數(shù)實參C、模板形參D、模板實參標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是函數(shù)模板。聲明一個函數(shù)模板的格式是:template<模板形參表聲明>函數(shù)聲明,{函數(shù)體}其中的<模板形參表聲明>是由一個或多個“模板形參”組成的,每個“模板形參”可具有以下幾種形式:typename參數(shù)名;class參數(shù)名;類型修飾參數(shù)名。11、下列語句中,錯誤的是()。A、constintbuffer=256;B、constinttemp;C、constdouble*point;D、constdouble*rt=newdouble(5.5);標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是符號常量的概念。符號常量必須在聲明的同時賦初值,故選項B錯誤;選項c定義的是一個指向常量的指針變量,即通過指針不能改變它所指向的內(nèi)容,而它自己的內(nèi)容是可以改變的,C選項正確。12、有如下程序:#include<iostream>usingnamespacestd;intmain(){inta[6]={23,15,64,33,40,58};ints1,s2;s1=s2=a[0];for(int*p=al+1;p<a+6;p++){if(s1>*p)s1=*p;if(s2<*p)s2=*p;}cout<<s1+s2<<end1;return0;}運行時的輸出結(jié)果是()。A、23B、58C、64D、79標(biāo)準(zhǔn)答案:D知識點解析:變量s1和s2的初值都等于23,那么在執(zhí)行第一次for循環(huán)時,*p的值等于15,它小于23,所以把15賦給變量s1;執(zhí)行第二次for

溫馨提示

  • 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

提交評論