歷年計算機(jī)二級C++筆試試題及答案_第1頁
歷年計算機(jī)二級C++筆試試題及答案_第2頁
歷年計算機(jī)二級C++筆試試題及答案_第3頁
歷年計算機(jī)二級C++筆試試題及答案_第4頁
歷年計算機(jī)二級C++筆試試題及答案_第5頁
已閱讀5頁,還剩241頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2005年9月全國計算機(jī)等級考試二級C++筆試試題及答案(考試時間90分鐘,滿分100分)一、選擇題(每小題2分,共70分)下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。(1)下列敘述中正確的是A)程序設(shè)計就是編制程序B)程序的測試必須由程序員自己去完成C)程序經(jīng)調(diào)試改錯后還應(yīng)進(jìn)行再測試D)程序經(jīng)調(diào)試改錯后不必進(jìn)行再測試(2)下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進(jìn)行查找的是A)順序存儲的有序線性表B)線性鏈表C)二叉鏈表D)有序線性鏈表(3)下列關(guān)于棧的描述正確的是A)在棧中只能插入元素而不能刪除元素B)在棧中只能刪除元素而不能插入元素C)棧是特殊的線性表,只能在一端插入或刪除元素D)棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素(4)下列敘述中正確的是A)一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)B)數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率(5)下列描述中正確的是A)軟件工程只是解決軟件項目的管理問題B)軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題C)軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則D)軟件工程只是解決軟件開發(fā)中的技術(shù)問題(6)在軟件設(shè)計中,不屬于過程設(shè)計工具的是PDL(過程設(shè)計語言)PAD圖N-S圖DFD圖(7)下列敘述中正確的是A)軟件交付使用后還需要進(jìn)行維護(hù)B)軟件一旦交付使用就不需要再進(jìn)行維護(hù)C)軟件交付使用后其生命周期就結(jié)束D)軟件維護(hù)是指修復(fù)程序中被破壞的指令(8)數(shù)據(jù)庫設(shè)計的根本目標(biāo)是要解決A)數(shù)據(jù)共享問題B)數(shù)據(jù)安全問題C)大量數(shù)據(jù)存儲問題D)簡化數(shù)據(jù)維護(hù)(9)設(shè)有如下關(guān)系表:則下列操作中正確的是A)T=RCSB)T=RUSC)T=RxSD)T=R/S(10)數(shù)據(jù)庫系統(tǒng)的核心是A)數(shù)據(jù)模型B)數(shù)據(jù)庫管理系統(tǒng)C)數(shù)據(jù)庫D)數(shù)據(jù)庫管理員(11)下列關(guān)于C++函數(shù)的敘述中,正確的是A)每個函數(shù)至少要具有一個參數(shù)B)每個函數(shù)都必須返回一個值C)函數(shù)在被調(diào)用之前必須先聲明D)函數(shù)不能自己調(diào)用自己(12)下列關(guān)于類和對象的敘述中,錯誤的是A)一個類只能有一個對象B)對象是類的具體實例C)類是對某一類對象的抽象D)類和對象的關(guān)系是一種數(shù)據(jù)類型與變量的關(guān)系(13)在C++中,用于實現(xiàn)運(yùn)行時多態(tài)性的是A)內(nèi)聯(lián)函數(shù)B)重載函數(shù)C)模板函數(shù)D)虛函數(shù)(14)下列關(guān)于運(yùn)算符重載的敘述中,正確的是A)通過運(yùn)算符重載,可以定義新的運(yùn)算符B)有的運(yùn)算符只能作為成員函數(shù)重載C)若重載運(yùn)算符+,則相應(yīng)的運(yùn)算符函數(shù)名是+D)重載一個二元運(yùn)算符時,必須聲明兩個形參(15)下列關(guān)于模板的敘述中,錯誤的是A)模板聲明中的第一個符號總是關(guān)鍵字templateB)在模板聲明中用<和>括起來的部分是模板的形參后C)類模板不能有數(shù)據(jù)成員D)在一定條件下函數(shù)模板的實參可以省略(16)對于語句cout?“cout”是一個輸出流對象“endl”的作用是輸出回車換行“x”是一個變量“<<”稱作提取運(yùn)算符(17)下列字符串中,正確的C++標(biāo)識符是fbo-12bnew256(18)已知枚舉類型定義語句為:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};則下列敘述中錯誤的是A)枚舉常量NAME的值為1B)枚舉常量NUMBER的值為1C)枚舉常量MINUS的值為6D)枚舉常量PRINT的值為10(19)執(zhí)行語句序列inti=0;while(ix25)i+=3;cout<輸出結(jié)果是24252728(20)要定義一個具有5個元素的一維數(shù)組vect,并使其各元素的初值依次是30,50,-88,0和0,則下列定義語句中錯誤的是intvect[]={30,50,-88};intvect[]={30,50,-88,0,0};intvect[5]={30,50,-88};D)intvect[5]={30,50,-88,0,0};(21)有如下程序:#includevoidfun(int&x,inty){intt=x;x=y;y=t;}intmain()inta[2]={23,42);fun(a[l],a[0]);std::cout?a[0]?","?a[l]?std::endl;return0;)執(zhí)行后的輸出結(jié)果是42,4223,2323,4242,23(22)有如下類聲明:classFoo{intbar;};則Foo類的成員bar是A)公有數(shù)據(jù)成員B)公有成員函數(shù)C)私有數(shù)據(jù)成員D)私有成員函數(shù)(23)有如下類聲明: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ù)是4321(24)已知在一個類體中包含如下函數(shù)原型:VOLUMEoperator-(VOLUME)const;,下列關(guān)于這個函數(shù)的敘述中,錯誤的是A)這是運(yùn)算符-的重載運(yùn)算符函數(shù)B)這個函數(shù)所重載的運(yùn)算符是一個一元運(yùn)算符C)這是一個成員函數(shù)D)這個函數(shù)不改變類的任何數(shù)據(jù)成員的值(25)有如下函數(shù)模板定義:templateTfunc(Tx,Ty){returnx*x+y*y;}在下列對func的調(diào)用中,錯誤的是func(3,5);func(3.0,5.5);func(3,5.5);fiinc(3,5.5);(26)有如下程序:#includeusingnamespacestd;intmain(){cout.fill('*');cout.width(6);cout.fillf#');cout?123?endl;return0;}執(zhí)行后的輸出結(jié)果是###123123###***123123***(27)在下列函數(shù)原型中,可以作為類AA構(gòu)造函數(shù)的是voidAA(int);intAA();AA(int)const;AA(int);(28)下列關(guān)于this指針的敘述中,正確的是A)任何與類相關(guān)的函數(shù)都有this指針B)類的成員函數(shù)都有this指針C)類的友元函數(shù)都有this指針D)類的非靜態(tài)成員函數(shù)才有this指針(29)有如下程序:#includeusingnamespacestd;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é)果是n=0n=ln=2n=3(30)有如下程序:#includeusingnamespacestd;classA{public:A(){cout?"A',;}};classB{public:B(){cout?"B'*;}};classC:publicA{Bb;public:C(){cout?"C";}};intmain(){Cobj;return0;}執(zhí)行后的輸出結(jié)果是CBABACACBABC(31)有如下類聲明:classXA{intx;public:XA(intn){x=n;});classXB:publicXA{inty;public:XB(inta,intb););在構(gòu)造函數(shù)XB的下列定義中,正確的是XB::XB(inta,intb):x(a),y(b){}XB::XB(inta,intb):XA(a),y(b){}XB::XB(inta,intb):x(a),XB(b){}D)XB::XB(inta,intb):XA(a),XB(b){}(32)有如下程序:#includeusingnamespacestd;classBASE{public:?BASE(){cout?"BASE";}};classDERIVED:publicBASE{public:?DERIVED(){cout?"DERIVED";});intmain(){DERIVEDx;return0;}執(zhí)行后的輸出結(jié)果是BASEDERIVEDBASEDERIVEDDERIVEDBASE(33)在表達(dá)式x+y*z中,+是作為成員函數(shù)重載的運(yùn)算符,*是作為非成員函數(shù)重載的運(yùn)算符。下列敘述中正確的operator+有兩個參數(shù),operator*有兩個參數(shù)operator+有兩個參數(shù),operator*有一個參數(shù)operator+W一個參數(shù),operator*有兩個參數(shù)operator+有一個參數(shù),operator*有一個參數(shù)(34)下面關(guān)于C++流的敘述中,正確的是A)cin是一個輸入流對象B)可以用ifstream定義一個輸出流對象C)執(zhí)行語句序列char*y="PQMN";cout<D)執(zhí)行語句序列charx[80];cin.getline(x,80);時,若鍵Happynewyear則x中的字符串是“Happy”(35)有如下程序:#includeusingnamespacestd;classAA{intn;public:AA(intk):n(k){}intget(){returnn;}intget()const{returnn+1;}intmain()(AAa(5);constAAb(6);cout?return0;}執(zhí)行后的輸出結(jié)果是55577577二、填空題(每空2分,共30分)請將每一個空的正確答案寫在答題卡[1】?【15】序號的橫線上,答在試卷上不得分。(1)數(shù)據(jù)管理技術(shù)發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個階段,其中數(shù)據(jù)獨(dú)立性最高的階段是【1】0(2)算法復(fù)雜度主要包括時間復(fù)雜度和【2】復(fù)雜度。(3)在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊)。其中【3】的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。一棵二叉樹第六層(根結(jié)點為第一層)的結(jié)點數(shù)最多為【4】個。(5)數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于【5】結(jié)構(gòu)。(6)下列函數(shù)的功能是判斷字符串str是否對稱,對稱則返回true,否則返回false。請在橫線處填上適當(dāng)內(nèi)容,實現(xiàn)該函數(shù)。boolfun(char*str)(inti=0,j=0;while(str[j])[6];fbr(j-;ireturni[7]j;)(7)執(zhí)行語句序列intx=10,&r=x;cout><?,-,?輸出結(jié)果為【8】o(8)下列程序的輸出結(jié)果為Objectid=0Objectid=l請將程序補(bǔ)充完整。#includeusingnamespacestd;classPoint(public:Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}?Point(){countP—;}intGetX(){returnX;}intGetY(){returnY;}staticvoidGetC(){cout?"Objectid="?<ENDL;}&NBSP;private:intX,Y;staticintcountP;};[9] 〃靜態(tài)數(shù)據(jù)成員的初始化intmain()Point::GetC();PointA(4,5);A.GetC();return0;)(9)非成員函數(shù)應(yīng)聲明為類的 [10]函數(shù)才能訪問這個類的private成員。(10)派生類中的成員不能直接訪問基類中的1111成員。(11)下列程序的輸出結(jié)果為2,請將程序補(bǔ)充完整。#includeusingnamespacestd;classBase(public:voidfun(){cout?l;}};classDerived:publicBase(public:voidfun(){cout?2;}};intmain()(Base*p=newDerived;p->fun();deletep;return0;}(12)請將下列類定義補(bǔ)充完整。classBase{public:voidfun(){cout?"Base::fun"<classDerived:publicBase{public:voidfiin(){〃顯式調(diào)用基類的fun函數(shù)cout?"Derived二fbn"<<ENDL;});(13)多數(shù)運(yùn)算符既能作為類的成員函數(shù)重載,也能作為類的非成員函數(shù)重載,但[]運(yùn)算符只能作為類的[14]函數(shù)重載。(14)下面是一個棧類的模板,其中push函數(shù)將元素i壓入棧頂,pop函數(shù)彈出棧頂元素。棧初始為空,top值為0,棧頂元素在stack[top-l]中,在下面橫線處填上適當(dāng)語句,完成棧類模板的定義。templateclassTstackenum{size=1000};Tstack[size];inttop;public:Tstack():top(0){}voidpush(constT&i){if(top<SIZE)stack[top++]=i;)Tpop(){if(top=0)exit(l); 〃??諘r終止運(yùn)行return[15];)};2005年9月全國計算機(jī)等級考試二級C++筆試試題答案選擇題:03.D06.D09.B01.C04.D07.A10.B02.A05.C08.A11.C

12.A24.Bpoint::count13.D25.C填空題:p=014.B26.A36.數(shù)據(jù)庫系44.友元15.C27.D統(tǒng)45.私有16.D28.D37.空間46.virtual17.D29.A38.驅(qū)動模塊47.Base::fun()18.A30.D39.3248咸員19.C31.B40.存儲49.stack[-to20.A32.D41.J++ ;P]21.B33.C>=22.C34.A42.10-1023.B35.B43.int2006年4月全國計算機(jī)等級考試二級C++筆試試題及答案一、選擇題((1)?(35)每小題2分,共70分)下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。(1)下列選項不屬于結(jié)構(gòu)化程序設(shè)計方法的是A.自頂向下B.逐步求精C.模塊化D.可復(fù)用(2)兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度稱為A.耦合度B.內(nèi)聚度C.復(fù)雜度D.數(shù)據(jù)傳輸特性(3)下列敘述中正確的是A.軟件測試應(yīng)該由程序開發(fā)者來完成B.程序經(jīng)調(diào)試后一般不需要再測試C.軟件維護(hù)只包括對程序代碼的維護(hù)D.以上三種說法都不對(4)按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是A.隊列B.棧C.雙向鏈表D.二叉樹(5)下列敘述中正確的是A.線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)B.棧與隊列是非線性結(jié)構(gòu)C.雙向鏈表是非線性結(jié)構(gòu)D.只有根結(jié)點的二叉樹是線性結(jié)構(gòu)(6)對如下二叉樹,進(jìn)行后序遍歷的結(jié)果為ABCDEFDBEAFCABDECFDEBFCA(7)在深度為7的滿二叉樹中,葉子結(jié)點的個數(shù)為32316463(8)“商品”與“顧客”兩個實體集之間的聯(lián)系一般是一對一一■對多C.多對一D.多對多(9)在E-R圖中,用來表示實體的圖形是A.矩形B.橢圓形C.菱形D.三角形(10)數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是DB包含DBS和DBMSDBMS包含DB和DBSDBS包含DB和DBMSD.沒有任何關(guān)系(11)下列關(guān)于C++函數(shù)的說明中,正確的是<br>A.內(nèi)聯(lián)函數(shù)就是定義在另一個函數(shù)體內(nèi)部的函數(shù)<br>B.函數(shù)體的最后一條語句必須是return語句<br>C.標(biāo)準(zhǔn)C++要求在調(diào)用一個函數(shù)之前,必須先聲明其原型<br>D.編譯器會根據(jù)函數(shù)的返回值類型和參數(shù)表來區(qū)分函數(shù)的不同重載形式<br>(12)由于常對象不能被更新,因此<br>A.通過常對象只能調(diào)用它的常成員函數(shù)<br>B.通過常對象只能調(diào)用靜態(tài)成員函數(shù)<br>C.常對象的成員都是常成員<br>D.通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)<br>(13)下列關(guān)于虛函數(shù)的說明中,正確的是<br>A.從虛基類繼承的函數(shù)都是虛函數(shù)<br>B.虛函數(shù)不得是靜態(tài)成員函數(shù)<br>C.只能通過指針或引用調(diào)用虛函數(shù)<br>D.抽象類中的成員函數(shù)都是虛函數(shù)vbr>(14)運(yùn)算符重載是對已有的運(yùn)算符賦予多重含義,因此<br>A.可以對基本類型(如int類型)的數(shù)據(jù),重新定義“+”運(yùn)算符的含義<br>B.可以改變一個已有運(yùn)算符的優(yōu)先級和操作數(shù)個數(shù)<br>C.只能重載C++中已經(jīng)有的運(yùn)算符,不能定義新運(yùn)算符<br>D.C++中已經(jīng)有的所有運(yùn)算符都可以重載<br>(15)模板對類型的參數(shù)化提供了很好的支持,因此<br>A.類模板的主要作用是生成抽象類<br>B.類模板實例化時,編譯器將根據(jù)給出的模板實參生成一個類vbr>C.在類模板中的數(shù)據(jù)成員都具有同樣類型<br>D.類模板中的成員函數(shù)都沒有返回值<br>(16)下列關(guān)于C++流的說明中,正確的是<br>A.與鍵盤、屏幕、打印機(jī)和通信端口的交互都可以通過流類來實現(xiàn)<br>B.從流中獲取數(shù)據(jù)的操作稱為插入操作,向流中添加數(shù)據(jù)的操作稱為提取操作<br>C.cin是一個預(yù)定義的輸入流類vbr>D.輸出流有一個名為open的成員函數(shù),其作用是生成一個新的流對象<br>(17)下列符號中可以用作C++標(biāo)識符的是vbr>radius<br>foo-bar<br>else<br>3room<br>(18)下列語句中,錯誤的是<br>constintbuffer=256;<br>constinttemp;<br>constdouble*point;<br>constdouble*rt=newdouble(5.5);<br>(19)有如下程序:<br>intx=3;<br>do{<br>x-=2;<br>cout<<br>}while(!(--x));<br>執(zhí)行這個程序的輸出結(jié)果是<br>1<br>30<br>1-2<br>D.死循環(huán)<br>(20)有如下程序:vbr>#include〈br>usingnamespacestd;<br>intmain()<br>{<br>int*p;<br>*p =9;<br>cout<<"Thevalueatp:"<<*p;<br>retum0;vbr>}vbr>編譯運(yùn)行程序?qū)⒊霈F(xiàn)的情況是vbr>A.夠編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件<br>B.運(yùn)行時一定輸出:Thevalueatp:9<br>C.運(yùn)行時一定輸出:Thevalueatp:*9<br>D.運(yùn)行時有可能出錯<br>(21)有如下程序:#includeusingnamespacestd;intmain(){voidfunction(doubleval);doubleval;function(val);cout<return0;}voidfunction(doubleval)(val=3;)編譯運(yùn)行這個程序?qū)⒊霈F(xiàn)的情況是A.編譯出錯,無法運(yùn)行B.輸出:3C.輸出:3.0D.輸出一個不確定的數(shù)(22)有如下類定義:classAAinta;public:intgetReR)const{return&a;}〃①intgetvalue()const{returna;}〃②voidset(intn)const{a=n;}〃③friendvoidshow(AAaa)const{cout<〃④};其中的四個函數(shù)定義中正確的是A.①B.②C.③D.④(23)有如下程序:#include+usingnamespacestd;#includeusingnamespacestd;classBase(public:voidfiin(){cout?"Base::fun"<);classDerived:publicBasepublic:voidfiin()(cout?"Derived::fun"<}};intmain(){Derivedd;d.fun();return0;)已知其執(zhí)行后的輸出結(jié)果為:Base::funDerived::fun則程序中下劃線處應(yīng)填入的語句是Base.fun();Base::fun()Base->fun()fun();(24)下面是重載為非成員函數(shù)的運(yùn)算符函數(shù)原型,其中錯誤的是Fractionoperator+(Fraction,Fraction);Fractionoperator-(Fraction);Fraction&operator=(Fraction&,Fraction);Fraction&operator+=(Fraction&,Fraction);(25)有如下函數(shù)模板:templateTcast(Uu){returnu;}其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是cast(i);cast<>(i);cast(i);cast(i);(26)若磁盤上已存在某個文本文件,其全路徑文件名為d:\ncre\test.txt,下列語句中不能打開該文件的是ifstreamfile("d:\ncre\test.txt");ifstreamfile("d:\ncre\test.txt");ifstreamfile;file.open("d:\ncre\test.txt");ifstream*pFile=newifstream("d:\ncre\test.txt");(27)有如下類定義:classFoopublic:Foo(intv):value(v){}〃①-Foo(){}〃②private:Foo(){}〃③intvalue=0;II@};其中存在語法錯誤的行是A.①B.②C.③D.④(28)有如下類定義:classPoint(intx_,y_;public:Point():x_(0),y_(0){}Point(intx,inty=0):x_(x),y_(y){});若執(zhí)行語句Pointa(2),b[3],*c[4];則Point類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是2次3次4次5次(29)有如下類定義:classTest{public:Test(){a=0;c=0;}〃①intf(inta)const{this->a=a;}〃②staticintg(){returna;}〃③voidh(intB.{Test::b=b;};II?private:inta;staticintb;constintc;};intTest::b=0;在標(biāo)注號碼的行中,能被正確編譯的是A.①B.②C.③D.④(30)有如下程序:#includeusingnamespacestd;classA{public:A(){cout?"A";}~A(){cout?"~A";}};classB:publicA(A*p;public:B(){cout?"B";p=newA();}~B(){cout?"-BH;deletep;}};intmain()Bobj;return0;執(zhí)行這個程序的輸出結(jié)果是A.BAA~A~B?AABA?B?A?ABAA?B?A?AABA?A?B?A(31)有如下程序:#includeusingnamespacestd;classBaseprivate:voidfunl()const{cout?"funl";}protected:voidfun2()const{cout?"fun2";}public:voidfun3()const{cout?nfun3}classDerived:protectedBasepublic:voidfun4()const{cout?"fun4";}};intmain(){Derivedobj;obj.funl();//①obj.fUn2();〃②obj.fun3();//③obj.fun4();II?return0;)其中有語法錯誤的語句是A.①②③④B.①②③C.②③④D.①④(32)有如下程序:#includeusingnamespacestd;classBasepublic:voidfunl(){cout?"Base\n'^;}virtualvoidfun2(){cout?"Base\n";}};classDerived:publicBase{public:voidfunl(){cout?"Derived\n";}voidfun2(){cout?"Derived\n";}};void戈Base&B.{b.funl();b.fun2();}&,It;,/P>intmain()(Derivedobj;f(obj);return0;)執(zhí)行這個程序的輸出結(jié)果是BaseBaseDerivedDerivedBaseDerivedBaseDerived(33)有如下程序:#includeusingnamespacestd;classComplex{doublere,im;public:Complex(doubler,doublei):re(r),im(i){}doublereal()const{returnre;}doubleimage()const{returnim;}Complex&operator+=(Complexa)(re+=a.re;im+=a.im;return*this;ostream&operator?(ostream&s,constComplex&z)returns?'(yintmain(){Complexx(l,-2),y(2,3);cout?(x+=y)<return0;執(zhí)行這個程序的輸出結(jié)果是(1,-2)(2,3)(3,5)(3,1)(34)有如下程序:#include#includeusingnamespacestd;intmain()(cout.fill(,**);cout<return0;執(zhí)行這個程序的輸出結(jié)果是123*OK123*OK***123OK*123**OK(35)有如下類聲明:classSAMPLE(intn;public:SAMPLE(inti=0):n(i){}voidsetvalue(intnO);};下列關(guān)于setvalue成員函數(shù)的實現(xiàn)中,正確的是SAMPLE::setvalue(intn0){n=nO;}voidSAMPLE::setvalue(intn0){n=nO;}voidsetvalue(intn0){n=n0;}setvalue(intn0){n=nO;}二、填空題(每空2分,共30分)請將每一個空的正確答案寫在答題卡[1】?【15】序號的橫線上,答在試卷上不得分。(1)對長度為10的線性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為【1】O⑵在面向?qū)ο蠓椒ㄖ?,?]描述的是具有相似屬性與操作的一組對象。(3)在關(guān)系模型中,把數(shù)據(jù)看成是二維表,每一個二維表稱為一個【3】o(4)程序測試分為靜態(tài)分析和動態(tài)測試。其中[4]是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。(5)數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為【5】o(6)有一種只在循環(huán)語句或switch語句中使用的流程控制語句,表示該語句的關(guān)鍵字是【6】o(7)程序中有如下語句fbr(inti=0;i<5;i++)cout?*(p+能夠依次輸出int型一維數(shù)組DATA的前5個元素。由此可知,變量p的定義及初始化語句是【7】o(8)若下面程序運(yùn)行時輸出結(jié)果為1,A,10.12,B,3.5請將程序補(bǔ)充完整。,#includeusingnamespacestd;intmain(){voidtest(int,char,double【8】);test(l;A',10.1);test(2;B');return0;)voidtest(inta,charb,double(cout<)(9)有如下類聲明:classMyClass(inti;private:intj;protected:intk;public:intm,n;);其中,私有成員的數(shù)量為【9】(10)有如下程序:#includeusingnamespacestd;classCon{charID;public:Con():ID('A'){cout?l;}Con(charI:ID(ID.{cout?2;}Con(Con&C.:ID(c.getID()){cout?3;}chargetID()const{returnID;});voidshow(ConC.{cout<intmain()Concl;show(c1);Conc2('B');show(c2);return0;執(zhí)行上面程序的輸出是[10](11)有如下程序:#includeusingnamespacestd;classONE{public:virtualvoidf(){cout?"l";}};classTWO:publicONE(public:TWO(){cout?"2";}};classTHREE:publicTWOpublic:virtualvoidf(){TWO::f();cout?"3";}};intmain()(ONEaa,*p;TWObb;THREEcc;p=&cc;p->f();return0;}執(zhí)行上面程序的輸出是[11](12)有如下程序:#includeusingnamespacestd;classPARENT(public:PARENT(){cout?"PARENT";}};classSON:publicPARENTpublic:SON(){cout?"SON";}};intmain(){SONson;PARENT*p;p=&son;return0;)執(zhí)行上面程序的輸出是[12]o(13)若以非成員函數(shù)形式,為類Bounce重載“!”運(yùn)算符,其操作結(jié)果為一bool型數(shù)據(jù),則該運(yùn)算符重載函數(shù)的原型是[13]o(14)下面是復(fù)數(shù)類complex的定義,其中重載的運(yùn)算符“+”的功能是返回一個新的復(fù)數(shù)對象,其實部等于兩個操作對象實部之和,其虛部等于兩個操作對象虛部之和;請補(bǔ)充完整:classcomplex{doublereal;〃實部doubleimag;//虛部public:complex(doubler,doublei):real(r),imag(i){}

complexoperator+(complexa)returncomplex(L14]);}};(15)已知一個函數(shù)模板定義為templateTl,typenameT2>T1FUN(T2n){returnn*5.0;}若要求以int型數(shù)據(jù)7為函數(shù)實參調(diào)用該模板函數(shù),并返回一個double型數(shù)據(jù),則該調(diào)用應(yīng)表示為[15]2006年4月筆試試卷參考答案及詳解一、選擇題(1)D)(6)D)(2)A)(3)D)(4)B)(1)D)(6)D)(7)C)(8)D)(9)A)(10)C)(11)C)(16)A)(21)(11)C)(16)A)(21)D)(26)A)(31)B)(12)A)(17)A)(22)B)(27)D)(32)B)(13)B)(18)B)(23)B)(28)C)(33)D)(14)C)(19)C)(24)C)(29)D)(34)A)(15)B)(20)D)(25)D)(30)B)(35)B)二、填空題(1)45(2)類(3)關(guān)系(4)靜態(tài)分析(5)物理獨(dú)立性breakint*p=DATA=3.5213A23B2213PARENTSONbooloperator!(Bounce);(Bounce后可以跟一個變量名)[14]real+a.real,imag+a.imag[15]FUN<double>(7)或FUN<double,int>(7)九月(1)下列選項中不符合良好程序設(shè)計風(fēng)格的是oA)、源程序要文檔化B)、數(shù)據(jù)說明的次序要規(guī)范化C)、避免濫用got。語句D)、模塊設(shè)計要保證高耦合,高內(nèi)聚(2)從工程管理角度,軟件設(shè)計一般分為兩步完成,它們是 0A)、概要設(shè)計與詳細(xì)設(shè)計B)、數(shù)據(jù)設(shè)計與接口設(shè)計C)、軟件結(jié)構(gòu)設(shè)計與數(shù)據(jù)設(shè)計D)、過程設(shè)計與數(shù)據(jù)設(shè)計(3)下列選項中不屬于軟件生命周期開發(fā)階段任務(wù)的是A)、軟件測試B)、概要設(shè)計C)、軟件維護(hù)D)、詳細(xì)設(shè)計(4)在數(shù)據(jù)庫系統(tǒng)中,用戶所見的數(shù)據(jù)模式為。A)、概念模式B)、外模式C)、內(nèi)模式D)、物理模式(5)數(shù)據(jù)庫設(shè)計的四個階段是:需求分析、概念設(shè)計、邏輯設(shè)計和oA)、編碼設(shè)計B)、測試階段C)、運(yùn)行階段D)、物理設(shè)計(6)設(shè)有如下三個關(guān)系表下列操作中正確的是2006年9月二級C++考試試卷第2頁(共5頁)A)、T=RASB)、T=RUSC)、T=RXSD)、T=R/S(7)下列敘述中正確的是A)、一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大B)、一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小C)、一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小D)、上述三種說法都不對(8)在長為64的有序線性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)為0A)、63B)、640、6D)、7(9)數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的。A)、存儲問題B)、共享問題C)、安全問題D)、保護(hù)問題(10)對下列二叉樹:進(jìn)行中序遍歷的結(jié)果是 。A)、ACBDFEGB)、ACBDFGEC)、ABDCGEFD)、FCADBEG(11)下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中,正確的是。A)、內(nèi)聯(lián)函數(shù)在調(diào)用時發(fā)生控制轉(zhuǎn)移B)、內(nèi)聯(lián)函數(shù)必須通過關(guān)鍵字iniine來定義C)、內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的D)、內(nèi)聯(lián)函數(shù)體的最后一條語句必須是rennin語句2006年9月二級C++考試試卷第3頁(共5頁)(12)下列情況中,不會調(diào)用拷貝構(gòu)造函數(shù)的是。A)、用一個對象去初始化同一類的另一個新對象時B)、將類的一個對象賦予該類的另一個對象時C)、函數(shù)的形參是類的對象,調(diào)用函數(shù)進(jìn)行形參和實參結(jié)合時D)、函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時(13)下列有關(guān)繼承和派生的敘述中,正確的是。A)、如果一個派生類私有繼承其基類,則該派生類對象不能訪問基類的保護(hù)成員B)、派生類的成員函數(shù)可以訪問基類的所有成員C)、基類對象可以賦值給派生類對象D)、如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類(14)下列運(yùn)算不能重載為友元函數(shù)的是oA)、=() 、■!?—H—C)、><>=<=D)、+=-=*=/=(15)關(guān)于在調(diào)用模板函數(shù)時模板實參的使用,下列表述正確的是0A)、對于虛類型參數(shù)所對應(yīng)的模板實參,如果能從模板函數(shù)的實參中獲得相同的信息,則都可以省略B)、對于虛擬類型參數(shù)所對應(yīng)的模板實參,如果它們是參數(shù)表中的最后的若干個參數(shù),F(xiàn)CEADBG則都可以省略C)、對于虛擬型參數(shù)所對應(yīng)的模板實參,若能夠省略則必須省略D)、對于常規(guī)參數(shù)所對應(yīng)的模板實參,任何情況下都不能省略2006年9月二級C++考試試卷第4頁(共5頁)(16)下列關(guān)于輸入流類成員函數(shù)getline。的描述中,錯誤的是。A)、該函數(shù)是用來讀取鍵盤輸入的字符串的B)、該函數(shù)讀取的字符串長度是受限制的C)、該函數(shù)讀取字符串時,遇到終止符便停止D)、該函數(shù)讀取字符串時,可以包含空格(17)下列符號中,正確的C++標(biāo)識符是oA)、enumB)、2bC)、foo-9D)_32(18)下列語句中,錯誤的是oA)、constintbuffer二256;B)、constdoubIe*point;C)、intconstbuf千6尸256;D)、doubIe*constpoint;(19)if語句的語法格式可描述為格式1:if(〈條件〉)<語句)或格式2:if(〈條件))<語句1>else〈語句2>關(guān)于上面的語法格式,下列表述中錯誤的是A)、〈條件>部分可以是一個if語句,例如if(if(a=0)…)…B)、〈條件>部分可以是一個if語句,例如if(…)if(…)…C)、如果在<條件>前加上邏輯非運(yùn)算符!并交換《語句1》和<語句2>的位置,語句功D)、<語句)部分可以是一個循環(huán)語句,例如if(…)whiIe(-)(20)有如下說明inta[10]={1,2,3,4,5,,6,7,8,9,10),*p=a;則數(shù)值為9的表達(dá)式是oA)、*p+9'B)、*(p+8)C)、*p+=9D)、p+72006年9月二級C++考試試卷第5頁(共5頁)(21)或下面的函數(shù)調(diào)用fun(a+b,3,max(n-1)b)則fun的實參個數(shù)是oA)、3B)、40、5D)、6(22)以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是oA)、publicB)、staticC)、protectedD)、private(23)在公有繼承的情況下,允許派生類直接訪問的基類成員包括oA)、公有成員B)、公有成員和保護(hù)成員C)、公有成員、保護(hù)成員和私有成員D)、保護(hù)成員(24)關(guān)于運(yùn)算符重載,下列表述中正確的是oA)、C++已有的任何運(yùn)算符都可以重載B)、運(yùn)算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C)、在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D)、可以通過運(yùn)算符重載來創(chuàng)建C++中原來沒有的運(yùn)算符(25)關(guān)于關(guān)鍵字class和typename,下列表述中正確的是A)、程序中的typename都可以替換為classB)、程序中的class都可以替換為typenameC)、在模板形參表中只能用typename來聲明參數(shù)的類型D)、在模板形參表中只能用class或typename來聲明參數(shù)的類型(26)有如下程序incIude<inostream>incIude<iomanip>usingnamespacestd;intmain(){2006年9月二級C++考試試卷第6頁(共5頁)count?setpresision(3)?fixed?setfiII( )?setw(8);count?12,345??34,567;returnO;)若程序的輸出是:*12。345**34。567則程序中下劃線處遺漏的操作符是oA)、setprecision(3)B)、fixedC)、setfiII('*')D)、stew(8)(27)有如下程序incIude<iostream>#include<iomanip>usingnamespacestd;cIassMyCIass{pubIic:MyClassO{cout?,A";}MyCIass(chare{cout?c;)~MyClass(){sout?,B";});Intmain(){MyCIasspl,*p2p2=newMyCIass('X');deIetep2;returnO;)2006年9月二級C++考試試卷第7頁(共5頁)執(zhí)行這個程序幕上將顯示輸出oA)、ABXB)、ABXBC)、AXBD)、AXBB(28)有如下程序#incIude<iostream>usingnamespacestd;inti=1;cIassFun{pubIic;staticinti;intvaIue(){returni_1}intvaIue()const{returni+1;));intFun;;i=2;intmain(){inti=3;FunFunlconstFunfun2;returnO;若程序的輸出結(jié)果是:123則程序中下劃線處遺漏的語句是OA)、cout?fun1,vaIue0Fun::i?fun2,vaIue();B)、cout?Fun::i?fun10vaIue()?fun2,vaIue();2006年9月二級C++考試試卷第8頁(共5頁)C)、cout?fun1ovaIue()?fun2ovaIue()?Fun::i;D)、cout?fun20vaIue()?fun::i?fun10vaIue();(29)有如下程序#incIude<iostream>usingnamespacestd;cIassObj{staticinti;pubIic:Obj(){i++;)~Obj(){i—;}staticintgetVaI(){teturni;});intObj::i=0;voidf(){0bjob2;cout?ob2ogetVaI();}intmain(){ObjobI;FO;Obj*ob3=newObj;cout?ob3->getVaI();DeIeteob3;cout?0bj::getVaI();ReturnO;)程序的輸出結(jié)果是OA)、232B)、2310、222D)、221(30)有如下程序2006年9月二級C++考試試卷第9頁(共5頁)#incIude<iostream>usingnamespacestd;cIassBase{protected;Base(){cout?,A';}Base(chare){cout?c;});cIassDerived;pubIicBase{pubIic:Derived(chare){cout?c;)};intmain(){Deriveddl(<B,);returnO;)執(zhí)行這個程序屏幕上將顯示輸出OA)、BB)、BAO、ABD)、BB(31)有如下類定義:cIassMyBase{intk;pubIic;MyBase(intn=O):k(n){}intvaIue0const{returnk;}h2006年9月二級C++考試試卷第10頁(共5頁)cIassMyDerived;MyBase{intj;pubIic;MyDerived(inti):j(i){}intgetK0const{returnk;}intgutj0const{returnj;}h編譯時發(fā)現(xiàn)有一處語法錯誤,對這個錯誤最佳準(zhǔn)確的描述是A)、函數(shù)getK試圖訪問基類的私有成員變量KB)、在類MyDerived的定義中,基類名MyBase前缺少關(guān)鍵字publie、protected或privateC)、類MyDerived缺少一個無參的構(gòu)造函數(shù)D)、類MyDerived的構(gòu)造的數(shù)沒有對基數(shù)數(shù)據(jù)成員K進(jìn)行初始化(32)在一個派生類對象結(jié)束其生命周期時A)、先調(diào)用派生類的析構(gòu)函數(shù)后調(diào)用基類的析構(gòu)函數(shù)B)、先調(diào)用基類的析構(gòu)函數(shù)后調(diào)用派生類的析構(gòu)函數(shù)C)、如果基數(shù)沒有定義析構(gòu)函數(shù),則只調(diào)用派生類的析構(gòu)函數(shù)D)、如果派生類沒有定義析構(gòu)函數(shù),則只調(diào)用基類的析構(gòu)函數(shù)(33)有如下的運(yùn)算重載函數(shù)定義:DoubIeoperator+(inti,intk){returndouble(i+k);)但定義有錯誤,對這個錯誤的最準(zhǔn)確的描述是OA)、+只能作為成員函數(shù)重載,而這里的+是作為非成員函數(shù)重載的B)、兩個int型參數(shù)的和應(yīng)該是int型,而這里將+的返回類型聲明為doubIeC)、沒有將運(yùn)算符重載函數(shù)聲明為某個類的友元2006年9月二級C++考試試卷第11頁(共5頁)D)、C++已經(jīng)提供了求兩個int型數(shù)據(jù)之和運(yùn)算符+,不能再定義同樣的運(yùn)算符(34)語句ofstreamf("SALARY。DAT",ios_base::app)的功能是建立流對象f,并試圖打開文件SALARY。DAT與千關(guān)聯(lián),而且。A)、若文件存在,將其置為空文件;若文件不存在,打開失敗B)、若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個新文件C)、若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗D)、若文件存在,打開失??;若文件不存在,建立一個新文件(35)有如下程序#incIude<iostream>usingnamespacestd;cIassA{pubIic:virtuaIVoidfuncI0{cout?<4A1n;)voidfune2(){cout?"A2”;});cIassB:pubIicA{pubIic:voidfund(){cout?"B1”;}voidfunc2(){cout?UB2V;});Intmain(){A*p=newB;p->funcI();2006年9月二級C++考試試卷第12頁(共5頁)p->func2();retumO;)運(yùn)行程序,屏幕上將顯示輸出OA)、B1B2B)、A1A2C)、B1A2D)、A1B2二、填空題(每空2分,共30分)請將每一個空的正確答案寫在答題卡[1]?[15]序號的橫線上,答在試卷上不得分。(1)下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為[2]的任務(wù)是診斷和改正程序中的錯誤。一個關(guān)系表的行為[3]。(4)按“行進(jìn)后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是[4]。(5)數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊列屬于⑸。(6)若有定義語句:b;,則變量b的數(shù)據(jù)類型是⑻。(7)已知數(shù)組a中的元素個數(shù)為n,下列語句的作用是將下標(biāo)為i的元素移動到下標(biāo)為i—1的單元,其中1WiVn。例如,當(dāng)廿4,a中原有數(shù)據(jù)為1,2,3,4時,則移動后a中元素為2,3,4,4O請將語句補(bǔ)充完整:For(inti=0;i<n-1;i++)a[i]=a[7]0(8)已知遞歸函數(shù)f的定義如下:2006年9月二級C++考試試卷第13頁(共5頁)intf(intn){If(n<=1)return1;//遞歸結(jié)束情況eIsereturnn*f(n-2);//遞歸}則函數(shù)調(diào)用語句千⑸的返回值是⑻。(9)創(chuàng)建對象數(shù)組時,對數(shù)組的每一個元素都將調(diào)用一次構(gòu)造函數(shù),如果沒有顯式給出數(shù)組元素的初值,則調(diào)用缺省構(gòu)造函數(shù),下列程序涉及到對象數(shù)組的創(chuàng)建和單個對象的創(chuàng)建,其輸出結(jié)果是[9]。incIude<iostream>usingnamespacestd;cIassFoo{pubIic:Foo(intX){cout?,A”}FooO{});intmain()Foof[3],g(3);returnO;)(10)習(xí)慣性在下列程序的輸出結(jié)果是42,請將畫線處缺失的部分補(bǔ)充完整。incIude<iostream>Usingnamespaceatd;CIassFoo{intvaIue;2006年9月二級C++考試試卷第14頁(共5頁)pubIic:Foo():vaIue(0){)VoidsetVaIue(intvaIue){[10]=value;〃給Foo的數(shù)據(jù)成員value賦值}voidprint(){cout?vaIue;});Intmain()Foof;fosetVaIue(42);foprint();retumO;}(11)如果不能使用多態(tài)機(jī)制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基數(shù)繼承的成員,下列程序沒有使用多態(tài)機(jī)制,其輸出結(jié)果是[11]。incIude<iostream>usingnamespacestd;cIassBase{pubIic:Voidprint(){cout?'B';}};cIassDerived:pubIicBase{pubIicvoidprint(){cout?'D';}}intmain(){2006年9月二級C++考試試卷第15頁(共5頁)Derived*pd=newDreived);Base*pb=pd;pb->print();pd->print();deIetepd;returnO;}(12)在聲明派生類時,如果不顯式地給出繼承方式,缺省的類繼承方式是私有繼承private。已知有如下類定義:cIassBase{protected:voidfun(){});CIassDerived:Base{};則Base類中的成員函數(shù)fun(),在Derived類中的訪問權(quán)限是[12](注意:要求填寫private、protected或public中的一項)。(13)在MyClass類的定義中,對賦值運(yùn)算符二進(jìn)行重載。請將畫線處缺失的部分補(bǔ)充完整。[13]MyClass::operator=(constMyCIassrhs)if(this=&rhs)return*this;vaIue=rhsovaIue;return*this;)2006年9月二級C++考試試卷第16頁(共5頁)(14)插入排序算法的主要思想是:每次從未排序序列中取出一個數(shù)據(jù),插入到已排序序列中的正確位置,InsertSort類的成員函數(shù)sort()實現(xiàn)了插入排序算法,請將畫線處缺失的部分補(bǔ)充完整。cIassInsertSort{pubIic:InsertSort(int*a0,intnO):a(aO),n(n0){}〃參數(shù)組首地址,n是數(shù)組元素個數(shù)voidsort(){〃此函數(shù)假設(shè)已排離序列初始化狀態(tài)只包含a[0],未排序序列初始為a[1]…a[n-l]for(inti=1;i<n;++i);intj;for([14];j>0;—j){if(t>a[j-1])break;a[j]=a[j-1];)protected:int*a,n;〃指針a用于存放數(shù)組首地址,n用于存放數(shù)組元素個數(shù)};(15)下列程序的輸出結(jié)果是[15]#incIude<iostream>usingnamespacestd;cIassA{intapubIic:AO:a(9){)2006年9月二級C++考試試卷第17頁(共5頁)virtuaIvoidprint0const{cout?a;);};cIassB:pubIicA{charb;pubIic:B(){b=S;}voidprint()const{cout?b;});voidshow(Aa&X){X,print()}intmain(){Ad1;*p;Bd2;p—&d2;d1,print();d2,print();p->print();show(d1);show(d2);returnO;}2006年9月全國計算機(jī)等級考試二級C++筆試答案一、選擇題TOC\o"1-5"\h\z01、 D 02、 A 03、 C 04、 B 05、 D06、 C 07、 D 08、 D 09、 B 10、 A2006年9月二級C++考試試卷第18頁(共5頁)11、 C 12、 D 13、 D 14、 A 15、 DA 22、 B 23、 B 24、 C 25、 BD 27、 D 28、 A 29、 A 30、 BA 32、 B 33、 C 34、 B 35、 C2007年4月全國計算機(jī)等級考試二級C++筆試試題及答案一、選擇題(每小題2分,共70分)下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。(1)下列敘述中正確的是。A)算法的效率只與問題的規(guī)模有關(guān),而與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān).B)算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量C)數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)是一一對應(yīng)的.D)算法的時間復(fù)雜度與空間復(fù)雜度一定相關(guān).(2)在結(jié)構(gòu)化程序設(shè)計中,模塊劃分的原則是。A)各模塊應(yīng)包括盡量多的功能B)各模塊的規(guī)模應(yīng)盡量大C)各模塊之間的聯(lián)系應(yīng)盡量緊密D)模塊內(nèi)具有高內(nèi)聚度,模塊間具有低耦合度(3)下列敘述中正確的是。A)軟件測試的主要目的是發(fā)現(xiàn)程序中的錯誤.B)軟件測試的主要目的是確定程序中錯誤的位置.C)為了提高軟件測試的效率,最好由程序編制者自己來完成軟件測試的工作D)軟件測試是證明軟件沒有錯誤(4)下面選項中不屬于面向?qū)ο蟪绦蛟O(shè)計特征的是。A)繼承性B)多態(tài)性C)類比性D)封裝性(5)下列對列的敘述正確的是。A)隊列屬于非線性表B)隊列按“先進(jìn)后出”的原則組織數(shù)據(jù)C)隊列在隊尾刪除數(shù)據(jù)D)隊列按“先進(jìn)先出”原則組織數(shù)據(jù)(6)對下列二叉樹進(jìn)行前序遍歷的結(jié)果為DYBEAFCZXYDEBFZXCAABDYECFXZABCDEFXYZ(7)某二叉樹中有n個度為2的結(jié)點則該二叉樹中的葉子結(jié)點數(shù)為n+1n-12nn/2(8)在下列關(guān)系運(yùn)算中,不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)的是。A)井B)交C)投影D)笛卡兒乘積(9)在E-R圖中,用來表示實體之間是聯(lián)系的圖形是。A)矩形B)橢圓形C)菱形D)平行四邊形(10)下列敘述中錯誤的是。A)在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致.B)數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題C)數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫D)數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持(11)為了取代C中帶參數(shù)的宏,在C++中使用A)重載函數(shù)B)內(nèi)聯(lián)函數(shù)C)遞歸函數(shù)D)友元函數(shù)(12)下列關(guān)于類定義的說法中,正確的是A)類定義中包括數(shù)據(jù)成員和函數(shù)成員的聲明B)類成員的缺省訪問權(quán)限是保護(hù)的C)數(shù)據(jù)成員必須被聲明為私有的D)成員函數(shù)只能在類體外進(jìn)行定義(13)下列關(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ù)(14)通過運(yùn)算符重載,可以改變運(yùn)算符原有的A)操作數(shù)類型B)操作數(shù)個數(shù)C)優(yōu)先級D)結(jié)合性(15)有如下函數(shù)模板:templateTsouare(Tx) (retumx*x;)基中T是A)函數(shù)形參B)函數(shù)實參C)模板形參D)模板實參(16)使用輸入輸出操作符setw,可以控制A)輸出精度B)輸出寬度C)對齊方式D)填充字符(17)下列字符串中,不可以用作C++標(biāo)識符的是y_2006TESTHReturnswitch(18)字面常量42、4.2、42L的數(shù)據(jù)類型分別是long、doubleintlong、float、intC)int>double>longD)int、float、long(19)執(zhí)行下列語句段后,輸出字符的個數(shù)是fbr(inti=50;1>1;一i)cout?n*"48495051(20)有如下程序段inti=0,j=l;int&r=i;//①r=j;//int*p=&i;//*p=&r;//④基中會產(chǎn)生編譯錯誤的語句是A)④B)③C)②D)①(21)有如下函數(shù)定義:voidfunc(inta,int&b){a++;b++;}若執(zhí)行代碼段:intx=0,y=lfiinc(x,y);則變量x和y值分別是0和11和10和21和2(22)有如下程序:#includeusingnamespacestd;classA{publicstaticinta;voidinit(){a=l;}A(inta=2){init();a++;}};intA:;a=0Aobj;Intmain()cout<retumO;運(yùn)行時輸出的結(jié)果是0123(23)下列有關(guān)繼承和派生的敘述中,正確的是A)派生類不能訪問基類的保護(hù)成員B)作為虛基類的類不能被實例化C)派生類應(yīng)當(dāng)向基類的構(gòu)造函數(shù)傳遞參數(shù)D)虛函數(shù)必須在派生類中重新實現(xiàn)(24)下列運(yùn)算符中,不能被重載的是A)&&B)!=.++(25)下列函數(shù)模板的定義中,合法的是templateTabs(Tx){returnx<0-x:x;}templateclassTabs(Tx){retumx<0-x;x;}templateTabs(Tx){returnx<0-x;x;}templateTabs(Tx){returmx<0-x;x;}(26)在語句cin?data;中,cin是A)C++的關(guān)鍵字B)類名C)對象名D)函數(shù)名(27)有如下程序:#includeusingnamespacestd;classtest{private:inta;public:test(){cout?nconstructorv<test(inta){cout<test(consttest&_test)(a=_testa;cout?,,copyconstructor,,<}test(){cout?vdestructor<};intmain()testA(3)returnO;運(yùn)行時輸出的結(jié)果是3constructordestruclorcopyconstructor3dstructordestruclor(28)若有如下類聲明classMyClass(public:MyClass(){cout?l;執(zhí)行下列語句MyClassa,b[2],*P[2]以后,程序的輸出結(jié)果是111111111D11111(29)有如下程序*#includeusingnamespacestd;classpoint(public:staticintnumber;public:point(){number++point(){number-;imtpoint::number=0;voidmain(){point*ptr;printA,B;{point*ptr_point=newpoint{3}ptr=ptr_point;)pointC;cout<delete[]ptr;)運(yùn)行時輸出的結(jié)果是346D)7(30)如果不使用多態(tài)機(jī)制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基類繼承的成員,有如下程序,沒有使用多態(tài)機(jī)制。#includeusingnamespacestd;classBase{inta,b;public:Bace(intx,inty){a=x;b=y;}Voidshow(){cout<}clsaaDerived:publicBase{intc,d;public:Derived(intx,inty,intz,intm):Base(x,y){c=z;d=m;)Voidshow(){cout<}intmain()(BaseB1(50,50),*pb;DerivedDI(10,20,30,40)Pb=&Dl;Pb->show()Return0;}運(yùn)行時輸出的結(jié)果是10,2030,4020,3050,50(31)有如下程序:#includeusingnamespacestd;classA(public;A(inti){x=i;}Voidsispa(){cout<Private:intx;};classB;publicApublic;B(inti):A(i+10){x=i;}vouddispb(){dispa();cout<Private:Intx;};intmain()(Bb(2);b.dispb()return0:)運(yùn)行時輸出的結(jié)果是10,212,1012,2(32)虛函數(shù)支持多態(tài)調(diào)用,一個基類的指針可以指向派生類的對象,而且通過這樣的指針調(diào)用虛函數(shù)時,,被調(diào)用的是指針?biāo)傅膶嶋H對象的虛函數(shù),而非虛函數(shù)不支持多態(tài)調(diào)用。有如下程序:#includeusingnamespacestd;classBase(public:virtualvoidf(){cout?nR)+”;)voidg(){cout?“g0+”;classDerived:publicBasepublic:voidf(){cout?n價”;voidg(){cout?^g+“;intmain()(Derivedd;Base*p=&d;p->f();p->g()return0:}運(yùn)行時輸出的結(jié)果是f+g+K)+g+f+gO+R)+g0+(33)下面程序中對一維坐標(biāo)點類Point進(jìn)行運(yùn)算符重載#includeusingnamespacestd;classpoint{public:point(intval){x=val;}point&operator++(){x++;retum*this;}printoperator++(int){pointold=*this,++(*this);retumold;}intGetX()const{returnx;}private:intx;2007年4月二級C++考試試卷第8頁(共5頁))intmain()(pointa(10)cout?(++a).GetX()cout<return編譯和運(yùn)行情況是A)運(yùn)行時輸出1011B)運(yùn)行時輸出1111C)運(yùn)行時輸出1112D)編譯有錯(34)有如下程序:#includeusingnamespacestd;intmain(){charstr[100],*p;cout?,,pleaseinputastring:v;cin?str;p=str;for(inti=0;*p!=”\0”;p++,i++);cout?i<return0;運(yùn)行這個程序時,若輸入字符串為abcdefgabed則輸出結(jié)果是71213100(35)有如下程序::#includeusingnamespacestd:classSample(friendlongfun(Samples);public:Sample(longa){x=a;}Private:longx;};longfun(Samples)(if(s.x<2)return1;returns.x*fun(Sample(s.x-a));intmain()intsum=Ofbr(inti=0;i<6;i++){sum+=ftm(Sample(i);)}cout<return0;}運(yùn)行時輸出的結(jié)果是1201615434二、填空題(每空2分,共30分)請將每一個空的正確答案寫在答題卡[1】?【15】序號的橫線上,答在試卷上不得分。(1)在深度為7的滿二叉樹中,度為2的結(jié)點個數(shù)為【1】。(2)軟件測試分為白箱(盒)測試和黑箱(盒)測試,等價類劃分法屬于【2】測試。(3)在數(shù)據(jù)庫系統(tǒng)中,實現(xiàn)各種數(shù)據(jù)管理體制功能的核心軟件稱為L3L(4)軟件生命周期可分為多個階段,一般分為定義階段、開發(fā)和維護(hù)階段。編碼和測試屬于【4】階段。(5)在結(jié)

溫馨提示

  • 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

提交評論