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

下載本文檔

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

文檔簡介

國家二級(C++)機(jī)試模擬試卷8(共9套)(共367題)國家二級(C++)機(jī)試模擬試卷第1套一、選擇題(本題共38題,每題1.0分,共38分。)1、由于常對象不能被更新,因此()。A、通過常對象只能調(diào)用它的常成員函數(shù)B、通過常對象只能調(diào)用靜態(tài)成員函數(shù)C、常對象的成員都是常成員D、通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)標(biāo)準(zhǔn)答案:A知識點解析:本題考查常對象的基本知識,常對象只能調(diào)用它的常成員函數(shù),而不能調(diào)用非const函數(shù),常對象的成員函數(shù)不一定都是常成員函數(shù),只需保證其數(shù)據(jù)成員是常數(shù)據(jù)成員即可。所以本題選A。2、關(guān)于在調(diào)用模板函數(shù)時模板實參的使用,下列表述中正確的是()。A、對于虛擬類型參數(shù)所對應(yīng)的模板實參,如果能從模板函數(shù)的實參中獲得相同的信息,則都可以省略B、對于虛擬類型參數(shù)所對應(yīng)的模板實參,如果它們是參數(shù)表中的最后的若干個參數(shù),則都可以省略C、對于虛擬類型參數(shù)所對應(yīng)的模板實參,若能夠省略則必須省略D、對于常規(guī)參數(shù)所對應(yīng)的模板實參,任何情況下都不能省略標(biāo)準(zhǔn)答案:D知識點解析:在調(diào)用一個模板函數(shù)時,編譯系統(tǒng)需要足夠的信息來判別每個虛擬類型參數(shù)所對應(yīng)的實際類型,可以從兩個不同的渠道獲得這樣的信息:從模板實參表(用"<>"括起來的參數(shù)表)或從模板函數(shù)實參表(用"()"括起來的參數(shù)表)。如果從后者獲得的信息已經(jīng)能夠判定其中部分或全部虛擬類型參數(shù)所對應(yīng)的實際參數(shù),而且它們又正好是參數(shù)表中最后的若干參數(shù),則模板實參表中的那幾個參數(shù)可以省略。如果模板實參表中的實參都被省略了,則空表"<>"也可以不要,因此選項D錯誤。反之,對于某個模板實參,如果從模板函數(shù)的實參表中無法獲得同樣的信息,就不能省略;或者雖然能夠獲得同樣的信息,但在它后面還有其他不能省略的實參,則其自身還是不能省略。3、下列符號中可以用做C++標(biāo)識符的是()。A、_radiusB、foo~barC、elseD、3room標(biāo)準(zhǔn)答案:A知識點解析:本題考查C++標(biāo)識符的命名規(guī)則,其規(guī)則有如下幾點:①所有標(biāo)識符必須由字母、數(shù)字或下畫線組成,且必須由字母或下畫線開頭;②所有標(biāo)識符不能使用C++已有的關(guān)鍵字;③大、小寫字母表示不同意義,即代表不同的標(biāo)識符。選項B包含了字符"~",選項C是關(guān)鍵字,選項D不能以數(shù)字開頭。故答案為A。4、有如下頭文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函數(shù)中,具有隱含的this指針的是()。A、f1B、f2C、f3D、f4標(biāo)準(zhǔn)答案:C知識點解析:只有類的非靜態(tài)成員函數(shù)才隱含this指針,其作用域是類內(nèi)部,當(dāng)類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員時,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù),而不必一定寫上this。所以本題答案為C。5、要利用C++流實現(xiàn)輸入輸出的各種格式控制,必須在程序中包含的頭文件是A、fstreamB、istreamC、ostreamD、iomanip標(biāo)準(zhǔn)答案:D知識點解析:本題考查格式控制相關(guān)知識,屬于基礎(chǔ)知識,需要包含iomanip,所以D選項正確。6、有如下程序段:inti=1;while(1){i++;if(i==30)break;if(i%3==0)cout<<’*’;}執(zhí)行這個程序段輸出字符*的個數(shù)是A、30B、8C、9D、10標(biāo)準(zhǔn)答案:C知識點解析:本題中while循環(huán)中當(dāng)i為3的倍數(shù)時輸出*,而i為30時跳出循環(huán),所以輸出9個*,答案為C。7、下列有關(guān)繼承和派生的表述中,正確的是A、作為虛基類的類不能被實例化B、派生類不能訪問基類的保護(hù)成員C、派生類應(yīng)當(dāng)向基類的構(gòu)造函數(shù)傳遞參數(shù)D、虛函數(shù)必須在派生類中重新實現(xiàn)標(biāo)準(zhǔn)答案:C知識點解析:作為虛基類的類可以被實例化,派生類公用繼承和保護(hù)繼承基類,都可以訪問基類的保護(hù)成員。如果派生類沒有對虛函數(shù)重新定義,那么就調(diào)用基類的虛函數(shù)。所以C選項正確。8、下列敘述中正確的是A、一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大B、一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小C、一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小D、算法的時間復(fù)雜度與空間復(fù)雜度沒有直接關(guān)系標(biāo)準(zhǔn)答案:D知識點解析:算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間,算法的時間復(fù)雜度,是指執(zhí)行算法所需要的計算工作量,兩者之間并沒有直接關(guān)系,答案為D。9、有如下程序:#includeusingnamespacestd;intmain(){intx=4;do{x--;cout<A、輸出31B、輸出20C、輸出3210D、死循環(huán)標(biāo)準(zhǔn)答案:A知識點解析:本題考查dowhile循環(huán),執(zhí)行第一次時,輸出x為3,執(zhí)行第二次的時候為1,所以輸出結(jié)果為31,A選項正確。10、有如下類定義:classBag{public:Bag(strings="Small",stringcr="Black"):size(s),color(cr){}~Bag(){}private:stringsize,color;};若執(zhí)行語句Bag*ptr,my,colleage[2],&sister=my;則Bag類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是A、2次B、3次C、4次D、5次標(biāo)準(zhǔn)答案:B知識點解析:本題考查默認(rèn)析構(gòu)函數(shù),題中定義了一個對象和包含2個元素的一維對象數(shù)組,而對象指針不占用空間,對象引用也不會占用內(nèi)存空間,所以不調(diào)用構(gòu)造函數(shù),那么析構(gòu)函數(shù)就執(zhí)行3次,答案為B。11、在線性表的順序存儲結(jié)構(gòu)中,其存儲空間連續(xù),各個元素所占的字節(jié)數(shù)A、相同,元素的存儲順序與邏輯順序一致B、相同,但其元素的存儲順序可以與邏輯順序不一致C、不同,但元素的存儲順序與邏輯順序一致D、不同,且其元素的存儲順序可以與邏輯順序不一致標(biāo)準(zhǔn)答案:A知識點解析:順序表具有以下兩個基本特征:線性表中所有元素所占的存儲空間是連續(xù)的;線性表中各數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的。在順序表中,每個元素占有相同的存儲單元。A選項正確。12、以下關(guān)鍵字用來聲明類的訪問權(quán)限的是A、constB、staticC、protectedD、case標(biāo)準(zhǔn)答案:C知識點解析:C++中,關(guān)鍵字public、protected、private用來聲明類的訪問權(quán)限,答案為C。13、有如下類聲明:classBase1{};classBase2{};classDerived:publicBase2,publicBase1{};在一個Derived對象消亡時,析構(gòu)函數(shù)被調(diào)用的順序是A、~Derived、~Base1、~Base2B、~Derived、~Base1、~Base2C、~Base1、~Base2、~DerivedD、~Base2、~Base1、~Derived標(biāo)準(zhǔn)答案:A知識點解析:C++中,派生類構(gòu)造函數(shù)都是先調(diào)用基類構(gòu)造函數(shù),再根據(jù)聲明次序定義數(shù)據(jù)成員,另外對于多繼承,派生類的構(gòu)造函數(shù)初始化列表中,基類構(gòu)造函數(shù)是按照基類在派生類的派生列表中出現(xiàn)的次序調(diào)用的;而析構(gòu)函數(shù)是按構(gòu)造函數(shù)運行順序的逆序進(jìn)行調(diào)用的,可知題目中析構(gòu)函數(shù)的調(diào)用順序為:派生類Derived的析構(gòu)函數(shù),Base1的析構(gòu)函數(shù),Base2的析構(gòu)函數(shù);答案為A。14、下面是重載為非成員函數(shù)的運算符的函數(shù)原型,其中錯誤的是()。A、Fractionoperator+(Fraction,Fraction);B、Fractionoperator-(Fraction);C、Fraction&operator=(Fraction&,Fraction);D、Fraction&operator+=(Fraction&,Fraction);標(biāo)準(zhǔn)答案:C知識點解析:本題考查四種運算符作為非成員函數(shù)的重載的使用方法,根據(jù)重載規(guī)則,本題答案為C,C項正確原型為:Fractionoperator=(Fraction&)。15、有如下類聲明:classHow{intk;public:friendvoidshow();};則類How所擁有的構(gòu)造函數(shù)的數(shù)量是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識點解析:類How的定義體中沒有定義任何構(gòu)造函數(shù),所以編譯器需要自動生成一個默認(rèn)構(gòu)造函數(shù)和復(fù)制構(gòu)造函數(shù),答案為B。16、設(shè)c1和c2是類MyClass的對象,若將前綴運算符"--"和運算符"/"作為類MyClass的友元函數(shù)重載,則表達(dá)式--c1/c2等價于A、operator/(c1.operator--(),c2)B、operator/(operator--(c1),c2)C、c1.operator--().operator/(c2)D、c2.operator/(operator--(c1))標(biāo)準(zhǔn)答案:B知識點解析:友元函數(shù)不是類的成員函數(shù),所以友元函數(shù)的調(diào)用不需要使用類對象;另外運算符重載不改變運算符的優(yōu)先級,所以先執(zhí)行"--"運算符重載函數(shù),之后執(zhí)行"/"運算符重載函數(shù),選項A、C、D錯誤,B正確,答案為B。17、有如下類聲明:classWhy{intn;public:doubled;protected:longl;floatf;private:charc;};類Why的保護(hù)數(shù)據(jù)成員和私有數(shù)據(jù)成員的數(shù)量分別是A、1和1B、1和2C、2和1D、2和2標(biāo)準(zhǔn)答案:D知識點解析:C++中,使用class關(guān)鍵字定義的類,默認(rèn)的成員訪問級別是私有的,所以類Why中,保護(hù)成員有:l、f;私有成員有:n、c。答案為D。18、下列情況中,不會調(diào)用拷貝構(gòu)造函數(shù)的是()。A、用一個對象去初始化同一類的另一個新對象時B、將類的一個對象賦值給該類的另一個對象時C、函數(shù)的形參是類的對象,調(diào)用函數(shù)進(jìn)行形參和實參結(jié)合時D、函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時標(biāo)準(zhǔn)答案:B知識點解析:本題考查復(fù)制構(gòu)造函數(shù),在以下3種情況下使用:①程序中需要新建立一個對象,并用另一個對象對它初始化;②函數(shù)的參數(shù)為類的對象;③函數(shù)的返回值是類的對象。其中B選項是由賦值運算符重載實現(xiàn)的。19、下列函數(shù)模板的定義中,合法的是()。A、templateTabs(Tx){returnx<0?-x:x;}B、templateclassTabs(Tx){returnx<0?-x:x;}C、templateTabs(Tx){returnx<0?-x:x;}D、templateTabs(Tx){returnx<0?-x:x;}標(biāo)準(zhǔn)答案:A知識點解析:本題考查模板函數(shù)的基本概念,根據(jù)模板函數(shù)的定義,所以答案為A。20、下列語句中錯誤的是()。A、constinta;B、constinta=10;C、constint*point=0;D、constint*point=newint(10);標(biāo)準(zhǔn)答案:A知識點解析:const是一個C++語言的關(guān)鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量只能被讀,必須初始化。A選項沒有初始化,B、C、D選項都正確。21、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}voidPrint(){cout<<’/’<<’N’<A、/N41/C54B、/N41/S54C、/C41/N54D、/C41/C54標(biāo)準(zhǔn)答案:A知識點解析:本題考查構(gòu)造函數(shù)相關(guān)知識,本題中定義一個對象room1,執(zhí)行room1.Print時執(zhí)行構(gòu)造函數(shù)給size賦值為41,然后執(zhí)行voidPrint(){cout<<’/’<<’N’<22、負(fù)責(zé)數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是()。A、數(shù)據(jù)定義語言B、數(shù)據(jù)管理語言C、數(shù)據(jù)操縱語言D、數(shù)據(jù)控制語言標(biāo)準(zhǔn)答案:C知識點解析:數(shù)據(jù)定義語言:負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語言:負(fù)責(zé)數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作;數(shù)據(jù)控制語言:負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復(fù)等功能。23、若MyClass是一個類名,且若MyClass是一個類名,且有如下語句序列MyClassc1,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面的語句序列所定義的類對象的個數(shù)是語句序列A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識點解析:本題考查對象的定義,定義一個類對象就需要占用空間,其中c1、c3都占用了空間,c2、c4為指針只占一個指針空間,所以B選項正確。24、關(guān)于C++流,下面的表述中正確的是A、利用C++流能夠借助于流對象進(jìn)行輸入輸出B、利用C++流只能進(jìn)行格式化輸入輸出C、利用C++流只能借助于cin和cout進(jìn)行輸入輸出D、利用C++流只能使用運算符>>和<<進(jìn)行輸入輸出標(biāo)準(zhǔn)答案:A知識點解析:輸入輸出流出了cin和cout還有cerr、clog等,所以CD選項錯誤,C++流不只是進(jìn)行格式化輸入輸出,所以B選項錯誤,A選項正確。25、有如下程序:#includeusingnamespacestd;intmain(){intx=4;do{x--;cout<A、輸出31B、輸出20C、輸出3210D、死循環(huán)標(biāo)準(zhǔn)答案:A知識點解析:本題考查dowhile循環(huán),執(zhí)行第一次時,輸出x為3,執(zhí)行第二次的時候為1,所以輸出結(jié)果為31,A選項正確。26、有如下程序:#include#includeusingnamespacestd;classMyBag{public:MyBag(stringbr,stringcr):brand(br),color(cr){cout<<++count;}~MyBag(){--count;}staticintGetCount(){returncount;}private:stringbrand,color;staticintcount;};intMyBag::count=0;intmain(){MyBagone("CityLife","Gray"),two("Micky","Red");MyBag*ptr=newMyBag("Coach","Black");deleteptr;cout<A、2B、3C、1232D、1233標(biāo)準(zhǔn)答案:C知識點解析:本題考查靜態(tài)數(shù)據(jù)成員和構(gòu)造函數(shù)和析構(gòu)函數(shù),題目中定義了三個對象,那么一次輸出count值,即123,銷毀ptr后,執(zhí)行析構(gòu)函數(shù),count減1,count為2,所以選項C正確。27、在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)模型包括概念模型、邏輯模型和A、物理模型B、空間模型C、時間模型D、數(shù)據(jù)模型標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)模型按照不同的應(yīng)用層次分為3種類型:概念數(shù)據(jù)模型、邏輯數(shù)據(jù)模型、物理數(shù)據(jù)模型,故A選項正確。28、下列有關(guān)虛函數(shù)的表述中正確的是A、對于派生類中定義的成員函數(shù),即使沒有加virtual修飾,也有可能是虛函數(shù)B、只有虛函數(shù)才允許在派生類進(jìn)行重定義C、對虛函數(shù)的任何調(diào)用都稱為多態(tài)調(diào)用D、構(gòu)造函數(shù)和析構(gòu)函數(shù)也可以聲明為虛函數(shù)標(biāo)準(zhǔn)答案:A知識點解析:一旦函數(shù)在基類中聲明為虛函數(shù),它就一直是虛函數(shù),派生類無法改變該函數(shù)為虛函數(shù)這一事實,所以派生類從基類中繼承來的虛函數(shù),不加virtual修飾,也是虛函數(shù),選項A正確;普通成員函數(shù)在派生類中也可以重新定義,重新定義后的成員函數(shù)會屏蔽對基類同名函數(shù)的直接訪問,選項B錯誤;多態(tài)調(diào)用只能是通過基類對象的指針或引用調(diào)用虛函數(shù)來實現(xiàn),基類對象調(diào)用虛函數(shù)不是多態(tài)調(diào)用,選項C錯誤;構(gòu)造函數(shù)不能聲明為虛函數(shù),因為構(gòu)造函數(shù)是在對象完全構(gòu)造之前運行的,在構(gòu)造函數(shù)運行時,對象的動態(tài)類型還不完整,選項D錯誤;答案為A。29、某二叉樹共有845個結(jié)點,其中葉子結(jié)點有45個,則度為1的結(jié)點數(shù)為A、400B、754C、756D、不確定標(biāo)準(zhǔn)答案:C知識點解析:在樹結(jié)構(gòu)中,一個結(jié)點所擁有的后件個數(shù)稱為該結(jié)點的度,所有結(jié)點中最大的度稱為樹的度。對任何一棵二叉樹,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。二叉樹共有845個結(jié)點,度為0的結(jié)點有45個,度為1的結(jié)點數(shù)為n1,度為2的結(jié)點數(shù)為n2,則845=45+n1+n2,且45=n2+1,則n1=756,C選項正確。30、有如下類定義:classMyClass{public:MyClass(constchar*c=NULL);~MyClass();______________//運算符=的聲明private:char*p;};若要使語句序列MyClasss1("test"),s2;s2=s1;能夠正常運行,橫線處的語句應(yīng)為A、friendMyClass&operator=(constMyClass&);B、MyClass&operator=(constMyClass&);C、MyClass&operator=(MyClass,constMyClass&);D、friendMyClass&operator=(MyClass,constMyClass&);標(biāo)準(zhǔn)答案:B知識點解析:首先賦值運算符只能重載為成員函數(shù),以便編譯器可以知道是否需要合成一個,選項A、D錯誤;另外賦值運算符是二元運算符,左操作數(shù)是調(diào)用該賦值運算符的類對象,所以賦值運算符的重載函數(shù)的形參只需要右操作數(shù),選項C中有兩個形參,錯誤;答案為B。31、模板對類型的參數(shù)化提供了很好的支持,因此()。A、類模板的主要作用是生成抽象類B、類模板實例化時,編譯器將根據(jù)給出的模板實參生成一個類C、在類模板中的數(shù)據(jù)成員都具有同樣類型D、類模板中的成員函數(shù)都沒有返回值標(biāo)準(zhǔn)答案:B知識點解析:本題考查類模板的基本概念。類模板的定義和聲明都以關(guān)鍵字template開頭。關(guān)鍵字后面是一個用逗號分隔的模板參數(shù)表,用尖括號"<>"括起來,這個表被稱為類模板的模板參數(shù)表。類模板是類的抽象,類是類模板的實例。類模板使類中的一些數(shù)據(jù)成員和成員函數(shù)的參數(shù)或返回值可以取任意的數(shù)據(jù)類型。所以B選項正確。32、下列有關(guān)函數(shù)重載的敘述中,錯誤的是()。A、函數(shù)重載就是用相同的函數(shù)名定義多個函數(shù)B、重載函數(shù)的參數(shù)列表必須不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)可以帶有默認(rèn)值標(biāo)準(zhǔn)答案:C知識點解析:所謂函數(shù)重載是指同一個函數(shù)名可以對應(yīng)著多個函數(shù)的實現(xiàn)。每種實現(xiàn)對應(yīng)著一個函數(shù)體,這些函數(shù)的名字相同,但是函數(shù)參數(shù)的類型不同,還允許參數(shù)的個數(shù)不同,但不能只有函數(shù)的返回值類型不同而參數(shù)的個數(shù)和類型相同的重載。所以本題答案為C。33、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0){cout<A、0B、1C、01D、001標(biāo)準(zhǔn)答案:D知識點解析:本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個派生類的對象時,先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù),對象釋放時,先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。所以本題中定義了一個對象d,先執(zhí)行基類的構(gòu)造函數(shù)輸出0,因為派生類中的私有數(shù)據(jù)成員為Base,所以還會執(zhí)行一次基類的構(gòu)造函數(shù)輸出0,最后執(zhí)行派生類的構(gòu)造函數(shù)輸出1,所以本題答案為D。34、下列選項中屬于面向?qū)ο笤O(shè)計方法主要特征的是()。A、繼承B、自頂向下C、模塊化D、逐步求精標(biāo)準(zhǔn)答案:A知識點解析:面向?qū)ο蠡痉椒ǖ幕靖拍钣袑ο蟆㈩惡蛯嵗?、消息、繼承與多態(tài)性,所以選擇A)。35、有如下程序:#includeusingnamespacestd;classBase{public:voidfun(){cout<<"Base::fun"<A、Base.fun();B、Base->fun();C、Base::fun();D、fun();標(biāo)準(zhǔn)答案:C知識點解析:本題考查派生類對基類成員的訪問屬性,派生類公用繼承基類,所以派生類可以直接使用基類的公用成員,題目中輸出了Base::fun,所以可以推斷派生類一定是調(diào)用了基類的fun函數(shù),只有C選項正確調(diào)用了基類的fun函數(shù),所以C選項正確。36、軟件需求規(guī)格說明書的作用不包括A、軟件驗收的依據(jù)B、用戶與開發(fā)人員對軟件要做什么的共同理解C、軟件設(shè)計的依據(jù)D、軟件可行性研究的依據(jù)標(biāo)準(zhǔn)答案:D知識點解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)的重要文檔之一。軟件需求規(guī)格說明書有以下幾個方面的作用。①便于用戶、開發(fā)人員進(jìn)行理解和交流,B正確;②反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù),C正確;③作為確認(rèn)測試和驗收的依據(jù),A正確。37、在下列關(guān)鍵字中,不能用來表示繼承方式的是A、privateB、publicC、staticD、protected標(biāo)準(zhǔn)答案:C知識點解析:本題考查派生類定義時使用的關(guān)鍵字,三種繼承方式分別為private、public、protected,而C選項為靜態(tài)聲明關(guān)鍵字,故選擇C。38、下面描述中不屬于軟件需求分析階段任務(wù)的是A、撰寫軟件需求規(guī)格說明書B、軟件的總體結(jié)構(gòu)設(shè)計C、軟件的需求分析D、軟件的需求評審標(biāo)準(zhǔn)答案:B知識點解析:需求分析階段的工作可以分為4個方面:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評審。故B選項正確。二、基本操作題(本題共1題,每題1.0分,共1分。)39、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程pmj1,該工程中包含程序文件mmn.cpp,其中有類Foo和主函數(shù)main的定義。程序中位于每個“//ERROR****found****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)該是:X=aY=42注意:只修改每個“//ERROR**********found**********”下的那一行,不要改動程序中的其他內(nèi)容。#includeusingnamespacestd;classFoo{public:Foo(charx){x_=x;)chargetx()const{returnx_;)public:staticinty_;private:charx_;};//ERROR*********found*********intFoo.y_=42;intmain(intargc,char*argv[]){//ERROR*********found*********Foof;//ERROR*********found*********cout;<<"X="<標(biāo)準(zhǔn)答案:(1)intFoo::y_=42;(2)F00f(’a’);(3)cout<<"X="<知識點解析:(1)主要考查考生對靜態(tài)成員的掌握,因為靜態(tài)整型變量y_是Foo類的公有成員,所以給y_賦值時要加上“Foo::”,即intFoo::y_=42;。(2)主要考查考生對構(gòu)造函數(shù)的掌握,題目要求程序輸出:X=aY=42可以知道,在給Foo類的f聲明時要同時初始化為字符a,即語句Foof(’a’);。(3)主要考查考生對成員函數(shù)的掌握,因為x是類Foo的私有成員,所以不能在main函數(shù)中直接調(diào)用,要通過公有成員函數(shù)getX()調(diào)用。三、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)40、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,其中定義了Component類、Composite類和Leaf類。Component是抽象基類,Composite和Leaf是Component的公有派生類。請在橫線處填寫適當(dāng)?shù)拇a并刪除橫線,以實現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:LeafNode注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。#includeusingnamespacestd;classComponent{public://聲明純虛函數(shù)print()//**********found**********________};classComposite:publicComponent{public://**********found**********voidsetChild(________){mchild=child;}virtualvoidprint()const{m—child->print();}private:Component*m—child;};classLeaf:publicComponent{public:virtualvoidprint()const{//**********found**********}};intmain(){Leafnode;Compositecomp;comp.setChild(&node);Component*p=&comp;P->print();return0;}標(biāo)準(zhǔn)答案:(1)virtualvoidprint()const=0;(2)Component*child(3)cout<<"LeafNode"<知識點解析:(1)主要考查考生對純虛函數(shù)的掌握,題目要求聲明純虛函數(shù)print()。在其派生類中print()函數(shù)的定義為virtualvoidprint()const,由此可知純虛函數(shù)為virtualvoidprint()const=0。(2)主要考查考生對成員函數(shù)的掌握,題目要求填寫函數(shù)voidsetChild的形參,由setChild的函數(shù)體可知形參為child,再看類的私有成員m_child的定義:Component*m_child;。由此可知形參為:Component*child。(3)主要考查考生對純虛函數(shù)的掌握,先看主函數(shù)的程序:Leafnode;Compositecomp;comp.setChild(&node);Component*p=&comp;p->print();第一條和第二條語句都是定義語句,第三條語句調(diào)用函數(shù)setChild,由setChild函數(shù)的定義可知,comp中的m_child等于node,第四條語句定義了個指針p指向comp的地址,也就是node,最后一條語句通過指針p調(diào)用函數(shù)print,也就是調(diào)用類Leaf的函數(shù)print,因為題目要求輸出:LeafNode,因此在這里添加語句:eout<<"LeafNode"<四、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)41、請使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件proj3,此工程中包含一個源程序文件proj3.cpp,補充編制C++程序proj3.cpp,其功能是讀取文本文件in.dat中的全部內(nèi)容,將文本存放到doc類的對象myDoc中。然后將myDoc中的字符序列反轉(zhuǎn),并輸出到文件out.dat中。文件in.dat的長度不大于1000字節(jié)。要求:補充編制的內(nèi)容寫在“//**********333**********”與“//**********66666**********”兩行之間。實現(xiàn)將myDoc中的字符序列反轉(zhuǎn),并將反轉(zhuǎn)后的序列在屏幕上輸出。不得修改程序的其他部分。注意:程序最后已將結(jié)果輸出到文件out.dat中,輸出函數(shù)writeToFile已經(jīng)給出并且調(diào)用。//proj3.cpp#include#include#includeusingnamespacestd;clasSdoc{private:char*str;//文本字符串首地址intlength;//文本字符個數(shù)public://構(gòu)造函數(shù),讀取文件內(nèi)容,用于初始化新對象,filename是文件名字符串首地址doc(char*filename);voidreverse();//將字符序列反轉(zhuǎn)~doc();voidwriteToFile(char*filename);};doc::doc(char*filename){ifstreammyFile(filename);intlen=1001,tmp;str=newchar[len];length=0;while((tmp=myFile.get())!=EOF){str[length++]=tmp;}str[length]=’\0’;myFile.close();}voiddoc::reverse(){//將數(shù)組str中的length個字符中的第一個字符與最后一個字符交換,第二個字符與倒數(shù)第二個//字符交換……//*************333***********//*************666***********}doc::~doc(){delete[]str;}voiddoc::writeToFile(char*filename){ofstreamoutFile(filename);outFile<標(biāo)準(zhǔn)答案:inti,j;//定義兩個整數(shù)臨時變量i.j.for(i=0,j=length一1;i知識點解析:題目要求將myDoc中的字符序列反轉(zhuǎn),在main函數(shù)中我們看到myDoc是doc類,根據(jù)doc類的定義可以知道它是把讀取文件的字符串存到str動態(tài)數(shù)組中。reverse函數(shù)實現(xiàn)將數(shù)組str中的length個字符中的第一個字符與最后一個字符交換,第二個字符與倒數(shù)第二個字符交換,依次類推。使用變量i和j,分別表示第一個字符和最后一個字符的下標(biāo),定義temp作為中間變量進(jìn)行交換。國家二級(C++)機(jī)試模擬試卷第2套一、選擇題(本題共37題,每題1.0分,共37分。)1、下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是()。A、循環(huán)隊列B、帶鏈隊列C、二叉樹D、帶鏈棧標(biāo)準(zhǔn)答案:C知識點解析:樹是簡單的非線性結(jié)構(gòu),所以二叉樹作為樹的一種也是一種非線性結(jié)構(gòu)。2、下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進(jìn)后出”原則存取數(shù)據(jù)的是()。A、循環(huán)隊列B、棧C、隊列D、二叉樹標(biāo)準(zhǔn)答案:B知識點解析:棧是按先進(jìn)后出的原則組織數(shù)據(jù)的。隊列是先進(jìn)先出的原則組織數(shù)據(jù)。3、對于循環(huán)隊列,下列敘述中正確的是()。A、隊頭指針是固定不變的B、隊頭指針一定大于隊尾指針C、隊頭指針一定小于隊尾指針D、隊頭指針可以大于隊尾指針,也可以小于隊尾指針標(biāo)準(zhǔn)答案:D知識點解析:循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進(jìn)行變化。因為是循環(huán)利用的隊列結(jié)構(gòu)所以隊頭指針有時可能大于隊尾指針有時也可能小于隊尾指針。4、算法的空間復(fù)雜度是指()。A、算法在執(zhí)行過程中所需要的計算機(jī)存儲空間B、算法所處理的數(shù)據(jù)量C、算法程序中的語句或指令條數(shù)D、算法在執(zhí)行過程中所需要的臨時工作單元數(shù)標(biāo)準(zhǔn)答案:A知識點解析:算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以選擇A。5、軟件設(shè)計中劃分模塊的一個準(zhǔn)則是()。A、低內(nèi)聚低耦合B、高內(nèi)聚低耦合C、低內(nèi)聚高耦合D、高內(nèi)聚高耦合標(biāo)準(zhǔn)答案:B知識點解析:一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性.有利于提高模塊的獨立性。6、下列選項中不屬于結(jié)構(gòu)化程序設(shè)計原則的是()。A、可封裝B、自頂向下C、模塊化D、逐步求精標(biāo)準(zhǔn)答案:A知識點解析:結(jié)構(gòu)化程序設(shè)計的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A。7、軟件詳細(xì)設(shè)計產(chǎn)生的圖如下:該圖是()。A、N-S圖B、PAD圖C、程序流程圖D、E-R圖標(biāo)準(zhǔn)答案:C知識點解析:N-S圖提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細(xì)設(shè)計的圖形表示工具,所以B不對。E—R圖是數(shù)據(jù)庫中的用于表示E—R模型的圖示工具,所以D不對。根據(jù)圖中所示表示方法是進(jìn)行軟件詳細(xì)設(shè)計時使用的程序流程圖。8、數(shù)據(jù)庫管理系統(tǒng)是()。A、操作系統(tǒng)的一部分B、在操作系統(tǒng)支持下的系統(tǒng)軟件C、一種編譯系統(tǒng)D、一種操作系統(tǒng)標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。是一種在操作系統(tǒng)之上的系統(tǒng)軟件。9、有三個關(guān)系R,S和T如下:其中關(guān)系T由關(guān)系R和S通過某種操作得到,該操作為()。A、選擇B、投影C、交D、并標(biāo)準(zhǔn)答案:D知識點解析:并關(guān)系T中包含了關(guān)系R與S中的所有元組,所以進(jìn)行的是并的運算。10、下列符號中可以用做C++標(biāo)識符的是()。A、_radiusB、foo~barC、elseD、3room標(biāo)準(zhǔn)答案:A知識點解析:本題考查C++標(biāo)識符的命名規(guī)則,其規(guī)則有如下幾點:①所有標(biāo)識符必須由字母、數(shù)字或下畫線組成,且必須由字母或下畫線開頭;②所有標(biāo)識符不能使用C++已有的關(guān)鍵字;③大、小寫字母表示不同意義,即代表不同的標(biāo)識符。選項B包含了字符“一”,選項C是關(guān)鍵字,選項D不能以數(shù)字開頭。故答案為A。11、下列各組類型聲明符中,含義相同的一組是()。A、unsignedlongint和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int標(biāo)準(zhǔn)答案:B知識點解析:本題考查整型變量的類型,A、C選項中前者為無符號的,后者為有符號的,D選項中shortint為2個字節(jié),int為4個字節(jié)。12、必須用一對大括號括起來的程序段是()。A、switch語句中的case標(biāo)號語句B、if語句的分支C、循環(huán)語句的循環(huán)體D、函數(shù)的函數(shù)體標(biāo)準(zhǔn)答案:D知識點解析:本題考查C++基本控制結(jié)構(gòu),A、B、C三個選項中的大括號不是必須的,而D選項中的函數(shù)體必須使用大括號。13、語句int*p:&k;定義了指針p,與這個語句等效的語句序列是()。A、int*p;p=&k;B、int*p;p=k;C、int*p;*p=&k;D、int*p;*p=k;標(biāo)準(zhǔn)答案:A知識點解析:本題考查指針和地址,題目中定義了一個指向變量k的一個指針p,那么與題目中等效的表達(dá)式A選項,即先定義一個指向整型的指針,然后指向k的地址。14、執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是()。for(inti=50;i>l;i-=2)cout<<’*’;A、24B、25C、26D、50標(biāo)準(zhǔn)答案:B知識點解析:本題考查for循環(huán)語句,題目中每執(zhí)行完循環(huán)體后,i都會減2,那么只有50到2之間的偶數(shù)才能輸出“*”,所以總共輸出25次。15、下列關(guān)于運算符重載的敘述中,錯誤的是()。A、有的運算符可以作為非成員函數(shù)重載B、所有的運算符都可以通過重載而被賦予新的含義C、不得為重載的運算符函數(shù)的參數(shù)設(shè)置默認(rèn)值D、有的運算符只能作為成員函數(shù)重載標(biāo)準(zhǔn)答案:B知識點解析:重載運算符的規(guī)則如下:①C++不允許用戶自己定義新的運算符,只能對已有的C++運算符進(jìn)行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是C++的標(biāo)準(zhǔn)類型。所以答案為B。16、對C++編譯器區(qū)分重載函數(shù)無任何意義的信息是()。A、參數(shù)類型B、參數(shù)個數(shù)C、返回值類型D、常成員函數(shù)關(guān)鍵字const標(biāo)準(zhǔn)答案:C知識點解析:所謂函數(shù)重載是指同一個函數(shù)名可以對應(yīng)多個函數(shù)的實現(xiàn)。每種實現(xiàn)對應(yīng)一個函數(shù)體,這些函數(shù)的名字相同,其參數(shù)類型或個數(shù)不同,但不能出現(xiàn)函數(shù)返回值類型不同而參數(shù)類型和個數(shù)完全相同的重載。所以本題答案為C。17、運算符重載時不需要保持的性質(zhì)是()。A、操作數(shù)個數(shù)B、操作數(shù)類型C、優(yōu)先級D、結(jié)合性標(biāo)準(zhǔn)答案:B知識點解析:重載運算符的規(guī)則如下:①C++不允許用戶自己定義新的運算符,只能對已有的C++象d;執(zhí)行fun1會調(diào)用派生類的show函數(shù),因為show函數(shù)為虛函數(shù),而調(diào)用fun2、fun3仍然為基類的show函數(shù),所以本題答案為C。18、下列關(guān)于函數(shù)的描述中,錯誤的是()。A、函數(shù)可以沒有返回值B、函數(shù)可以沒有參數(shù)C、函數(shù)可以是一個類的成員D、函數(shù)不能被定義為模板標(biāo)準(zhǔn)答案:D知識點解析:本題考查函數(shù)的基礎(chǔ)知識,函數(shù)可以沒有返回值,沒有參數(shù),也可以是一個類的成員,函數(shù)可以定義為模板,即模板函數(shù)。19、關(guān)于函數(shù)重載,下列敘述中錯誤的是()。A、重載函數(shù)的函數(shù)名必須相同B、重載函數(shù)必須在參數(shù)個數(shù)或類型上有所不同C、重載函數(shù)的返回值類型必須相同D、重載函數(shù)的函數(shù)體可以有所不同標(biāo)準(zhǔn)答案:C知識點解析:所謂函數(shù)重載是指同一個函數(shù)名可以對應(yīng)多個函數(shù)的實現(xiàn)。每種實現(xiàn)對應(yīng)一個函數(shù)體,這些函數(shù)的名字相同,其參數(shù)類型或個數(shù)不同,但不能出現(xiàn)函數(shù)返回值類型不同而參數(shù)類型和個數(shù)完全相同的重載。所以本題答案為C。20、有如下函數(shù)定義:voidfunc(inta,int&b){a++;b++;}若執(zhí)行代碼段:intx=0,y=1;func(x,y);則變量x和y的值分別是()。A、0和1B、1和1C、0和2D、1和2標(biāo)準(zhǔn)答案:C知識點解析:函數(shù)參數(shù)的3種傳遞方式:①將變量名作為形參和實參,即傳值方式;②傳遞變量指針;③引用形參。本題中實參x為傳值方式,所以x的值不會改變;y為引用形參,所以會改變。故本題答案為C。21、對于一個類定義,下列敘述中錯誤的是()。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ù)和復(fù)制構(gòu)造函&數(shù),如果沒有定義構(gòu)造函數(shù),編譯器將生成一個缺省的&構(gòu)造函數(shù)和一個拷貝構(gòu)造函數(shù),如果已經(jīng)定義了構(gòu)造&函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會生成任何構(gòu)造函數(shù)。&如果沒有定義拷貝構(gòu)造函數(shù),編譯器將生成一個拷貝&構(gòu)造函數(shù)。22、有如下頭文件:intf1();staticintf2();classMA{pubtie:intf3();staticintf4();};在所描述的函數(shù)中,具有隱含的this指針的是()。A、f1B、f2C、f3D、f4標(biāo)準(zhǔn)答案:C知識點解析:只有類的非靜態(tài)成員函數(shù)才隱含&this指針,其作用域是類內(nèi)部,當(dāng)類的非靜態(tài)成員函數(shù)&中訪問類的非靜態(tài)成員時,編譯器會自動將對象本身&的地址作為一個隱含參數(shù)傳遞給函數(shù),而不必一定寫&上this。所以本題答案為C。23、如果派生類以protected方式繼承基類,則原基類的protected成員和public成員在派生類中的訪問屬性分別是()。A、public和publicB、public和protectedC、protected和publicD、protected和protected標(biāo)準(zhǔn)答案:D知識點解析:本題考查保護(hù)繼承中派生類對基類的訪問屬性,在受保護(hù)繼承中,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,其私有成員仍為基類私有,所以本題答案為D。24、下列有關(guān)繼承和派生的敘述中,正確的是()。A、派生類不能訪問基類的保護(hù)成員B、作為虛基類的類不能被實例化C、派生類應(yīng)當(dāng)向基類的構(gòu)造函數(shù)傳遞參數(shù)D、虛函數(shù)必須在派生類中重新實現(xiàn)標(biāo)準(zhǔn)答案:C知識點解析:派生類可以訪問基類的保護(hù)成員,而不能訪問基類的私有成員。作為虛基類的類可以被實例化。虛函數(shù)如果沒有派生類中重新實現(xiàn),那么仍然使用基類的成員函數(shù)。25、有如下類定義:classAA{inta:public:AA(intn=0):a(n){}};classBB:publicAA{public:BB(intn)_________};其中橫線處缺失的部分是()。A、:a(n){}B、:AA(n){}C、{a(n);}D、{a=n;}標(biāo)準(zhǔn)答案:B知識點解析:本題考查公用繼承對基類成員的&訪問屬性。公用繼承中,基類的公用成員和保護(hù)成員&在派生類中保持原有訪問屬性,其私有成員仍為基類&私有,本題中若要給派生類繼承下來基類的私有成員&賦值,那么只能調(diào)用基類的成員函數(shù)來對它賦值,所以&本題答案為B。26、有如下程序:#includeusingnamespaeestd;classCD{public:~CD(){cout<<’C’;}private:charname[80];};intmain(),{CDa,*b,a[2];return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、CCCCB、CCCC、CCD、C標(biāo)準(zhǔn)答案:B知識點解析:本題考查類的析構(gòu)函數(shù),題目中定義了類的一個對象a,對象指針*b,對象數(shù)組d[2],當(dāng)程序執(zhí)行完后,析構(gòu)函數(shù)執(zhí)行了3次,輸出“CCC”,對象指針不會執(zhí)行析構(gòu)函數(shù)。所以本題答案為B。27、有如下程序:#includeusingnamespaeestd;classMyClass{public:MyClass(){++count;}~MyClass(){--count;}statieintgetCount(){returncount;}private:staticintcount;};intMyClass::count=0;intmain(){MyClassobj;cout<A、121B、232C、221D、122標(biāo)準(zhǔn)答案:A知識點解析:本題考查靜態(tài)數(shù)據(jù)成員。靜態(tài)數(shù)&據(jù)成員在內(nèi)存中只占一份空間,靜態(tài)數(shù)據(jù)成員屬于類,&即使不定義對象,也會給靜態(tài)數(shù)據(jù)成員分配空間,可以&被引用。本題中先是定義了一個對象obj,執(zhí)行構(gòu)造函&數(shù)使得靜態(tài)數(shù)據(jù)成員count變?yōu)榱?,然后又定義了指&針對象,執(zhí)行構(gòu)造函數(shù)后,count變?yōu)榱?,釋放指針后,&執(zhí)行析構(gòu)函數(shù),使得count變?yōu)榱?。所以本題答案&為A。28、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(intx):val(x){}voidPrint()eonst{cout<<"const:val="<標(biāo)記報錯收藏查看答案標(biāo)準(zhǔn)答案:B知識點解析:本題考查帶參數(shù)的構(gòu)造函數(shù)。本&題中定義了一個對象obj,那么執(zhí)行其構(gòu)造函數(shù),初始&化p1,p2的順序是由聲明這兩個成員的順序決定的,&而不是由參數(shù)化列表順序決定,所以本題中,會先執(zhí)行&p1,輸出2,然后執(zhí)行p2輸出1,然后輸出3,最后一次&輸出312。所以本題答案為B。30、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0){cout<A、0B、1C、OlD、001標(biāo)準(zhǔn)答案:D知識點解析:本題考查派生類的構(gòu)造函數(shù)和析&構(gòu)函數(shù),在定義一個派生類的對象時,先調(diào)用基類的構(gòu)&造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù),對象釋放時,&先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。&所以本題中定義了一個對象d,先執(zhí)行基類的構(gòu)造函數(shù)&輸出0,因為派生類中的私有數(shù)據(jù)成員為Base,所以還&會執(zhí)行一次基類的構(gòu)造函數(shù)輸出0,最后執(zhí)行派生類的&構(gòu)造函數(shù)輸出1,所以本題答案為D。31、下列代碼段中聲明了3個類:classPerson{};classStudent:publicPerson{};classUndergraduate:Student{};下列關(guān)于這些類之間關(guān)系的描述中,錯誤的是()。A、類Person是類Undergraduate的基類B、類undergraduate從類Student公有繼承C、類Student是類Person的派生類D、類Undergraduate是類Person的派生類標(biāo)準(zhǔn)答案:B知識點解析:本題考查基類和派生類的邏輯關(guān)系,屬于基礎(chǔ)知識,如果沒有指明哪種繼承方式,那么默認(rèn)為私有繼承,所以B選項錯誤。32、有如下程序:#includeusingnamespacestd;classBase{public:voidoutput(){cout<<1;}virtualvoidPrint(){cout<<’B’;}};classDerived:publicBase{public:voidoutput(){cout<<2;}voidPrint(){cout<<’D’;}};intmain(){Base*ptr=newDerived:ptr->output();ptr->Print();deleteptr;return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、1BB、1DC、2BD、2D標(biāo)準(zhǔn)答案:B知識點解析:在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù),本題中定義了一個指向派生類對象的基類指針ptr,執(zhí)行ptr->output后,會執(zhí)行基類的output函數(shù),輸出1,由于Print是虛函數(shù),所以ptr->Print()會執(zhí)行派生類的Print,即輸出D,所以本題答案為B。33、有如下程序:#includeusingnamespacestd;classB{public:virtualvoidshow(){cout<<"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);deletep;return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、BBBB、BBDC、DBBD、DBD標(biāo)準(zhǔn)答案:C知識點解析:在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù),本題中定義類B的對象b、對象指針*p=newD以及類D的對象d;執(zhí)行funl會調(diào)用派生類的show函數(shù),因為show函數(shù)為虛函數(shù),而調(diào)用fun2、fun3仍然為基類的show函數(shù),所以本題答案為C。34、C++中的模板包括()。A、對象模板和函數(shù)模板B、對象模板和類模板C、函數(shù)模板和類模板D、變量模板和對象模板標(biāo)準(zhǔn)答案:C知識點解析:本題考查函數(shù)模板和類模板,所以答案為C。35、下列關(guān)于類模板的模板參數(shù)的敘述中,錯誤的是()。A、模板參數(shù)可以作為數(shù)據(jù)成員的類型B、模板參數(shù)可以作為成員函數(shù)的返回類型C、模板參數(shù)可以作為成員函數(shù)的參數(shù)類型D、模板參數(shù)不能作為成員函數(shù)的局部變量的類型標(biāo)準(zhǔn)答案:D知識點解析:本題考查類模板的概念和定義,模板參數(shù)可以作為成員函數(shù)的局部變量的類型。36、下列關(guān)于C++預(yù)定義流對象的敘述中,正確的是()。A、cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對象B、cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流類C、cout是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對象D、cout是C++預(yù)定義的標(biāo)準(zhǔn)輸入流類標(biāo)準(zhǔn)答案:A知識點解析:cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對象,cout是C++預(yù)定義的標(biāo)準(zhǔn)輸出流對象。37、有如下語句序列:charstr[10];cin>>str;當(dāng)從鍵盤輸入“Ilovethisgame”時,str中的字符串是()。A、IlovethisgameB、IlovethiC、IloveD、I標(biāo)準(zhǔn)答案:D知識點解析:cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對象,cin用來接收字符串時,遇“空格”、“TAB”、“回車”時都會結(jié)束。所以本題答案為D。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)38、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,其中有矩陣基類MatrixBase、矩陣類Matrix和單位陣UnitMatrix的定義,還有main函數(shù)的定義。請在橫線處填寫適當(dāng)?shù)拇a并刪除橫線,以實現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:l23452345634567100000010000001000000100000010000001注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//*****found****”。#includeusingnamespacestd;//矩陣基礎(chǔ)類,一個抽象類classMatrixBase{introws,cols;public:MatrixBase(introws,intcols):rows(rows),cols(cols){}intgetRows()const{returnrows;}//矩陣行數(shù)intgetCols()const{returncols;}//矩陣列數(shù)virtualdoublegetElement(intr,intc)const=0;//取第i個元素的值voidshow()const{//分行顯示矩陣中所有元素for(inti=0;ishow();deletem;cout<show();deletem;return0;}標(biāo)準(zhǔn)答案:(1)getElement(i,j)(2)MatrixBase(rows,cols)(3)newdouble[rows*cols](4)r==c知識點解析:(1)主要考查考生對純虛函數(shù)的掌握,函數(shù)功能是分行顯示矩陣中所有元素。因此在這里要輸出行為i、列為j的元素,使用純虛函數(shù)getElement(i,j)實現(xiàn),輸出語句為cout<三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)39、請使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件proj3,此工程中包含一個源程序文件proj3.cpp,補充編制C++程序proj3.cpp,其功能是讀取文本文件in.dat中的全部內(nèi)容,將文本存放到doc類的對象myDoc中。然后將myDoc中的字符序列反轉(zhuǎn),并輸出到文件out.dat中。文件in.dat的長度不大于1000字節(jié)。要求:補充編制的內(nèi)容寫在“//********333********”與“//********66666********”兩行之間。實現(xiàn)將myDoc中的字符序列反轉(zhuǎn),并將反轉(zhuǎn)后的序列在屏幕上輸出。不得修改程序的其他部分。注意:程序最后已將結(jié)果輸出到文件out.dat中,輸出函數(shù)writeToFile已經(jīng)給出并且調(diào)用。//proj3.cpp#inchde#include#includeusingnamespacestd;classdoc{private:char*str;//文本字符串首地址intlength;//文本字符個數(shù)public://構(gòu)造函數(shù),讀取文件內(nèi)容,用于初始化新對象,filename是文件名字符串首地址doc(char*filename);voidreverse();//將字符序列反轉(zhuǎn)~doc();voidwriteToFile(char*filename);};doe::doe(char*filename){ifstreammyFile(filename);intlen=1001,tmp;str=newchar[len];length=0;while((tmp=myFile.get())!=EOF){str[length++]=tmp;}str[length]=’\0’;myFile.close();}voiddoe::reverse(){//將數(shù)組str中的length個字符中的第一個字符與最后一個字符交換,第二個字符與倒數(shù)第二個//字符交換……//***********333***********//***********666***********}doc::~doc(){delete[]str;}voiddoc::writeToFile(char*filename){ofstreamoutFile(filename);outFile<標(biāo)準(zhǔn)答案:inti,j;//定義兩個整數(shù)臨時變量i.j.for(i=0,j=length-1;i知識點解析:題目要求將myDoc中的字符序列反轉(zhuǎn),在main函數(shù)中我們看到myDoc是doc類,根據(jù)doc類的定義可以知道它是把讀取文件的字符串存到str動態(tài)數(shù)組中。reverse函數(shù)實現(xiàn)將數(shù)組str中的length個字符中的第一個字符與最后一個字符交換,第二個字符與倒數(shù)第二個字符交換,依次類推。使用變量i和j,分別表示第一個字符和最后一個字符的下標(biāo),定義temp作為中間變量進(jìn)行交換。國家二級(C++)機(jī)試模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是()。A、低內(nèi)聚低耦合B、高內(nèi)聚低耦合C、低內(nèi)聚高耦合D、高內(nèi)聚高耦合標(biāo)準(zhǔn)答案:B知識點解析:軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是高內(nèi)聚低偶合、模塊大小規(guī)模適當(dāng)、模塊的依賴關(guān)系適當(dāng)?shù)?。模塊的劃分應(yīng)遵循一定的要求,以保證模塊劃分合理,并進(jìn)一步保證以此為依據(jù)開發(fā)出的軟件系統(tǒng)可靠性強(qiáng),易于理解和維護(hù)。模塊之間的耦合應(yīng)盡可能的低,模塊的內(nèi)聚度應(yīng)盡可能的高。2、通過運算符重載,可以改變運算符原有的()。A、操作數(shù)類型B、操作數(shù)個數(shù)C、優(yōu)先級D、結(jié)合性標(biāo)準(zhǔn)答案:A知識點解析:重載運算符的規(guī)則如下:①C++不允許用戶自己定義新的運算符,只能對已有的C++運算符進(jìn)行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是C++的標(biāo)準(zhǔn)類型。故本題答案為A。3、有如下程序:#includeusingnamespacestd;classPoint{public:staticintnumber;public:Point(){number++;}~Point(){number--;}};intPoint::number=0;intmain(){Point*ptr;PointA,B;{Point*ptr_point=newPoint[3];ptr=ptr_point;}PointC;cout<A、3B、4C、6D、7標(biāo)準(zhǔn)答案:C知識點解析:本題考查默認(rèn)構(gòu)造函數(shù),題目中定義一個對象A、B以及對象數(shù)組Point[3],又定義了對象C,共執(zhí)行6次構(gòu)造函數(shù),number變?yōu)榱?,所以本題答案為C。4、軟件生命周期是指()。A、軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用退役的過程B、軟件從需求分析、設(shè)計、實現(xiàn)到測試完成的過程C、軟件的開發(fā)過程D、軟件的運行維護(hù)過程標(biāo)準(zhǔn)答案:A知識點解析:通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。5、在為一個類重載下列運算符時,只能作為該類成員函數(shù)重載的運算符是A、+B、()C、<<D、++標(biāo)準(zhǔn)答案:B知識點解析:本題考查重載運算符,C++規(guī)定有的運算符(如賦值運算符、下標(biāo)運算符、函數(shù)調(diào)用運算符)必須定義為類的成員函數(shù)。所以本題選B。6、有如下類定義:classPoint{public:Point(intxx=0,intyy=0):x(xx),y(yy){}private:intx,y;};classCircle:publicPoint{public:Circle(intr):radius(r){}private:intradius;};派生類Circle中數(shù)據(jù)成員的個數(shù)為A、1B、2C、3D、5標(biāo)準(zhǔn)答案:C知識點解析:本題考查如何定義派生類以及派生類對基類成員的訪問,聲明派生類的一般形式為:class派生類名:[繼承方式]基類名題目中公用繼承,所以也繼承基類的數(shù)據(jù)成員,所以總共有3個數(shù)據(jù)成員,所以C選項正確。7、數(shù)據(jù)字典(DD)所定義的對象都包含于A、數(shù)據(jù)流圖(DFD圖)B、程序流程圖C、軟件結(jié)構(gòu)圖D、方框圖標(biāo)準(zhǔn)答案:A知識點解析:在數(shù)據(jù)流圖中,對所有元素都進(jìn)行了命名,所有名字的定義集中起來就構(gòu)成了數(shù)據(jù)字典。因此選A,而B,C,D都不符合。8、將運算符*重載為類成員函數(shù)時,其參數(shù)表中有且僅有一個參數(shù),說明該運算符是A、無操作數(shù)的運算符B、無操作數(shù)的運算符C、二元運算符D、三元運算符標(biāo)準(zhǔn)答案:C知識點解析:本題考查運算符重載,題目中將*重載為類成員函數(shù)時,如果是一元運算符,其參數(shù)就是默認(rèn)的this,而如果是二元運算符,其參數(shù)表中有且僅有一個參數(shù),所以該運算符是二元運算符。9、有如下程序:#includeusingnamespacestd;classAppliance{public:Appliance(){}~Appliance(){cout<<’A’;}};classTV:publicAppliance{public:TV(ints=41):size(s){}~TV(){cout<<’T’<A、T41B、T41AC、T41T41D、T41AT41A標(biāo)準(zhǔn)答案:B知識點解析:執(zhí)行派生類構(gòu)造函數(shù)的順序是:1、調(diào)用基類構(gòu)造函數(shù),2、調(diào)用子對象構(gòu)造函數(shù),3、再執(zhí)行派生類析構(gòu)函數(shù),4、執(zhí)行基類的析構(gòu)函數(shù),所以本題中定義room1時,程序結(jié)束時先調(diào)用派生類析構(gòu)函數(shù)輸出T41,然后執(zhí)行基類的析構(gòu)函數(shù)輸出A,而定義對象指針,并不會調(diào)用構(gòu)造函數(shù),所以什么也不輸出,所以結(jié)果為T41A,,B選項正確。10、設(shè)有表示學(xué)生選課的三張表,學(xué)生S(學(xué)號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學(xué)號,課號,成績),則表SC的關(guān)鍵字(鍵或碼)為()。A、課號,成績B、學(xué)號,成績C、學(xué)號,課號D、學(xué)號,姓名,成績標(biāo)準(zhǔn)答案:C知識點解析:學(xué)號是學(xué)生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個表能夠直接聯(lián)系且能唯一定義的學(xué)號和課號,所以選擇C)。11、下列關(guān)于內(nèi)聯(lián)函數(shù)的敘述中,錯誤的是A、內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前B、內(nèi)聯(lián)函數(shù)主要解決程序的運行效率問題C、類體中定義的函數(shù)都是內(nèi)聯(lián)函數(shù)D、內(nèi)聯(lián)函數(shù)不能有參數(shù)標(biāo)準(zhǔn)答案:D知識點解析:內(nèi)聯(lián)函數(shù)的函數(shù)定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前;內(nèi)聯(lián)函數(shù)可以避免函數(shù)頻繁調(diào)用時的開銷,提高程序運行效率;在類定義體內(nèi)部定義的成員函數(shù),編譯器都將其視為內(nèi)聯(lián)函數(shù);A、B、C正確;內(nèi)聯(lián)函數(shù)也可以有參數(shù),D錯誤,答案為D。12、有如下的類聲明:#includeusingnamespacestd;classAA{public:virtualvoiddisp(){cout<<’A’;}};classBB:publicAA{public:voiddisp(){cout<<’B’;}};classCC:publicBB{public:virtualvoiddisp(){cout<<’C’;}};voidplot(AAa){a.disp();}intmain(){BBbb;CCcc;BB&rb=cc;plot(bb);cc.disp();rb.disp();return0;}運行這個程序的輸出是A、ACCB、ACBC、BCCD、BCB標(biāo)準(zhǔn)答案:A知識點解析:程序定義了類AA,成員函數(shù)disp是虛函數(shù);類BB公有繼承AA,重新定義了函數(shù)disp,由虛函數(shù)的性質(zhì)可知,即使BB中未使用virtual修飾disp,函數(shù)disp仍然是虛函數(shù);類CC公有繼承了BB,同樣重新定義了虛函數(shù)disp;main函數(shù)中定義了BB類對象bb,CC類對象cc,BB類引用rb,rb被初始化指向cc;然后調(diào)用plot函數(shù),由于plot函數(shù)的形參是AA類對象a,不滿足多態(tài)性中調(diào)用者必須要是引用或者指針類型的條件,所以無論實參是bb或cc,a.disp()調(diào)用的都是AA類中的函數(shù)disp,輸出"A";cc.disp()顯然調(diào)用的是類CC中的函數(shù),輸出"C";rb.disp(),由于rb是引用,指向的是類CC對象cc,所以這里由多態(tài)性可知調(diào)用的是CC類中的disp函數(shù),輸出"CC";程序輸出結(jié)果為:"ACC";答案為A。13、有如下程序段:inti=100;while(inti=10){cout<<’*’;i--;}運行時輸出"*"的個數(shù)是A、0B、100C、10D、無窮標(biāo)準(zhǔn)答案:D知識點解析:首先,程序定義了局部變量i并初始化為100,在while循環(huán)中定義了同名局部變量i并初始化為10,由變量的作用域可知while循環(huán)中的i屏蔽了while語句前的局部變量i,所以while循環(huán)體中的i初值為10;其次,由于while循環(huán)的循環(huán)條件為inti=10,每次循環(huán)都是重新定義并初始化i,條件始終為真,所以while循環(huán)將會無限執(zhí)行下去,輸出無窮個"*"。答案為D。14、有如下類聲明:classWhat{intn;public:doubled;private:charc;};類What的公有數(shù)據(jù)成員和私有數(shù)據(jù)成員的數(shù)量分別是A、1和1B、1和2C、2和1D、2和2標(biāo)準(zhǔn)答案:B知識點解析:class關(guān)鍵字定義的類,成員默認(rèn)的訪問級別是私有的,所以類What中公有成員有d,私有成員有n,c;答案為B。15、有如下類定義:classBase{public:inta;protected:intb;private:intc;};classDerived:publicBase{protected:intd;};若obj是類Derived的對象,以下語句編譯正確的是A、obj.a;B、obj.b;C、obj.c;D、obj.d;標(biāo)準(zhǔn)答案:A知識點解析:類Derived以public方式繼承Base,所以a在Derived中是public成員,b在Derived中是protected成員,c對Derived不可見;所以對類Derived對象obj可見的成員為a,答案為A。16、已知有數(shù)組定義chara[3][4];下列表達(dá)式中正確的是A、a[0]="AAA"B、strcpy(a[1],"BBBBB")C、a[2][1]="CC"D、a[1][1]=a[1][1]標(biāo)準(zhǔn)答案:D知識點解析:程序定義一個3行4列的二維字符數(shù)組。由于是二維數(shù)組,所以a[0]代表一維數(shù)組,數(shù)組是不能直接賦值的,A錯誤;由于是二維數(shù)組,a[1]代表數(shù)組a的第二行行地址,可以使用strcpy函數(shù)賦值,但是a[1]只有4個字節(jié)大小的空間,而字符串"BBBBB"占6個字節(jié),拷貝越界,B錯誤;同B情況一樣,a[2][1]只有1個字節(jié)空間,"CC"占3個字節(jié),無法完成賦值,C錯誤;D選項是對a[1][1]完成自我賦值,正確;答案為D。17、下列關(guān)于派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的表述中,錯誤的是A、下列關(guān)于派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的表述中,錯誤的是B、派生類的構(gòu)造函數(shù)會隱含調(diào)用基類的構(gòu)造函數(shù)C、在建立派生類對象時,先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)D、在銷毀派生類對象時,先調(diào)用基類的析構(gòu)函數(shù),再調(diào)用派生類的析構(gòu)函數(shù)標(biāo)準(zhǔn)答案:D知識點解析:派生類對象的撤銷順序與構(gòu)造順序相反:首先運行派生類析構(gòu)函數(shù),然后按繼承層次依次向上調(diào)用各基類析構(gòu)函數(shù),這樣做是為了每次析構(gòu)函數(shù)銷毀的都是完整的對象,選項D錯誤,答案為D。18、下面對軟件特點描述錯誤的是A、軟件沒有明顯的制作過程B、軟件是一種邏輯實體,不是物理實體,具有抽象性C、軟件的開發(fā)、運行對計算機(jī)系統(tǒng)具有依賴性D、軟件在使用中存在磨損、老化問題標(biāo)準(zhǔn)答案:D知識點解析:軟件具有以下特點:軟件是一種邏輯實體,具有抽象性;軟件沒有明顯的制作過程;軟件在使用期間不存在磨損、老化問題;對硬件和環(huán)境具有依賴性;軟件復(fù)雜

溫馨提示

  • 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

提交評論