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

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷17(共9套)(共214題)國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷第1套一、選擇題(本題共21題,每題1.0分,共21分。)1、如果有以下定義及初始化:inta=3,*p=&a;則由此可以推斷,*p的值是()。A、變量a的值,即3B、變量a的地址值C、變量P的地址值D、無意義標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:題目中的定義初始化是定義一個(gè)整型變量a,初始化為3。而“int*p=&a;”是定義一個(gè)整型指針變量p,將變量a的地址作為指針變量p的初值。木p是指針變量p指向的存儲(chǔ)單元的內(nèi)容,即變量值。所以木p指向a的值3。2、設(shè)樹T的深度為4,其中度為1,2,3,4的結(jié)點(diǎn)個(gè)數(shù)分別為4,2,1,1。則T中的葉子結(jié)點(diǎn)數(shù)為()。A、8B、7C、6D、5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:深度為m二叉樹其總結(jié)點(diǎn)數(shù)為2m-1=24-1=15。總結(jié)點(diǎn)數(shù)減去度為1,2,3,4的結(jié)點(diǎn)個(gè)數(shù)就是葉子結(jié)點(diǎn)數(shù)。15-4-2-1-1=7。3、軟件生命周期中的活動(dòng)不包括()。A、市場(chǎng)調(diào)研B、需求分析C、軟件測(cè)試D、軟件維護(hù)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件的生命周期描述了軟件從產(chǎn)生到最終消亡的全過程,生命周期中的活動(dòng)包括需求分析、軟件設(shè)計(jì)(分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì))、軟件實(shí)現(xiàn)、軟件測(cè)試和軟件維護(hù),不包括市場(chǎng)調(diào)研。4、軟件需求規(guī)格說明書的作用不包括()。A、軟件驗(yàn)收的依據(jù)B、用戶與開發(fā)人員對(duì)軟件要做什么的共同理解C、軟件設(shè)計(jì)的依據(jù)D、軟件可行性研究的依據(jù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:軟件規(guī)格說明書主要有三個(gè)作用:①用戶和軟件開發(fā)人員之間的合同;②開發(fā)人員進(jìn)行設(shè)計(jì)和編程的依據(jù):③軟件工程項(xiàng)目驗(yàn)收的依據(jù)。5、下列關(guān)于C++預(yù)定義流對(duì)象的敘述中,正確的是()。A、cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對(duì)象B、cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流類C、cout是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對(duì)象D、eout是C++預(yù)定義的標(biāo)準(zhǔn)輸入流類標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對(duì)象,cout是C++預(yù)定義的標(biāo)準(zhǔn)輸出流對(duì)象。6、有如下程序:#includeusingnamespacestd;classBase{public:virtualvoidShow(){cout<<’B’;});classDerived:publicBase{public:voidShow(){cout<<’D’;)};intmain(){Base*pl=newDerived;Derived*p2=newDerived;pl一>Show();p2一>Show();deletePl;deletep2;return0:)運(yùn)行這個(gè)程序的輸出結(jié)果是()。A、BBB、BDC、DBD、DD標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在基類Base中定義了虛函數(shù)Show()輸出字符‘B’,而在派生類Derived中對(duì)虛函數(shù)Show()進(jìn)行了重新定義,輸出字符‘D’。在主函數(shù)中對(duì)基類和派生類中的虛函數(shù)Show()進(jìn)行了多態(tài)調(diào)用,此時(shí)調(diào)用的是派生類中重新定義的Show(),輸出字符‘D’。7、有如下函數(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í)點(diǎn)解析:此題考查的是函數(shù)參數(shù)的傳遞方式。此題中形參a是普通參數(shù),即傳值調(diào)用,函數(shù)中對(duì)a增1不會(huì)影響到實(shí)參x的值;形參b是傳址調(diào)用,函數(shù)中對(duì)b增1同時(shí)會(huì)改變實(shí)參y的值。故最終結(jié)果是0和2。8、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assMyClass{public:MyClass(intx):val(x){}voidPrint()const{cout<<"const:val="<<val<<’\t’;}voidPrint(){cout<<"val="<<val<<’t’;}private:intval,};intmain(){constMyClassobj1(10);MyClassobj2(20);obj1.Print();obj2.Print();return();}程序的輸出結(jié)果是()。A、val=10const:val=20B、const:val=10const:val=20C、const:val=10val=20D、val=10val=20標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是常成員函數(shù)的重載。常成員函數(shù)是使用const關(guān)鍵字說明的函數(shù)。const關(guān)鍵字可用于區(qū)分重載函數(shù)。此時(shí),常對(duì)象調(diào)用常成員函數(shù),一般對(duì)象調(diào)用一般成員函數(shù):題目中的Print()就是通過const重載的兩個(gè)成員函數(shù),主函數(shù)中聲明的objl是常對(duì)象,obj2是一般對(duì)象。故輸出結(jié)果是const::val=10val—20。9、在語(yǔ)句“cout<<’A’:”中,cout是()。A、類名B、對(duì)象名C、函數(shù)名D、C++的關(guān)鍵字標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:c++有四個(gè)預(yù)定義的流對(duì)象:cin標(biāo)準(zhǔn)輸,cout標(biāo)準(zhǔn)輸出,CelT標(biāo)準(zhǔn)出錯(cuò)信息輸出,clog帶緩沖的標(biāo)準(zhǔn)出錯(cuò)信息輸出。10、語(yǔ)句ofstreamf("SALARY.DAT",ios_base∷app);的功能是建立流對(duì)象f,并試圖打開文件SALARYDAT與f關(guān)聯(lián),而且()。A、若文件存在,將其置為空文件;若文件不存在,打開失敗B、若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個(gè)新文件C、若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗D、若文件存在,打開失敗:若文件不存在,建立一個(gè)新文件標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是文件打開模式。文件打開模式iso_base∷app是為添加數(shù)據(jù)而打開(總是在尾部寫),故只有選項(xiàng)B說法正確。11、有如下程序:#include<iostream>usingnamespacestd;classObj{staticinti;public:Obj(){i++;}~Obj(){i--;}statichatgetVal(){returni;}};intObj::i=0;voidf(){Objob2;cout<<o(jì)b2.getVal();}intmain(){Objob1;f();Obj*ob3=newObj;cout<<o(jì)b3->getValq();deleteob3;cout<<Obj::getVal();return0;}程序的輸出結(jié)果是()。A、232B、231C、222D、221標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是靜態(tài)成員。本題中,Obj類定義了一個(gè)靜態(tài)數(shù)據(jù)成員i,并初始化為0在主函數(shù)中,首先定義了1個(gè)該類對(duì)象ob1,所以構(gòu)造函數(shù)被調(diào)用1次,i加1;然后調(diào)用函數(shù)f(),該函數(shù)中又定義了一個(gè)對(duì)象ob2,此時(shí)i再次加1變?yōu)?,然后通過函數(shù)getVal()揄出i的值2。f()函數(shù)結(jié)束,ob2變量被釋放,故析構(gòu)函數(shù)被調(diào)用了1次,i變成1;回到主函數(shù)中,又動(dòng)態(tài)創(chuàng)建了1個(gè)對(duì)象并讓ob3指向它,此后i變成2并輸出。最后釋放動(dòng)態(tài)創(chuàng)建的對(duì)象i變?yōu)?,輸出1。故最終的輸出結(jié)果是221。12、有如下類定義和變量定義:classA{public:A(){data=0;}~A(){}intGetData()const{retumdata;}voidSetData(intn){data=n;}private:intdata;};constAa;Ab;下列函數(shù)調(diào)用中錯(cuò)誤的是()。A、a.GetData();B、a.SetData(10);C、b.GetData();D、b.SetData(10);標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由題意可知a為常對(duì)象,因?yàn)槌?duì)象不能被更新,所以通過這個(gè)常對(duì)象只能調(diào)用它的常成員函數(shù)GetData(),而不能調(diào)用其他成員函數(shù)SetData(10),因而選項(xiàng)B為本題的正確答案。13、下列控制對(duì)齊方式的操作符中,錯(cuò)誤的是()。A、internalB、centerC、leftD、right標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:對(duì)齊方式的控制操作符1eR的含義是在設(shè)定的寬度內(nèi)左對(duì)齊輸出,右端填已設(shè)定的填充字符;ri曲t(此為默認(rèn)設(shè)置)在設(shè)定的寬度內(nèi)右對(duì)齊輸出;intemal在設(shè)定的寬度內(nèi)右對(duì)齊輸出,但若有符號(hào)(一或+),符號(hào)置于最左端。14、有如下類聲明:classXA{intx;public:XA(intn){x=n;)};classXB:publicXA{inty;public:XB(inta,intb);};在構(gòu)造函數(shù)XB的下列定義中,正確的是()。A、XB::XB(inta,intb):x(a),y(b){}B、XB::XB(inta,intb):XA(a),y(b){}C、XB::XB(inta,intb):x(a),XB(b){}D、XB::XB(inta,intb):XA(a),XB(b){}標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是派生類中構(gòu)造函數(shù)的定義。派生類的構(gòu)造首先要調(diào)用基類的構(gòu)造函數(shù),對(duì)基類成員初始化;然后對(duì)派生類中的新增成員初始化。格式為:派生類名(構(gòu)造函數(shù)形參表)基類構(gòu)造函數(shù)(形參表)。15、下列關(guān)于派生類和基類的描述中,正確的是()。A、派生類成員函數(shù)只能訪問基類的公有成員B、派生類成員函數(shù)只能訪問基類的公有和保護(hù)成員C、派生類成員函數(shù)可以訪問基類的所有成員D、派生類對(duì)基類的默認(rèn)繼承方式是公有繼承標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:派生類不論是采用那種繼承方式繼承基類,它的成員函數(shù)只能訪問基類的公有成員和保護(hù)成員。16、有如下程序:#includeusingnamespacestd;classTest{public:Test(){n+=2;}~Test(){n一=3;}staticintgetNum(){returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<"n="<A、n=0B、n=1C、n=2D、n=3標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)。靜態(tài)數(shù)據(jù)成員是類中所有對(duì)象共享的成員,而不是某個(gè)對(duì)象的成員。題目中的靜態(tài)數(shù)據(jù)成員n的運(yùn)算具有疊加性,執(zhí)行“n+=2”和“n-=3”后n的值為0。17、若AA為一個(gè)類,a為該類的非靜態(tài)數(shù)據(jù)成員,在該類的一個(gè)成員函數(shù)定義中訪問a時(shí),其書寫格式為()。A、aB、AA.a(chǎn)C、a{}D、AA::a{}標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:類AA的成員函數(shù)直接引用類AA的非靜態(tài)數(shù)據(jù)成員。18、已知類Myclass的定義如下:classMyClass{public:MyClass(intd){data=d;}~MyClass(){}private:intdata;};下列對(duì)Myclass類對(duì)象數(shù)組的定義和初始化語(yǔ)句中,正確的是()。A、MyClassarrays[2];B、MyClassarrays[2]={MyClass(5)};C、MyClassarrays[2]={MyClass(5),MyClass(6)};D、MyClass*arrays=newMyClass[2];標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在選項(xiàng)C中定義了類MyClass對(duì)象數(shù)組arrays[2],并用對(duì)象MyClass(5)和MyClass(6)對(duì)這個(gè)數(shù)組中的兩個(gè)元素賦初值。19、已知Value是一個(gè)類,Value是Value的一個(gè)對(duì)象。下列以非成員函數(shù)形式重載的運(yùn)算符函數(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í)點(diǎn)解析:此題考查的是重載加法運(yùn)算符“+”。“+”是二元運(yùn)算符,其第一操作數(shù)是對(duì)象本身,i為第二操作數(shù),由此可知選項(xiàng)B正確。20、打開文件時(shí)可單獨(dú)或組合使用下列文件打開模式()。①ios__base::app②ios__base::binary③ios__base::in④ios__base::out若要以二進(jìn)制讀方式打開一個(gè)文件,需使用的文件打開模式為A、①⑧B、①④C、②③D、②④標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:模式ios_base::binary作為二制進(jìn)文件打開,ios_base::out為輸出而打開文件。21、在C++中,cin是一個(gè)()。A、類B、對(duì)象C、模板D、函數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:cin為istream流類的對(duì)象。國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷第2套一、選擇題(本題共24題,每題1.0分,共24分。)1、閱讀下面程序:#include<iostream.h>fun(inta,intB.{intc;c=a+b:returnC;}voidmain(){intx=6,y=7,z=8,r;r=fun((x--,y++,x+y),z--);cout<<r<<end1;}則該程序的輸出結(jié)果是()。A、11B、20C、21D、31標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:由主函數(shù)入手,定義變量x、y、z,然后調(diào)用函數(shù)fun,其中的參數(shù)為(x--,y++,x+y)的計(jì)算結(jié)果和z--的計(jì)算結(jié)果,所以調(diào)用fun(13,8)計(jì)算結(jié)果為21。2、有如下函數(shù)模板:template<classT>Tsquare(Tx){returnx,x;}其中T是()。A、函數(shù)形參B、函數(shù)實(shí)參C、模板形參D、模板實(shí)參標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是函數(shù)模板。聲明一個(gè)函數(shù)模板的格式是:template<模板形參表聲明>函數(shù)聲明,{函數(shù)體}其中的<模板形參表聲明>是由一個(gè)或多個(gè)“模板形參”組成的,每個(gè)“模板形參”可具有以下幾種形式:typename參數(shù)名;class參數(shù)名;類型修飾參數(shù)名。3、一棵二叉樹中共有70個(gè)葉子結(jié)點(diǎn)與80個(gè)度為1的結(jié)點(diǎn),則該二叉樹中的總結(jié)點(diǎn)數(shù)為()。A、219B、221C、229D、231標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在二叉樹中,葉子結(jié)點(diǎn)個(gè)數(shù)為n0,則度為2的結(jié)點(diǎn)數(shù)n2=n0-1。本題中葉子結(jié)點(diǎn)的個(gè)數(shù)為70,所以度為2的結(jié)點(diǎn)個(gè)數(shù)為69,因而總結(jié)點(diǎn)數(shù)=葉子結(jié)點(diǎn)數(shù)+度為1的結(jié)點(diǎn)數(shù)+度為2的結(jié)點(diǎn)數(shù)=70+80+69=219。4、對(duì)長(zhǎng)度為10的線性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為A、9B、10C、45D、90標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:線性表的長(zhǎng)度為n,最壞情況下冒泡排序需要比較的次數(shù)為n(n-1)/2。5、已知函數(shù)FA調(diào)用FB,若要把這兩個(gè)函數(shù)定義在同一個(gè)文件中,則()。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知識(shí)點(diǎn)解析:在C++中,在調(diào)用任何函數(shù)之前,必須確保它已有原型說明。函數(shù)原型說明通常放在程序文件的頭部,以使得該文件中所有函數(shù)都能調(diào)用它們。在本題中,當(dāng)函數(shù)FA調(diào)用FB時(shí),函數(shù)FB可以定義在FA的后面,但是FB的原型必須出現(xiàn)在FA的定義之前,因而選項(xiàng)D為正確答案。6、下列敘述中錯(cuò)誤的是A、具有兩個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定屬于非線性結(jié)構(gòu)B、具有兩個(gè)以上指針域的鏈?zhǔn)浇Y(jié)構(gòu)一定屬于非線性結(jié)構(gòu)C、具有兩個(gè)以上葉子結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定屬于非線性結(jié)構(gòu)D、具有一個(gè)根結(jié)點(diǎn)且只有一個(gè)葉子結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)也可能是非線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:非線性結(jié)構(gòu),數(shù)學(xué)用語(yǔ),其邏輯特征是一個(gè)結(jié)點(diǎn)元素可能有多個(gè)直接前趨和多個(gè)直接后繼。常見的非線性結(jié)構(gòu)有:二維數(shù)組,多維數(shù)組,廣義表,樹(二又樹等),圖。7、下面敘述中錯(cuò)誤的是()。A、軟件測(cè)試的目的是發(fā)現(xiàn)錯(cuò)誤并改正錯(cuò)誤B、對(duì)被調(diào)試的程序進(jìn)行“錯(cuò)誤定位”是程序調(diào)試的必要步驟C、程序調(diào)試通常也稱為DebugD、軟件測(cè)試應(yīng)嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。軟件測(cè)試要嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性。程序調(diào)試通常也稱Debug,對(duì)被調(diào)試的程序進(jìn)行“錯(cuò)誤”定位是程序調(diào)試的必要步驟。8、下列描述中正確的是()。A、軟件測(cè)試的主要目的是發(fā)現(xiàn)程序中的錯(cuò)誤B、軟件測(cè)試的主要目的是確定程序中錯(cuò)誤的位置C、為了提高軟件測(cè)試的效率,最好由程序編制者自己來完成軟件測(cè)試的工作D、軟件測(cè)試是證明軟件沒有錯(cuò)誤標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。一個(gè)好的測(cè)試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的用例;一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。為了達(dá)到好的測(cè)試效果,應(yīng)該由獨(dú)立的第三方來構(gòu)造測(cè)試,程序員應(yīng)盡量避免檢查自己的程序。9、若實(shí)體A和B是一對(duì)多的聯(lián)系,實(shí)體B和C是一對(duì)一的聯(lián)系,則實(shí)體A和C的聯(lián)系是()。A、—對(duì)一B、一對(duì)多C、多對(duì)一D、多對(duì)多標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由于B和C有一一對(duì)應(yīng)的聯(lián)系,而A和B只間有一對(duì)多的聯(lián)系,則通過關(guān)系之間的傳遞,則A和C之間也是一對(duì)多的聯(lián)系。10、類MyClass的定義如下:classMyClass{public:MyClass(){value=0;}SetVariable(inti){value=i;}private;intvalue;);則對(duì)下列語(yǔ)句序列正確的描述是()。MyClass*P,my;p=&my;A、語(yǔ)句p=&my;是把對(duì)象my賦值給指針變量PB、語(yǔ)句Myaass*p,my;會(huì)調(diào)用兩次類MyClass的構(gòu)造函數(shù)C、對(duì)語(yǔ)句*p.SetVariable(5)的調(diào)用是正確的D、語(yǔ)句p->SetVariable(5)與語(yǔ)句my.SetVariable(5)等價(jià)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:選項(xiàng)A),語(yǔ)句p=&my;是把對(duì)象my的地址值賦值給指針變量p;選項(xiàng)B),語(yǔ)句MyClass*p,my;,由于p只是一個(gè)指向?qū)ο蟮闹羔?,因此定義指針p不調(diào)用構(gòu)造函數(shù),所以此語(yǔ)句只調(diào)用一次構(gòu)造函數(shù);對(duì)成員函數(shù)的引用可以通過兩種形式:指針->成員函數(shù)(形參表)或者對(duì)象名.成語(yǔ)函數(shù)名(形參表),故選項(xiàng)C)錯(cuò)誤,選項(xiàng)D)正確。11、有如下程序:#include<iostream>usingnamespacestd;classA{public;staticinta;voidinit(){a=1;}A(inta=2){init();a++;}};intA::a=0:Aobj;intmain(){cout<<o(jì)bj.a(chǎn);return0;}運(yùn)行時(shí)輸出的結(jié)果是()。A、0B、1C、2D、3標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題實(shí)際考查的是變量作用域的屏蔽效應(yīng)。在C++中,當(dāng)標(biāo)識(shí)符的作用域發(fā)生重疊時(shí),在一個(gè)函數(shù)中聲明的標(biāo)識(shí)符可以屏蔽函數(shù)外聲明的標(biāo)識(shí)符或全局標(biāo)識(shí)符。聲明類A的全局對(duì)象時(shí),構(gòu)造函數(shù)首先調(diào)用int函數(shù),但由于靜態(tài)成員變量a被構(gòu)造函數(shù)內(nèi)部的形參a所屏蔽所以a++改變的是形參a的值,對(duì)靜態(tài)成員變量a沒有影響。12、下列符號(hào)中能夠作為C++標(biāo)識(shí)符的是()。A、constB、2aC、_shapeD、_count標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是C++標(biāo)識(shí)符。標(biāo)識(shí)符是由數(shù)字、字母以及下劃線構(gòu)成,其第一個(gè)字符必須是字母或下劃線,中間不能有空格;標(biāo)識(shí)符的長(zhǎng)度是任意的,但由于編譯系統(tǒng)的限制一般不超過31個(gè)字符;標(biāo)識(shí)符中的大小寫字母是不同的;定義標(biāo)識(shí)符時(shí)不能采用系統(tǒng)的保留字。13、計(jì)算斐波那契數(shù)列第n項(xiàng)的函數(shù)定義如下:intfib(intn){if(n==0)return1;elseif(n==1)return2;elsereturnfib(n-1)+fib(n-2);}若執(zhí)行函數(shù)調(diào)用表達(dá)式fib(2),函數(shù)fib被調(diào)用的次數(shù)是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:斐波那契數(shù)列是遞歸函數(shù),所以fib(2)=fib(1)+fib(0)=2+1=3。因而執(zhí)行函數(shù)調(diào)用表達(dá)式fib(2)時(shí),函數(shù)fib被調(diào)用的次是2次。14、若為Fraction類重載前增1運(yùn)算符++,應(yīng)在類體中將其聲明為()。A、Fraction&operator++();B、Fraction&operator++fint);C、friendFraction&operator++();D、friendFraction&operator++(int);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在類Fraction中重載前增l運(yùn)算符++時(shí),其聲明形式為Fraction&operator++();在類Fraction中重載后增1運(yùn)算符++時(shí),其聲明形式為Fraction&operator++(int);。15、下列關(guān)于類成員對(duì)象構(gòu)造函數(shù)調(diào)用順序的敘述中,正確的是()。A、與它們?cè)诔跏蓟斜碇械捻樞蛳嗤珺、與它們?cè)陬愔新暶鞯捻樞蛳嗤珻、與析構(gòu)函數(shù)的調(diào)用順序相同D、順序不確定標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:類成員對(duì)象構(gòu)造函數(shù)的調(diào)用是按照在類中定義的順序進(jìn)行的,而不是按照構(gòu)造函數(shù)說明后的冒號(hào)順序進(jìn)行構(gòu)造的。16、若已定義了類Vehicle,則下列派生類定義中;錯(cuò)誤的是()。A、classCar:vehicle{/*類體略*/};B、classCar:publiccar{/*類體略*/};C、classCar:publicVehicle{/*類體略*/};D、classCar:virtualpublicVehicle{/*類體略*/};標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:類Car不能派生自它本身。17、在類聲明中,緊跟在“public:”后聲明的成員的訪問權(quán)限是()。A、私有B、公有C、保護(hù)D、默認(rèn)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:類中提供了3種訪問控制的權(quán)限:公有,私有和保護(hù)。其中公有類型定義了類的外部接口,任何一個(gè)外部的訪問都必須通過外部接口進(jìn)行。私有類型的成員只允許本類的成員函數(shù)訪問,來自類外部的任何訪問都是非法的,保護(hù)類型介于公有類型和私有類型之間,在繼承和派生時(shí)可以體現(xiàn)出其特點(diǎn)。18、有如下程序:#includeusingnamespacestd;classBase{public:virtualvoidfunction1(){cout<<’0’;}voidfunction2(){cout<<’1’;}};classDerived:publicBase{public:voidfunction1(){cout<<’2’;}voidfunction2(){cout<<’3’;}};intmain(){Base*p=newDerived();p->function1();p->function2();return0;};運(yùn)行時(shí)的輸出結(jié)果是()。A、01B、21C、03D、23標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:函數(shù)function1()在基類Base中定義為虛成員函數(shù),而在派生類Dervied中重新進(jìn)行了定義,輸出字符2,函數(shù)function2()在基類Base中定義虛成員函數(shù),在主函數(shù)中使用指向基類的指針變量p訪問function2()時(shí),輸出1。19、有如下程序:#inc1ude<iostream>usingnamespacestd;classBase{public:virtualvoidShow(){cout<<’B’;}};classDerived:publicBase{public:voidShow(){cout<<’D’;}};intmain(){Base*p1=newDerived;Derived*p2=newDerived;pl一>Show();p2一>Show();deletep1;deletep2;return0;}運(yùn)行這個(gè)程序的輸出結(jié)果是()。A、BBB、BDC、DBD、DD標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在基婁Base中定義了虛函數(shù)Show0輸出字符‘B’,而在派生類Derived中對(duì)虛函數(shù)Show()進(jìn)行了重新定義,輸出字符‘D’。在主函數(shù)中對(duì)基類和派生類中的虛函數(shù)Show()進(jìn)行了多態(tài)調(diào)用,此時(shí)調(diào)用的是派生類中重新定義的Show(),輸出字符‘D’。20、下列關(guān)于運(yùn)算符重載的敘述中,正確的是()。A、通過運(yùn)算符重載,可以定義新的運(yùn)算符B、有的運(yùn)算符只能作為成員函數(shù)重載C、若重載運(yùn)算符+,則相應(yīng)的運(yùn)算符函數(shù)名是+D、重載一個(gè)二元運(yùn)算符時(shí),必須聲明兩個(gè)形參標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是運(yùn)算符重載。C++中,“=”、“[]”、“()”、“->”以及所有的類型轉(zhuǎn)換符只能作為成員函數(shù)重載,故B選項(xiàng)正確:運(yùn)算符重載只是賦予已有的運(yùn)算符多重含義,并不是定義新的運(yùn)算符:運(yùn)算符函數(shù)的函數(shù)名就是在運(yùn)算符前加上關(guān)鍵字operator。21、己知在一個(gè)類體中包含如下函數(shù)原型:VOLUMEoperator-(VOLUME)const;,下列關(guān)于這個(gè)函數(shù)的敘述中,錯(cuò)誤的是()。A、這是運(yùn)算符-的重載運(yùn)算符函數(shù)B、這個(gè)函數(shù)所重載的運(yùn)算符是一個(gè)一元運(yùn)算符C、這是一個(gè)成員函數(shù)D、這個(gè)函數(shù)不改變類的任何數(shù)據(jù)成員的值標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是運(yùn)算符的重載。運(yùn)算符“-”有一元和二元兩種,在本題中它作為一個(gè)二元運(yùn)算符,所以它不能更新對(duì)象的數(shù)據(jù)成員,也不能調(diào)用該類中沒有const修飾的成員函數(shù)。22、有如下類定義和變量定義:classParents{public:intpublicData;private:intprivateData;};classChildA:publicParents{/*類體略*/};classChildB:privateParents{/*類體略*/};ChildAa:ChildBb:下列語(yǔ)句中正確的是()。A、cout<B、cout<C、cout<D、cout<標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:基類Parents的私有成員privateData在派生類ChildA和ChildB中是不可以訪問,所以選項(xiàng)B、D是錯(cuò)誤,而派生類ChildB私有繼承基類Parents,所以基類Parents的公有成員publicData在派生類ChildB中變?yōu)樗接谐蓡T,只能在派生類ChildB內(nèi)部訪問,因而選項(xiàng)c是錯(cuò)誤的。派生類ChiIdA公有繼承基類Parents,所以基類Parents的公有成員publicData在派生類ChildA中可以訪問。23、下面是一個(gè)模板聲明的開始部分:templutedouble__由此可知()。A、這可能是一個(gè)函數(shù)模板的聲明B、這可能是一個(gè)類模板的聲明C、這既可能是一個(gè)函數(shù)模板的聲明,也可能是一個(gè)類模板的聲明D、這肯定是一個(gè)錯(cuò)誤的模板聲明標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是函數(shù)模板的聲明。聲明一個(gè)函數(shù)模板的格式是:template<模板形參表聲明>函數(shù)聲明;定義類模板的格式是:template<類型形參表>class<類模板名>{};。24、如果利用C++流進(jìn)行輸入輸出,下面的敘述中正確的是()。A、只能借助于流對(duì)象進(jìn)行輸入輸出B、只能進(jìn)行格式化輸入輸出C、只能借助于cin和cout進(jìn)行輸入輸出D、只能使用運(yùn)算符>>和<<進(jìn)行輸入輸出標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的知識(shí)點(diǎn)是C++流。利用C++流既可以進(jìn)行有格式輸入輸出,也可以進(jìn)行無格式輸入輸出,所以選項(xiàng)B錯(cuò)誤:C++的4個(gè)預(yù)定義的流對(duì)象為:cin一標(biāo)準(zhǔn)輸入,cout一標(biāo)準(zhǔn)輸出,cerr一標(biāo)準(zhǔn)出錯(cuò)信息輸出,clog一帶緩沖的標(biāo)準(zhǔn)出錯(cuò)信息輸出,選項(xiàng)C錯(cuò)誤;C++流除了可以使用提取“>>”插入“<<”進(jìn)行輸入輸出外,還可以通過流對(duì)象的一些成員函數(shù)進(jìn)行輸入輸出,故選項(xiàng)D錯(cuò)誤。國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷第3套一、選擇題(本題共19題,每題1.0分,共19分。)1、支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。A、棧B、樹C、隊(duì)列D、二叉樹標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:棧是一種限定在一端進(jìn)行插入與刪除的線性表。在土函數(shù)調(diào)用予函數(shù)時(shí),要首先保存主函數(shù)當(dāng)前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子函數(shù),把子函數(shù)的運(yùn)行結(jié)果返回到主函數(shù)調(diào)用子函數(shù)時(shí)的位置,主函數(shù)再接著往下執(zhí)行,這種過程符合棧的特點(diǎn)。所以一般采用棧式存儲(chǔ)方式。2、下列關(guān)于this指針的描述中,正確的是()。A、類的成員函數(shù)都有this指針B、類的友元函數(shù)都有this指針C、任何與類相關(guān)的函數(shù)都有this指針D、類的非靜態(tài)成員函數(shù)都有this指針標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:mis作用域是在類內(nèi)部,當(dāng)在類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員時(shí),編譯器會(huì)自動(dòng)將對(duì)象本身的地址作為一個(gè)隱含參數(shù)傳遞給函數(shù)。另外,全局函數(shù)和靜態(tài)函數(shù)都不能使用this指針。所以答案為D。3、模板對(duì)類型的參數(shù)化提供了很好的支持,因此()。A、類模板的主要作用是生成抽象類B、類模板實(shí)例化時(shí),編譯器將根據(jù)給出的模板實(shí)參生成一個(gè)類C、在類模板中的數(shù)據(jù)成員都具有同樣類型D、類模板中的成員函數(shù)都沒有返回值標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查類模板的基本概念。類模板的定義和聲明都以關(guān)鍵字template開頭。關(guān)鍵字后面是一個(gè)用逗號(hào)分隔的模板參數(shù)表,用尖括號(hào)“<>”括起來,這個(gè)表被稱為類模板的模板參數(shù)表。類模板是類的抽象,類是類模板的實(shí)例。類模板使類中的一些數(shù)據(jù)成員和成員函數(shù)的參數(shù)或返回值可以取任意的數(shù)據(jù)類型。所以B選項(xiàng)正確。4、下列重載函數(shù)中,正確的是()。A、voidfun(inta,floatb);voidfun(intC,floatd)B、voidfun(inta,floatb);voidfun(floata,intb)C、floatfun(inta,floatb);intfun(intb,floata)D、intfun(inta,intb);floatfun(inta,intb)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:所謂函數(shù)重載是指同一函數(shù)名可以對(duì)應(yīng)多個(gè)函數(shù)實(shí)現(xiàn)。進(jìn)行函數(shù)重載時(shí),要求同名函數(shù)在參數(shù)個(gè)數(shù)上不同,或者參數(shù)類型上不同。5、下列關(guān)于軟件工程的描述中正確的是()。A、軟件工程只是解決軟件項(xiàng)目的管理問題B、軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題C、軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則D、軟件工程只是解決軟件開發(fā)中的技術(shù)問題標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:軟件工程是建立并使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法。軟件工程主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則。6、程序流程圖中帶有箭頭的線段表示的是()。A、圖元關(guān)系B、數(shù)據(jù)流C、控制流D、調(diào)用關(guān)系標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:程序流程圖是一種傳統(tǒng)的、應(yīng)用廣泛的軟件過程設(shè)計(jì)工具,通常也稱為程序框圖。其中,用帶箭頭的線段表示控制流,用柜形表示加工步驟,用菱形表示邏輯條件。7、下列關(guān)于this指針的描述中,正確的是()。A、類的成員函數(shù)都有this指針B、類的友元函數(shù)都有this指針C、任何與類相關(guān)的函數(shù)都有this指針D、類的非靜態(tài)成員函數(shù)都有this指針標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:this是成員函數(shù)所屬對(duì)象的指針,它指向類對(duì)象的地址。成員函數(shù)通過這個(gè)指針可以知道自己屬于哪一個(gè)對(duì)象。它隱藏于每個(gè)類的非靜態(tài)成員函數(shù)中。8、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0){cout<<x;)};classDerived:publicBase{public:Derived(intx=0){cout<<x;)private:Baseval;);intmain(){Derivedd(1);return0:}程序的輸出結(jié)果是()。A、0B、1C、01D、001標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是類的構(gòu)造。建立類的對(duì)象時(shí),構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)基類被繼承時(shí)聲明的順序(自左向右).>執(zhí)行成員對(duì)象的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)成員對(duì)象在類中聲明的順序.>執(zhí)行自身的構(gòu)造函數(shù)。本題中,首先會(huì)構(gòu)造基類Base,調(diào)用Base類的構(gòu)造函數(shù),輸出0;然后還定義了一個(gè)Base類的對(duì)象,再次調(diào)用Base類的默認(rèn)構(gòu)造函數(shù)輸出0;最后構(gòu)造自身,因主函數(shù)中傳入了構(gòu)造參數(shù)l,所以輸出1。故最后輸出結(jié)果是:001。9、C++中的模板包括()。A、對(duì)象模板和函數(shù)模板B、對(duì)象模板和類模板C、函數(shù)模板和類模板D、變量模板和對(duì)象模板標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查函數(shù)模板和類模板,所以答案為c。10、有以下程序,在橫線應(yīng)添加()。#include<iostream>usingnamespacestd;classTestClass{public:TestClass(intn){number=n;}//拷貝構(gòu)造函數(shù)~TestClass(){}private:intnumber;};TestClassfun(TestClassp){TestClasstemp(p);returntemp;}intmain(){TestClassobj1(10),obj2(0);TestClassobj3(obj1);obj2=fun(obj3);return0:}A、TestClass(TestClass&other){number=other.number;}B、TestClass(TestClassother){number=other.number;}C、TestClass(TestClass&other){number;}D、TestClass(&other){number=other.number;}標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:拷貝構(gòu)造函數(shù)也是構(gòu)造函數(shù),但它只有一個(gè)參數(shù),這個(gè)參數(shù)是本類的對(duì)象,即other,所以賦值操作將本類的參數(shù)other.number賦值給number;而且采用對(duì)象的引用的形式,也就是&other。11、下列字符串中,正確的C++標(biāo)識(shí)符是()。A、foo-1B、2bC、newD、256標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是C++語(yǔ)言中標(biāo)識(shí)符的定義。標(biāo)識(shí)符由字母、數(shù)字或下劃線構(gòu)成,但第一個(gè)字符必須是字母或下劃線;標(biāo)識(shí)符中大小寫字母是不同的;用戶定義標(biāo)識(shí)符時(shí),不允許采用系統(tǒng)的關(guān)鍵字。12、若一個(gè)函數(shù)的原型為“int*Xfun1(intx,int&y,charz);”,則該函數(shù)的返回值類型為()。A、int*B、intC、int&D、char標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:由“int*Xfun1(intx,int&y,charz);”的定義可知,其返回值為指向int指針的函數(shù)。13、下列選項(xiàng)中,正確的C++標(biāo)識(shí)符是()。A、6_groupB、group-6C、age+3D、_group_6標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C++中標(biāo)識(shí)符的命名遵循如下規(guī)則:不能是C++關(guān)鍵字,第一個(gè)字母必須是字母或下劃線,中間不能有空格,變量名中不能包括“.”、“;”、“,”、“’”、“’’”+-之類的特殊符號(hào)??傊畼?biāo)識(shí)符中除了能使用26個(gè)英文大小寫字母和數(shù)字外,只能使用下劃線“__”。14、以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是()。A、publicB、staticC、protectedD、private標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是類的訪問權(quán)限。在C++語(yǔ)言中,類的訪問權(quán)限有公有、保護(hù)和私有三種。故本題選B。15、下列關(guān)于構(gòu)造函數(shù)的描述中,錯(cuò)誤的是()。A、構(gòu)造函數(shù)名與類名相同B、構(gòu)造函數(shù)可以有返回值C、構(gòu)造函數(shù)可以重載D、每個(gè)類都有構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:構(gòu)造函數(shù)具有下面4個(gè)特殊的性質(zhì):構(gòu)造函數(shù)的名字必須與類名相同;構(gòu)造函數(shù)不指定返回類型,它隱含有返回值,由系統(tǒng)內(nèi)部使用:構(gòu)造函數(shù)可以有一個(gè)或多個(gè)參數(shù),因此構(gòu)造函數(shù)可以重載;在創(chuàng)建對(duì)象時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)。16、有如下程序段:inti=0,j=1;int&r=i;//①r=j;//②int*p=&i://③*p=&r;//④其中會(huì)產(chǎn)生編譯錯(cuò)誤的語(yǔ)句是()。A、④B、③C、②D、①標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是指針和引用。本題中,語(yǔ)句①是一條合法的引用聲明語(yǔ)句,使得變量i被r引用;語(yǔ)句②通過引用r將變量j的值賦給變量i;語(yǔ)句③聲明了指針變量p,并初始化指向變量i;語(yǔ)句④中*p代表了變量i的值,要將&r賦給*p,這會(huì)使編譯器產(chǎn)生類型不符的錯(cuò)誤提示。17、下列控制對(duì)齊方式的操作符中,錯(cuò)誤的是()。A、internalB、centerC、leftD、right標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:對(duì)齊方式的控制操作符1eR的含義是在設(shè)定的寬度內(nèi)左對(duì)齊輸出,右端填已設(shè)定的填充字符;ri曲t(此為默認(rèn)設(shè)置)在設(shè)定的寬度內(nèi)右對(duì)齊輸出;intemal在設(shè)定的寬度內(nèi)右對(duì)齊輸出,但若有符號(hào)(一或+),符號(hào)置于最左端。18、在語(yǔ)句“cout<<’A’:”中,cout是()。A、類名B、對(duì)象名C、函數(shù)名D、C++的關(guān)鍵字標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:C++有四個(gè)預(yù)定義的流對(duì)象:cin標(biāo)準(zhǔn)輸,cout標(biāo)準(zhǔn)輸出,cerr標(biāo)準(zhǔn)出錯(cuò)信息輸出,clog帶緩沖的標(biāo)準(zhǔn)出錯(cuò)信息輸出。19、下列關(guān)于模板的敘述中,正確的是()。A、如果一個(gè)類中存在純虛函數(shù),這個(gè)類就是類模板B、函數(shù)模板不能有形式參數(shù)表C、類模板是一種參數(shù)化類型的類,是類的生成器D、類模板中不能包含構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:對(duì)于函數(shù)模板,數(shù)據(jù)類型本身成了它的參數(shù),是一種參數(shù)化類型的函數(shù)。對(duì)于類模板,數(shù)據(jù)類型本身成了它的參數(shù),因而是一種參數(shù)化類型的類,是類的生成器。國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷第4套一、選擇題(本題共22題,每題1.0分,共22分。)1、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、可行性分析報(bào)告B、軟件需求規(guī)格說明書C、概要設(shè)計(jì)說明書D、集成測(cè)試計(jì)劃標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:A錯(cuò)誤,可行性分析階段產(chǎn)生可行性分析報(bào)告。c錯(cuò)誤,概要設(shè)計(jì)說明書是總體設(shè)計(jì)階段產(chǎn)生的文檔。D錯(cuò)誤,集成測(cè)試計(jì)劃是在概要設(shè)計(jì)階段編寫的文檔。B正確,軟件需求規(guī)格說明書是后續(xù)工作如設(shè)計(jì)、編碼等需要的重要參考文檔。2、支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。A、棧B、樹C、隊(duì)列D、二叉樹標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:棧是一種限定在一端進(jìn)行插入與刪除的線性表。在主函數(shù)調(diào)用子函數(shù)時(shí),要首先保存主函數(shù)當(dāng)前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子函數(shù),把子函數(shù)的運(yùn)行結(jié)果返回到主函數(shù)調(diào)用子函數(shù)時(shí)的位置,主函數(shù)再接著往下執(zhí)行,這種過程符合棧的特點(diǎn)。所以一般采用棧式存儲(chǔ)方式。3、下列關(guān)于線性鏈表的敘述中,正確的是()。A、各數(shù)據(jù)結(jié)點(diǎn)的存儲(chǔ)空間可以不連續(xù),但它們的存儲(chǔ)順序與邏輯順序必須一致B、各數(shù)據(jù)結(jié)點(diǎn)的存儲(chǔ)順序與邏輯順序可以不一致,但它們的存儲(chǔ)空間必須連續(xù)C、進(jìn)行插入與刪除時(shí),不需要移動(dòng)表中的元素D、以上都不正確標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)稱為線性鏈表。在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中,存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)空間可以不連續(xù),各數(shù)據(jù)結(jié)點(diǎn)的存儲(chǔ)順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致,而數(shù)據(jù)元素之間的邏輯關(guān)系是由指針域來確定的。4、某系統(tǒng)總體結(jié)構(gòu)圖如下圖所示:該系統(tǒng)總體結(jié)構(gòu)圖的深度是A、7B、6C、3D、2標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:這個(gè)系統(tǒng)總體結(jié)構(gòu)圖是一棵樹結(jié)構(gòu),在樹結(jié)構(gòu)中,根結(jié)點(diǎn)在第1層,同一層上所有子結(jié)點(diǎn)都在下一層,由系統(tǒng)總體結(jié)構(gòu)圖可知,這棵樹共3層。在樹結(jié)構(gòu)中,樹的最大層次稱為樹的深度。所以這棵樹的深度為3。5、設(shè)樹T的深度為4,其中度為1,2,3,4的結(jié)點(diǎn)個(gè)數(shù)分別為4,2,1,1。則T中的葉子結(jié)點(diǎn)數(shù)為()。A、8B、7C、6D、5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:深度為m二叉樹其總結(jié)點(diǎn)數(shù)為2m-1=24-1=15??偨Y(jié)點(diǎn)數(shù)減去度為1,2,3,4的結(jié)點(diǎn)個(gè)數(shù)就是葉子結(jié)點(diǎn)數(shù)。15-4-2-1-1=7。6、設(shè)一棵完全二叉樹共有700個(gè)結(jié)點(diǎn),則此二叉樹中的葉子結(jié)點(diǎn)數(shù)為()。A、85B、120C、250D、350標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:①具有n個(gè)結(jié)點(diǎn)的完全二叉樹的深度為[long2n]+1,計(jì)算出該完全二叉樹的深度為10。②設(shè)度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))為n0,度為1的結(jié)點(diǎn)為n1,度為2的結(jié)點(diǎn)為n2,總結(jié)點(diǎn)數(shù)為n,深度為k。n=n1+n2+n0,由于n0=n2+1則n2=n0-1,故n=n1+n0-1+n0=n1+2n0-1。由于完全二叉樹中度為1的結(jié)點(diǎn)數(shù)只有兩種可能:0或1。③假設(shè)度為1的結(jié)點(diǎn)數(shù)為0即滿二叉樹,根據(jù)滿二叉樹的定義,其2m-1個(gè)結(jié)點(diǎn),根據(jù)以上計(jì)算所得的深度10來計(jì)算,應(yīng)有210-1=1024-1=1023個(gè)結(jié)點(diǎn),顯然與題目中700個(gè)結(jié)點(diǎn)不符。因此,度為1的結(jié)點(diǎn)數(shù)必然為1。故n=n1+2n0-1=1+2n0-1=2n0,則n0=n/2=700/2=350。7、設(shè)一棵樹的度為3,其中沒有度為2的結(jié)點(diǎn),且葉子結(jié)點(diǎn)數(shù)為5。該樹中度為3的結(jié)點(diǎn)數(shù)為A、1B、2C、3D、不可能有這樣的樹標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:樹的度是指一棵樹中,最大的結(jié)點(diǎn)的度稱為樹的度。本題中樹的度為3,那么樹中最少有一個(gè)結(jié)點(diǎn)的度為3。而樹中沒有度為2的結(jié)點(diǎn),葉子結(jié)點(diǎn)數(shù)為5,度為1的結(jié)點(diǎn)下面只有一個(gè)葉子結(jié)點(diǎn)。因此,該樹中含2個(gè)度為3的結(jié)點(diǎn)滿足題目要求。8、定義無符號(hào)整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是()。A、一369B、369C、0.369D、整數(shù)集合{1,2,3,4,5}標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:UInt表示的是無符號(hào)整數(shù)類,所以它的每個(gè)實(shí)例都是一個(gè)無符號(hào)整數(shù),所以排除選項(xiàng)A)和選項(xiàng)C),選項(xiàng)D)是整數(shù)集合,所以也排除。9、有如下程序:#include<iostream.h>voidmain(){charstr[2][5]={’’1234’’,’’5678’’},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=str[i];for(i=0;i<2;i++)for(j=0;p[i][j]>’\0’;j+=2)s=10*s+p[i][j]-’0’;cout<<s;}該程序的輸出結(jié)果是()。A、1357B、2468C、3556D、23678標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:程序中的“for(i=0;i<2;i++)p[i]=str[i];”語(yǔ)句將str中的值賦值給指針數(shù)組p。在接下來的二重for循環(huán)中,跳取“j+=2”,p指針指向的值即“1”,“3”,“5”,“7”。在分別對(duì)字符到整型的轉(zhuǎn)換,即減去字符’0’,然后依次轉(zhuǎn)換為千位,百位,十位,個(gè)位“10*s”操作輸出整型s,即“1357”。10、有三個(gè)關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、差C、交D、并標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由三個(gè)關(guān)系R、S和T的結(jié)構(gòu)可以知道,關(guān)系T是由關(guān)系R、S經(jīng)過差運(yùn)算得到的。11、)有如下程序#includeusingnamespacestd;classA{public:virtualvoidfunc1(){cout<<"A1";}voidfunc2(){cout<<"A2";}};classB:publicA{public:voidfunc1(){cout<<"B1";}voidfunc2(){cout<<"B2";}};intmain(){A*p=newB;P->func1();P->func2();return0;}運(yùn)行此程序,屏幕上將顯示輸出()。A、B1B2B、A1A2C、B1A2D、A182標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是虛函數(shù)的概念。此題中,func1是虛函數(shù),func2是一般成員函數(shù),而且在派生類與基類中都存在兩個(gè)這樣的函數(shù)。在主函數(shù)中,語(yǔ)句A*p=newB;定義了一個(gè)基類的指針p,并讓它指向一個(gè)派生類對(duì)象。所以通過該指針調(diào)用func1時(shí),運(yùn)行的是派生類的版本,而通過該指針調(diào)用func2運(yùn)行的是基類的版本。所以程序運(yùn)行的最后輸出是:B1A2。12、學(xué)校的每個(gè)社團(tuán)都有一名團(tuán)長(zhǎng),且一個(gè)同學(xué)可同時(shí)擔(dān)任多個(gè)社團(tuán)的團(tuán)長(zhǎng),則實(shí)體團(tuán)長(zhǎng)和實(shí)體社團(tuán)間的聯(lián)系是A、一對(duì)多B、多對(duì)多C、多對(duì)一D、一對(duì)一標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:一對(duì)多關(guān)系是關(guān)系數(shù)據(jù)侔中兩個(gè)表之間的一種關(guān)系,該關(guān)系中第一個(gè)表中的單個(gè)行可以與第二個(gè)表中的一個(gè)或多個(gè)行相關(guān),但第二個(gè)表中的一個(gè)行只可以與第一個(gè)表中的一個(gè)行相關(guān)。本題中,一個(gè)團(tuán)長(zhǎng)可以對(duì)應(yīng)多個(gè)社團(tuán),一個(gè)社團(tuán)只有一個(gè)團(tuán)長(zhǎng),因此是一對(duì)多關(guān)系。13、已知函數(shù)f的原型是“voidflint*x,int&y);”,變量v1、v2的定義是“intv1,v2;”,下列調(diào)用語(yǔ)句中,正確的是()。A、f(v1,v2);B、f(v1,&v2);C、f(&v1,v2);D、f(&v1,&v2);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在函數(shù)f的形參表達(dá)式中第一個(gè)形參為整型指針變量,第二個(gè)為整型引用變量,所以用實(shí)參v1的指針初始化第一個(gè)形參,用實(shí)參v2初始化第二形參。14、下列關(guān)于對(duì)象初始化的敘述中,正確的是()。A、定義對(duì)象的時(shí)候不能對(duì)對(duì)象進(jìn)行初始化B、定義對(duì)象之后可以顯式地調(diào)用構(gòu)造函數(shù)進(jìn)行初始化C、定義對(duì)象時(shí)將自動(dòng)調(diào)用構(gòu)造函數(shù)進(jìn)行初始化D、在一個(gè)類中必須顯式地定義構(gòu)造函數(shù)實(shí)現(xiàn)初始化標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:建立對(duì)象時(shí)根據(jù)給定的參數(shù)調(diào)用相應(yīng)的構(gòu)造函數(shù)對(duì)對(duì)象進(jìn)行初始化。無參數(shù)時(shí)表示調(diào)用缺省構(gòu)造函數(shù)。構(gòu)造函數(shù)在對(duì)象被創(chuàng)建時(shí)由系統(tǒng)自動(dòng)調(diào)用。15、下列程序段中包含4個(gè)函數(shù)。其中具有隱含this指針的是()。intfunl();classTest{public:intfun2();friendintfun3();staticintfun4();}A、funlB、fun2C、fun3D、fun4標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:this指針是成員函數(shù)所屬對(duì)象的指針,它指向類對(duì)象的地址。成員函數(shù)通過這個(gè)指針知道自己屬于哪一個(gè)對(duì)象。this指針是一個(gè)隱含的指針,它隱含于每個(gè)類的非靜態(tài)成員函數(shù)中,它明確的地表示出了成員函數(shù)當(dāng)前操作的數(shù)據(jù)所屬的對(duì)象。16、有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfun0{tout<<’B’;}};classDerived:publicBase{public:voidfun(){____cout<<’D’;}};intmain(){Derivedd;d.fun();return0;}若程序的輸出結(jié)果是BD,則劃線處缺失的部分是()。A、fun();B、Base.fun();C、Base::fun();D、Base->fun();標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:派生類Derived的對(duì)象d調(diào)用其成員函數(shù)fun(),要輸出結(jié)果為BD,所以在其成員函數(shù)fun()中要調(diào)用基類Base的成員函數(shù)fun()。17、若AA為一個(gè)類,a為該類的非靜態(tài)數(shù)據(jù)成員,在該類的一個(gè)成員函數(shù)定義中訪問a時(shí),其書寫格式為()。A、aB、AA.a(chǎn)C、a{}D、AA::a{}標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:類AA的成員函數(shù)直接引用類AA的非靜態(tài)數(shù)據(jù)成員。18、派生類的成員函數(shù)不能訪問基類的()。A、公有成員和保護(hù)成員B、公有成員C、私有成員D、保護(hù)成員標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是派生類對(duì)基類成員的訪問。派生類對(duì)基類的各個(gè)成員的訪問能力與繼承方式無關(guān),其成員不能訪問基類中的私有成員,可以訪問基類的公有成員和保護(hù)成員。19、有如下函數(shù)模板:temp1ate<typenameT’typenameU>Tcast(Uu){returnu;}其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對(duì)模板函數(shù)cast的調(diào)用中正確的是()。A、cast(i),B、cast<>(i);C、cast<char*,int>(i);D、cast<double,int>(i);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是模板函數(shù)的調(diào)用。本題中cast()函數(shù)的實(shí)參i只能確定模板參數(shù)U的類型為int,而不能確定另外一個(gè)模板參數(shù)T,故選項(xiàng)A、B錯(cuò)誤;C++語(yǔ)言不允許隱式地將int轉(zhuǎn)化為char*,故選項(xiàng)C錯(cuò)誤。20、下列關(guān)于模板的敘述中,錯(cuò)誤的是()。A、調(diào)用模版函數(shù)時(shí),在一定條件下可以省略模板實(shí)參B、可以用int、double這樣的類型修飾符來聲明模版參數(shù)C、模板聲明中的關(guān)鍵字c1ass都可以用關(guān)鍵字typename替代D、模板的形參表中可以有多個(gè)參數(shù)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在聲明模板參數(shù)是,關(guān)鍵字typename和class是可以互換的,兩者是等價(jià)的。但選項(xiàng)C中說的是模版聲明,在類模板聲明中,替換可能會(huì)引起麻煩。21、若有函數(shù)模板mySwap和一些變量定義如下:()。template<classT>voidmySwap(Tx,Ty);doubledl,d2;inti1,12;下列對(duì)mySwap的調(diào)用中,錯(cuò)誤的是A、mySwap(i1,i2)B、mySwap(d1,d2)C、mySwap(i1,d1)D、mySwap<int>(i2,d2)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:按照函數(shù)模板mySwap的定義,變量x和y應(yīng)該是同一類型,而在選項(xiàng)C)的定義中變量il和dl屬于不同的數(shù)據(jù)類型。22、如下函數(shù)的作用是以雙倍行距輸出文件:voiddouble_space(ifstream&f,ofstream&t){charC:whilc(________){;________if(c==’\n’)t.put(c);}}畫線處缺失的部分是()。A、fget(c)與t.put(c)B、f.put(c)與t.get(c)C、t.get(c)與fput(c)D、t.put(c)與f.get(c)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是文件流。get0函數(shù)作用是讀入一個(gè)字符,所以調(diào)用它的應(yīng)該是輸入文件流ifstream對(duì)象f.pLit0函數(shù)作用是輸出一個(gè)字符,所以調(diào)用它的應(yīng)該是輸入文件流ofstream對(duì)象t,故選項(xiàng)B、C排除;讀入和輸出應(yīng)該是有順序的,應(yīng)該先讀入后輸出,所以前一空填f.get(c),后一空填t.put(c)。國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷第5套一、選擇題(本題共24題,每題1.0分,共24分。)1、下列關(guān)于C++函數(shù)的說明中,正確的是()。A、內(nèi)聯(lián)函數(shù)就是定義在另一個(gè)函數(shù)體內(nèi)部的函數(shù)B、函數(shù)體的最后一條語(yǔ)句必須是return語(yǔ)句C、標(biāo)準(zhǔn)C++要求在調(diào)用一個(gè)函數(shù)之前,必須先聲明其原型D、編譯器會(huì)根據(jù)函數(shù)的返回值類型和參數(shù)表來區(qū)分函數(shù)的不同重載形式標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:一般函數(shù)進(jìn)行調(diào)用時(shí),要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時(shí),是將調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換,而不是在定義在另一個(gè)函數(shù)體內(nèi),所以A選項(xiàng)錯(cuò)誤。函數(shù)可以沒有返回值,所以就不需要return了,如果被調(diào)函數(shù)在調(diào)用函數(shù)之前已經(jīng)定義,那么就不需要聲明,所以C選項(xiàng)錯(cuò)誤,正確選項(xiàng)為D。2、要定義整型數(shù)組x,使之包括初值為0的三個(gè)元素,下列語(yǔ)句中錯(cuò)誤的是()。A、intx[3]={0,0,0);B、intx[]={0};C、staticintx[3]={0);D、intx[]={0,0,0);標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:當(dāng)數(shù)組聲明時(shí)沒有給出數(shù)組的大小,但是有初始化列表時(shí),數(shù)組的大小就由列表中元素的個(gè)數(shù)來確定。對(duì)于選項(xiàng)B定義數(shù)組x時(shí),沒有給出數(shù)組的大小,初始化時(shí)只給出了一個(gè)元素0。所以數(shù)組x只包含一個(gè)元素為0的元素。3、有如下程序#include#includeusingnamespacestd;classMyClass{public:MyClass(){cout<<’A’;}MyClass(charc){cout<*p2;p2=newMyClass(’X’);deletep2;return();}執(zhí)行這個(gè)程序屏幕上將顯示輸出()。A、ABXB、ABXBC、AXBD、AXBB標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是構(gòu)造函數(shù)和析構(gòu)函數(shù)。構(gòu)造函數(shù)在對(duì)象被創(chuàng)建的時(shí)候由系統(tǒng)自動(dòng)調(diào)用,而析構(gòu)函數(shù)在對(duì)象的生存期即將結(jié)束的時(shí)候由系統(tǒng)自動(dòng)調(diào)用。此題中,主程序在創(chuàng)建MayClass類的對(duì)象p1時(shí),調(diào)用MayClass類的默認(rèn)構(gòu)造函數(shù),輸出字母A:然后在創(chuàng)建*p2對(duì)象時(shí),調(diào)用帶字母參數(shù)的構(gòu)造函數(shù),輸出字母x;語(yǔ)句deletep2:調(diào)用析構(gòu)函數(shù),輸出字母B;在主函數(shù)退出時(shí),調(diào)用析構(gòu)函數(shù)清除對(duì)象p1,輸出字母B。4、下列描述中,正確的是()。A、線性鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)B、棧與隊(duì)列是非線性結(jié)構(gòu)C、雙向鏈表是非線性結(jié)構(gòu)D、只有根結(jié)點(diǎn)的二叉樹是線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類型:線性結(jié)構(gòu)與非線性結(jié)構(gòu)。如果一個(gè)非空的數(shù)據(jù)結(jié)構(gòu)滿足,下列兩個(gè)條件:①有且只有一個(gè)根結(jié)點(diǎn):②每個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件。則稱該數(shù)據(jù)結(jié)構(gòu)為線性結(jié)構(gòu),又稱線性表。所以線性表、棧與隊(duì)列、線性鏈表都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。5、下列描述中正確的是A、軟件測(cè)試應(yīng)該由程序開發(fā)者來完成B、程序經(jīng)調(diào)試后一般不需要再測(cè)試C、軟件維護(hù)只包括對(duì)程序代碼的維護(hù)D、以上三種說法都不對(duì)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:為了達(dá)到好的測(cè)試效果,應(yīng)該由獨(dú)立的第三方進(jìn)行測(cè)試工作。因?yàn)閺男睦韺W(xué)角度講,程序人員或設(shè)計(jì)方在測(cè)試自己的程序時(shí),要采取客觀的態(tài)度是會(huì)不同程度地存在障礙的,所以選項(xiàng)A)錯(cuò)誤。在程序調(diào)試時(shí),修改了一個(gè)錯(cuò)誤的同時(shí)可能引入了新的錯(cuò)誤,解決的辦法是在修改了錯(cuò)誤之后,必須進(jìn)行回歸測(cè)試,所以選項(xiàng)B)錯(cuò)誤。所謂軟件維護(hù),就是將交付的軟件投入運(yùn)行,并在運(yùn)行使用中不斷地維護(hù),根據(jù)新提出的需求進(jìn)行必要而且可能的擴(kuò)充和刪改,所以選項(xiàng)C)錯(cuò)誤。6、下列程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;template<typenameT>Tfun(Ta,Tb){return(a>=b)?a:b;}voidmain(){cout<<fun(3,6)<<’,’<<fun(3.14F,6.28F)<<end1;}A、6,3.14B、3,6.28C、3,3.14.D、6,6.28標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:“?:”為條件運(yùn)算符,(a>=b)?a:b是當(dāng)a大于b時(shí)取a,否則取b。所以第一個(gè)fun(3,6)調(diào)用中,6大于3,所以輸出6,同理第二個(gè)fun(3.14F,6.28F)調(diào)用中輸出6.28。7、字符串“a+b=12\n\t”的長(zhǎng)度為()。A、12B、10C、8D、6標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:題目給出的字符串含有7個(gè)字符,再加字符串的結(jié)束字符,所以共8個(gè)字符。8、有如下定義:inta[5]={1,3,5,7,9},*p=a;下列表達(dá)式中不能得到數(shù)值5的是()。A、a[2]B、a[3]C、*(p+2)D、*p+4標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是指針引用數(shù)組元素。B選項(xiàng)中,a[3]是數(shù)組的第四個(gè)元素,即7;其它選項(xiàng)的引用均可得到5。9、下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中,正確的是()。A、內(nèi)聯(lián)函數(shù)在調(diào)用時(shí)發(fā)生控制轉(zhuǎn)移B、內(nèi)聯(lián)函數(shù)必須通過關(guān)鍵字inline來定義C、內(nèi)聯(lián)函數(shù)是通過編譯器來實(shí)現(xiàn)的D、內(nèi)聯(lián)函數(shù)函數(shù)體的最后一條語(yǔ)句必須是return語(yǔ)句標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是內(nèi)聯(lián)函數(shù)的概念。在調(diào)用時(shí),內(nèi)聯(lián)函數(shù)會(huì)像宏函數(shù)一樣的展開,將調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換所以它沒有一般函數(shù)的參數(shù)壓棧和和退棧操作,所以選項(xiàng)A錯(cuò)誤;即使沒有使用inline說明,編譯器也會(huì)將在類的說明部分定義的函數(shù)認(rèn)定為內(nèi)聯(lián)函數(shù),所以選項(xiàng)B錯(cuò)誤;內(nèi)聯(lián)函數(shù)只是比普通函數(shù)有更高的執(zhí)行效率,所以選項(xiàng)D錯(cuò)誤。10、有如下程序:#include<iostream>#include<cstring>usingnamespacestd;classXCD{char*a;intb;public:XCD(char*aa,intbb){a=newchar[strlen(aa)+1];strcpy(a,aa);b=bb;}char*Geta(){returna;}intGetb0{returnb;}};intmain(){char*p1=’’abcd’’,*p2=’’weirong’’;intd1=6,d2=8;XCDx(p1,d1),y(p2,d2);cout<<strlen(x.Geta())+y.Getb()<<end1;return0;}運(yùn)行時(shí)的輸出結(jié)果是()。A、12B、16C、14D、11標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:由類XCD的定義可知,成員函數(shù)Geta()返回的是字符串的長(zhǎng)度,Getb()返回的是參數(shù)b的值。在主函數(shù)中strlen(x.Geta())的值等于4,y.Getb()的值等于8,所以輸出兩者的和為12。11、下列類模板的定義中語(yǔ)法格式錯(cuò)誤的是()。A、template<classT>classBuffer{/*…*/}B、template<typenameT>classBuffer{/*…*/};C、template<classT1,classT2>classBuffer{/*…*/};D、template<T>classBuffer{/*…*/};標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:定義類模板的一般形式是:template<類型名參數(shù)名1,類型名參數(shù)名2,…>class類名{類聲明體};模板的類型參數(shù)由關(guān)鍵字class或關(guān)鍵字typename及其后的標(biāo)識(shí)符構(gòu)成。在模板參數(shù)表中關(guān)鍵字class和typename的意義相同。12、若已定義了類Vehicle,則下列派生類定義中,錯(cuò)誤的是()。A、classCar:vehicle{/*類體略*/};B、classCar:publiccar{/*類體略*/};C、classCar:publicVehicle{/*類體略*/};D、classCar:virtualpublicVehicle{/*類體略*/};標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:類Car不能派生自它奉身。13、有如下兩個(gè)類定義classxx{private:dOublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;potected:doubley2;public:doubley3;};在類YY中保護(hù)成員變量的個(gè)數(shù)是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C++中派生類從基類保護(hù)繼承時(shí),基類的公有成員在派生類中改變?yōu)楸Wo(hù)成員,基類的保護(hù)成員在派生類中仍為保護(hù)成員。所以對(duì)于本題來說,YY類保護(hù)繼承自類XX,那么類XX中的公有成員x3和保護(hù)成員x2在派生類中都成為保護(hù)成員,再加上類YY。中的保護(hù)成員y2,因此在派生類YY中保護(hù)成員的個(gè)數(shù)為3。14、建立一個(gè)有成員對(duì)象的派生類對(duì)象時(shí),各構(gòu)造函數(shù)體的執(zhí)行次序?yàn)?)。A、派生類、成員對(duì)象類、基類B、成員對(duì)象類、基類、派生類C、基類、成員對(duì)象類、派生類D、基類、派生類、成員對(duì)象類標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:建立派生類對(duì)象的時(shí)候,構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用的順序按照基類被繼承時(shí)候的順序(自左向右)。然后是執(zhí)行成員對(duì)象的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)成員對(duì)象在類中的聲明順序(自上而下),最后是執(zhí)行派生類的構(gòu)造函數(shù)。15、當(dāng)派生類從一個(gè)基類保護(hù)繼承時(shí),基類中的一些成員在派生類中成為保護(hù)成員,這些成員在基類中原有的訪問屬性是()。A、任何B、公有或保護(hù)C、保護(hù)或私有D、私有標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:基類的公有成員和保護(hù)成員只有在以保護(hù)繼承方式繼承時(shí),其在繼承類中是保護(hù)成員。16、有如下程序:#include<iostream>usingnarnespacestd;classMountain{intheight;public:Mountain(inth=0):height(h){}virtualchar*GetName()const{return"山";}intGetHeight()const{returnheight;}};classLushan:publicMountain{Publie:Lushan(intd):Mountain(d){}Char*GetName()const{return"廬山";}};intmain(){Mountain*p=newLushan(1000);cout<<p->GetName()<<"海拔"<<p->GetHeight()<<"米";return0;}運(yùn)行這個(gè)程序的輸出結(jié)果是()。A、廬山海拔1000米B、廬山海拔0米C、山海拔1000米D、山海拔0米標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在基類Mountain中定義了虛函數(shù)GotName()輸出字符串“山”,而在派生類Lushan中對(duì)虛函數(shù)GetName()進(jìn)行了重新定義,輸出字符串“廬山”。在主函數(shù)中對(duì)派生類中的虛函數(shù)GetName()進(jìn)行了多態(tài)調(diào)用,此時(shí)調(diào)用的是派生類中重新定義的GetName(),輸出字符字符串“廬山”。17、有如下程序:#include<iostream>usingnamespacestd;classToy{public:Toy(char*_n){strcpy(name,_n);count++;}~TOYO{count--;}char*GetName(){retBtnname;}staticintgetCount(){returncount;}private;charname[10];staticintcount;};intToy::count=0;intmain(){Toyt1(’’Snoopy’’),t2(’’Mickey’’),t3(’’Barbie’’);cout<<t1.getCount()<<end1;return0;}運(yùn)行時(shí)的輸出結(jié)果是()。A、1B、2C、3D、運(yùn)行時(shí)出錯(cuò)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:類Toy中包含一個(gè)字符數(shù)組name和一個(gè)靜態(tài)整型變量count。在程序中首先給類Toy的成員count的賦初始值0,然后在主函數(shù)中,定義了三個(gè)Toy對(duì)象t1、t2、t3,并分別對(duì)它們的name字段賦值,在賦值的同時(shí)變量count的值加l,所以最后變量count的值等于3。18、有如下程序:#inc1ude<iostream>usingnamespacestd;classMountain{intheight;public:Mountain(inth=0):height(h){}virtualchar*GetName()const{return"山";}intGetHeight()const{returnheight;}};classLushan:publicMountain{Public:Lushan(intd):Mountain(d){}Char*GetName()const{return"廬山";}};intmain(){Mountain*p=newLushan(1000);cout<<p一>GetName()<<"海拔"<<p一>GetHeight()<<"米";return0;}運(yùn)行這個(gè)程序的輸出結(jié)果是()。A、廬山海拔1000米B、廬山海拔0米C、山海拔1000米D、山海拔0米標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在基類Mountain中定義了虛函數(shù)GetName()輸出字符串“山”,而在派生類Lushan中對(duì)虛函數(shù)GetName()進(jìn)行了重新定義,輸出字符串“廬山”。在主函數(shù)中對(duì)派生類中的虛函數(shù)GetName()進(jìn)行了多態(tài)調(diào)用,此時(shí)調(diào)用的是派生類中重新定義的GetName(),輸出字符字符串“廬山”。19、有如下程序:#includeusmgnam

溫馨提示

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

評(píng)論

0/150

提交評(píng)論