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

下載本文檔

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

文檔簡介

國家二級C++機試(選擇題)模擬試卷24(共9套)(共235題)國家二級C++機試(選擇題)模擬試卷第1套一、選擇題(本題共21題,每題1.0分,共21分。)1、下列關(guān)于成員函數(shù)特征的描述中,錯誤的是()。A、成員函數(shù)一定是內(nèi)聯(lián)函數(shù)B、成員函數(shù)可以重載C、成員函數(shù)可以設(shè)置參數(shù)的默認值D、成員函數(shù)可以是靜態(tài)的標(biāo)準(zhǔn)答案:A知識點解析:因為成員函數(shù)可以在類體內(nèi)定義,也可以在類體外定義,所以成員函數(shù)不一定都是內(nèi)聯(lián)函數(shù);成員函數(shù)可以重載,可以設(shè)置參數(shù)的默認值,成員函數(shù)可以是靜態(tài)的。2、設(shè)一棵完全二叉樹共有700個結(jié)點,則此二叉樹中的葉子結(jié)點數(shù)為()。A、85B、120C、250D、350標(biāo)準(zhǔn)答案:D知識點解析:①具有n個結(jié)點的完全二叉樹的深度為[long2n]+1,計算出該完全二叉樹的深度為10。②設(shè)度為0的結(jié)點(即葉子結(jié)點)為n0,度為1的結(jié)點為n1,度為2的結(jié)點為n2,總結(jié)點數(shù)為n,深度為k。n=n1+n2+n0,出于n0=n2+1則n2=n0一1,故n=n1+n0一1+n0=n1+2n0一1。由于完全二叉樹中度為1的結(jié)點數(shù)只有兩種可能:0或1。③假設(shè)度為1的結(jié)點數(shù)為0即滿二叉樹,根據(jù)滿二叉樹的定義,其2m一1個結(jié)點,根據(jù)以上計算所得的深度10來計算,應(yīng)有210一1=1024一1=1023個結(jié)點,顯然與題目中700個結(jié)點不符。因此,度為1的結(jié)點數(shù)必然為1。故n=n1+2n0一1=1+2n0一1=2n0,則n0=n/2=700/2=350.3、對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為()。A、log2nB、n/2C、nD、n+1標(biāo)準(zhǔn)答案:C知識點解析:在進行順序查找過程中,如果被查的元素是線性表中的最后一個元素,或者被查元素根本不在線性表中,則為了查找這個元素需要與線性表中的所有元素進行比較,這是順序查找的最壞情況,需要比較的次數(shù)為n次。4、設(shè)某棵樹的度為3,其中度為3、1、0的結(jié)點個數(shù)分別為3、4、15。則該樹中總結(jié)點數(shù)為A、22B、30C、35D、不可能有這樣的樹標(biāo)準(zhǔn)答案:B知識點解析:本題采用畫圖法來求出結(jié)果。首先先畫出包含3個度為3的結(jié)點;然后再添加4個度為1的結(jié)點,此時最大度為0的結(jié)點數(shù)為8。根據(jù)題目中描述的度為0的結(jié)點數(shù)有15個,這時要在書中添加度為2的結(jié)點,直到度為0的結(jié)點數(shù)位15。畫圖結(jié)束后,不管是什么樣的樹,總結(jié)點數(shù)都是30。5、某類中有一個無參且無返回值的常成員函數(shù)Show,則正確的Show函數(shù)原型是()。A、constvoidShow();B、voidconstShow();C、voidShow()const;D、voidShow(const);標(biāo)準(zhǔn)答案:C知識點解析:常成員函數(shù)的說明格式如下:<返回類型><成員函數(shù)名>(<參數(shù)表>)const;,所以對于本題來說無參且無返回值的常成員函數(shù)show,其正確的函數(shù)原型是選項C)。6、數(shù)據(jù)庫設(shè)計的四個階段是:需求分析、概念設(shè)計、邏輯設(shè)計和()。A、編碼設(shè)計B、測試階段C、運行階段D、物理設(shè)計標(biāo)準(zhǔn)答案:D知識點解析:數(shù)據(jù)庫設(shè)計目前一般采用生命周期法,即把整個數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)分解成目標(biāo)獨立的四個階段。它們分別是需求分析階段、概念設(shè)計階段、邏輯設(shè)計階段、物理設(shè)計階段。7、在下列橫線處應(yīng)添加的語句是()。classBase{public:voidfun(){cout<<"Base::fun"<<endl;}};classDerived:publicBase{public:voidfun(){//顯示調(diào)用基類的fun函數(shù)cout<<"Derived::fun"<<endl;}};A、Derived::funB、Base::fun();C、Pubic::funD、fun();標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是成員函數(shù)的調(diào)用。因為橫線處的作用是調(diào)用基類的fun函數(shù),又因為派生類中也有fun()函數(shù),所以必須對fun()函數(shù)加以限定,即Base::fun();。8、有如下程序#include<iostream>usingnamespacestd;intmain(){chara;cin>>a;if(a=’*’)cout<<"***"<<endl;elsecout<<"###"<<endl;return0;}輸入字符+時,程序的運行結(jié)果是()。A、***B、###C、***###D、無輸出標(biāo)準(zhǔn)答案:A知識點解析:本題的考點是雙分支選擇語句的執(zhí)行流程,答題的關(guān)鍵點在于選擇條件的判定。雙分支選擇語句的執(zhí)行流程是首先計算if后表達式的值,如果表達式的值為非零,則執(zhí)行if后面的分支,否則執(zhí)行與其匹配的else后面的分支。本題執(zhí)行時雖然輸入變量a的值為‘+’,但是在執(zhí)行if后括號內(nèi)表達式(a=’*’)的時,由于此表達式為賦值表達式,因此表達式的值為賦值號右邊的值’*’,其ASCII碼的值非零,執(zhí)行if后面的輸出語句“***”后回車。9、有如下程序:#include<iostream>usingnamespacestd;intmain(){inti,s=0;for(i=1;s<20;i+=2)s+=i*i;cout<i<<end1;return0;}運行這個程序的輸出結(jié)果是()。A、3B、5C、7D、9標(biāo)準(zhǔn)答案:C知識點解析:在這段程序中for循環(huán)共執(zhí)行3次,每次循環(huán)變量i的值增2,在執(zhí)行第三次循環(huán)語句時,變量s的值等于25,大于20而退出循環(huán),此時再執(zhí)行循環(huán)變量i加2運算,所以最后變量i的值等于7。10、要定義一個具有5個元素的一維數(shù)組vect,并使其各元素的初值依次是30,50,-88,0和0,則下列定義語句中錯誤的是()。A、intvect[]={30,50,-88};B、intvect[]={30,50,-88,0,0};C、intvect[5]={30,50,-88};D、intvect[5]={30,50,-88,0,0};標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是一維數(shù)組定義時的初始化。當(dāng)數(shù)組聲明時沒有給出數(shù)組的大小但是有初始化列表時,數(shù)組的大小就由列表中元素的個數(shù)來確定。所以選項A中數(shù)組只定義3個元素,不符合題目。11、定義學(xué)生選修課程的關(guān)系模式:SC(S#,Sn,C#,Cn,G)(其屬性分別為學(xué)號、姓名、課程號、課程名、成績)。則對主屬性部分依賴的是A、S#→SnB、(S#,C#)→GC、(S#,C#)→S#D、(S#,C#)→C#標(biāo)準(zhǔn)答案:A知識點解析:關(guān)系模式SC中,學(xué)號是學(xué)生的唯一編碼,姓名對主屬性具有依賴。12、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assMyClass{public:MyClass(){++count;)~MyClass(){——count;)staticintgetCount(){retumcount;}private:staticintcount;};intMyClass::count0;intmain0{MyClassobj;cout<<o(jì)bj.getCounto;MyClass*ptr=newMyClass;cout<<MyClass::getCount0;deleteptr;cout<<MyClass::getCount();return0;}程序的輸出結(jié)果是()。A、121B、232C、221D、122標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是靜態(tài)成員。靜態(tài)成員的特性是不管這個類創(chuàng)建了多少對象,它的靜態(tài)成員都只有一個拷貝副本,這個副本被所有屬于這個類的對象共享。題目中,首先定義了obj對象,其構(gòu)造函數(shù)使靜態(tài)數(shù)據(jù)成員count增l,故輸出“1”;然后通過指針動態(tài)創(chuàng)建了MyClass類的對象,構(gòu)造函數(shù)被再次調(diào)用,count變?yōu)?,輸出“2”;接著刪除創(chuàng)建的MyClass類的對象,調(diào)用析構(gòu)函數(shù),count減1變?yōu)?,輸出“1”。故最終輸出結(jié)果是121。13、有如下程序:#include<iostream>risingnamespacestd;classA{public:staticinta;voidinit(){a=1;}A(inta=2){int();a++;}.};intA::a=0;Aobj;intmain(){cout<<o(jì)bj.a(chǎn):return0;j}運行時輸出的結(jié)果是()。A、0B、1C、2D、3標(biāo)準(zhǔn)答案:B知識點解析:此題實際考查的是變量作用域的屏蔽效應(yīng)。在C++中,當(dāng)標(biāo)識符的作用域發(fā)生重疊時,在一個函數(shù)中聲明的標(biāo)識符可以屏蔽函數(shù)外聲明的標(biāo)識符或全局標(biāo)識符。聲明類A的全局對象時,構(gòu)造函數(shù)首先調(diào)用int函數(shù),但由于靜態(tài)成員變量a被構(gòu)造函數(shù)內(nèi)部的形參a所屏蔽所以a++改變的是形參a的值,對靜態(tài)成員變量a沒有影響。14、下列有關(guān)類繼承的敘述中,錯誤的是()。A、繼承可以實現(xiàn)軟件復(fù)用B、虛基類可以解決由多繼承產(chǎn)生的二義性問題C、派生類構(gòu)造函數(shù)要負責(zé)調(diào)用基類的構(gòu)造函數(shù)D、派生類沒有繼承基類的私有成員標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是類繼承。派生類繼承了基類的(全部數(shù)據(jù)成員,私有成員),只是基類的私有成員在派生類中是隱藏的,只能在基類內(nèi)部訪問,故選項D錯誤。15、某類中有一個無參且無返回值的常成員函數(shù)Show,則正確的Show函數(shù)原型是()。A、constvoidShow();B、voidconstShow();C、voidShow()const;D、voidShow(const);標(biāo)準(zhǔn)答案:C知識點解析:常成員函數(shù)的說明格式如下:<返回類型><成員函數(shù)名>(<參數(shù)表>)const;,所以對于本題來說無參且無返回值的常成員函數(shù)show,其正確的函數(shù)原型是選項C)。16、在下列枚舉符號中,用來表示“相對于當(dāng)前位置"文件定位方式的是()。A、ios—base::curB、ios—base::begC、iosbase::outD、iosbase::end標(biāo)準(zhǔn)答案:A知識點解析:C++流的定位方式(也就是指針移動方式)有三種,被定義為ios-base::seek_dir中的一組枚舉符號:iosbase::beg相當(dāng)于文件首;iosbase:cur相當(dāng)于當(dāng)前位置(負數(shù)表示當(dāng)前位置之前);iosbase::end相對于文件尾。17、在一個派生類的成員函數(shù)中,試圖調(diào)用其基類的成員函數(shù)"voidf();",但無法通過編譯。這說明()。A、f()是基類的私有成員B、f()是基類的保護成員C、派生類的繼承方式為私有D、派生類的繼承方式為保護標(biāo)準(zhǔn)答案:A知識點解析:在派生類對基類的三種繼承形式中,都無法對基類的私有成員訪問A正確。在B中,三種繼承方式都能訪問基類的保護成員,故B不正確。C選項的情況在f()是基類私有成員情況下是對的,但是還有別的可能,并不一定正確。同樣D也不一定正確。18、有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfun1(){cout<<’’Base\n’’;}virtualvoidfun2(){cout<<’’Base\n’’;}};classDerived:publicBase{public:voidfun1(){cout<<’’Derived\n’’;}voidfun2(){cout<<’’Derived\n’’;}};voidf(Base&b){b.fun1();b.fun2();}intmain(){Derivedobj;f(obj);return0:}執(zhí)行這個程序的輸出結(jié)果是()。A、BaseBaseB、BaseDerivedC、DerivedBaseD、DerivedDerived標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是虛函數(shù)的概念。在C++語言中,一個派生類的對象可以被它的任何一個基類的指針?biāo)赶?,若基類和派生類中存在一模一樣的成員函數(shù)。那么通過該基類指針調(diào)用這樣的成員函數(shù)時,若這個成員函數(shù)被定義成虛函數(shù),那么就調(diào)用派生類中的;否則就調(diào)用基類中的。本題中,在f()函數(shù)中,形參b是一個基類的引用,它引用的是主函數(shù)中定義的派生類對象obj,所以在調(diào)用fun1()時,運行的是基類的版本,而fun2()運行的是派生類的版本。19、已知在一個類體中包含如下函數(shù)原型:VOLUMEoperator-(VOLUME)const;下列關(guān)于這個函數(shù)的敘述中,錯誤的是()。A、這是運算符.的重載運算符函數(shù)B、這個函數(shù)所重載的運算符是一個一元運算符C、這是一個成員函數(shù)D、這個函數(shù)不改變類的任何數(shù)據(jù)成員的值標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是運算符的重載。運算符“-”有一元和二元兩種,在本題中它作為一個二元運算符,所以它不能更新對象的數(shù)據(jù)成員,也不能調(diào)用該類中沒有const修飾的成員函數(shù)。20、下列有關(guān)抽象類和純虛函數(shù)的敘述中,錯誤的是()。A、擁有純虛函數(shù)的類是抽象類,不能用來定義對象B、抽象類的派生類若不實現(xiàn)純虛函數(shù),它也是抽象類C、純虛函數(shù)的聲明以“=0;”結(jié)束D、純虛函數(shù)都不能有函數(shù)體標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是抽象類和純虛函數(shù)的概念。純虛函數(shù)可以有函數(shù)體,它的實現(xiàn)由派生類給出。21、有如下程序#include#includeusingnamespacesta;intmain(){cout<A、setprecision(3)B、fixedC、setfill(ˊ*ˊ)D、setw(8)標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是輸出函數(shù)的格式控制。此題中,操作符setprecision的作用是設(shè)置浮點數(shù)的精度;fixed的作用是讓浮點數(shù)按定點格式輸出;setfill的作用是設(shè)置填充字符:setw的作用是設(shè)置輸入輸出的寬度,一次有效的設(shè)置。下劃線處應(yīng)填一個讓34.567的輸出寬度為8的操作符,即setw(8)。國家二級C++機試(選擇題)模擬試卷第2套一、選擇題(本題共22題,每題1.0分,共22分。)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、設(shè)循環(huán)隊列的存儲空間為Q(1:m),初始狀態(tài)為front=rear=m。經(jīng)過一系列正常的操作后,front=1,rear=m。為了在該隊列中尋找值最大的元素,在最壞情況下需要的比較次數(shù)為A、mB、m-1C、m-2D、1標(biāo)準(zhǔn)答案:C知識點解析:經(jīng)過一系列正常的操作后,front=1,rear=m,那么最壞情況下需要的比較次數(shù)為rear-front-1=m-1-1=m-2。3、已知枚舉類型聲明語句為:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};則下列說法中錯誤的是()。A、枚舉常量YELLOW的值為1B、枚舉常量RED的值為6C、枚舉常量BLACK的值為10D、枚舉常量WHITE的值為1標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是枚舉類型的聲明。聲明枚舉類型的語法形式為:enum類型名{枚舉值表)。需注意的是:當(dāng)n個枚舉值全部未賦常量值時,它們自左至右分別與整數(shù)0、l、2、3…n—1對應(yīng):若第i個枚舉值賦常量值為m,則其未賦常量值的后續(xù)枚舉值分別與整數(shù)m+l、m+2…對應(yīng),直到下一個賦了值的枚舉值或結(jié)束。4、規(guī)范化主要為克服數(shù)據(jù)庫邏輯結(jié)構(gòu)中的插入異常,刪除異常以及A、數(shù)據(jù)丟失的問題B、冗余度大的問題C、數(shù)據(jù)不一致的問題D、結(jié)構(gòu)不合理的問題標(biāo)準(zhǔn)答案:B知識點解析:規(guī)范化理論正是用來改造關(guān)系模式,通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴,以解決插入異常、刪除異常、更新異常和數(shù)據(jù)冗余問題。5、已知函數(shù)fun的原型為intfun(int,int,int),下列重載函數(shù)原型中錯誤的是()。A、charfun(int,int),B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);標(biāo)準(zhǔn)答案:D知識點解析:重載函數(shù)至少要在參數(shù)個數(shù)或參數(shù)類型上不同。而選項D中的函數(shù)與原函數(shù)只是函數(shù)類型不同,而其他完全相同(參數(shù)個數(shù)及類型),則不能作為重載函數(shù)來使用。6、下列符號中不屬于C++關(guān)鍵字的是()。A、friendB、namespaceC、continueD、byte標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是C++語言的關(guān)鍵字。Friend是聲明友元函數(shù)或友元類時用到的關(guān)鍵字;namespace是定義或使用名字空間時用到的關(guān)鍵字;continue是終止本次循環(huán)直接開始下一次循環(huán)所用到的關(guān)鍵字;byte是字節(jié)的意思,它不是C++語言中的關(guān)鍵字。7、有如下函數(shù)模板:templateTcast(Uu){returnu;}其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是()。A、cast(i);B、cast<>(i);C、cast(i);D、cast(i);標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是模板函數(shù)的調(diào)用。本題中cast()函數(shù)的實參i只能確定模板參數(shù)u的類型為int,而不能確定另外一個模板參數(shù)T,故選項A、B錯誤:C++語言不允許隱式地將int轉(zhuǎn)化為char*,故選項C錯誤。8、下列關(guān)于類和對象的敘述中,錯誤的是()。A、—個類只能有一個對象B、對象是類的具體實例C、類是對某一類對象的抽象D、類和對象的關(guān)系是一種數(shù)據(jù)類型與變量的關(guān)系標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是類和對象的概念。類是用戶定義的一種數(shù)據(jù)類型,可以使用這個類型來說明一個或多個變量,即對象。9、有如下程序:#includeusingnamespacestd;classSample{friendlongfun(Samples);public:Sample(longa){x=a;}private:longx;};longfun(SampleS){if(s.x<2)return1:returns.x*fun(Sample(s.x-1)):}intmain(){intsum=0;for(inti=0;i<6;i++){sum+=fun(Sample(i));}cout<A、120B、16C、154D、34標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是友元函數(shù)和遞歸函數(shù)。因為fun函數(shù)是Sample類的友元函數(shù),所以fun函數(shù)可以直接訪問Sample類對象的私有成員x。主函數(shù)調(diào)用fun函數(shù),構(gòu)造參數(shù)為0~5。當(dāng)n小于2時,fun函數(shù)返回1,其余返回值為n*fun(n-1)。n取0~5的值時fun(n)依次為1,1,2,6,24,120,累加結(jié)果為154。10、有如下類定義:c1assB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){}};c1assD:publicB{protected:voidfun40{}};若obj是類D的對象,則下列語句中不違反訪問控制權(quán)限的是()。A、obj.funl();B、obj.fun2();C、obj.fun3();D、obj.fun4();標(biāo)準(zhǔn)答案:A知識點解析:派生類D公有繼承父類B.所以obj可以訪問基類B的公有,不能訪問其它成員。11、在C++中,編譯系統(tǒng)自動為一個類生成缺省構(gòu)造函數(shù)的條件是()。A、該類沒有定義任何有參構(gòu)造函數(shù)B、該類沒有定義任何無參構(gòu)造函數(shù)C、該類沒有定義任何構(gòu)造函數(shù)D、該類沒有定義任何成員函數(shù)標(biāo)準(zhǔn)答案:C知識點解析:如果一個類中定義了一個缺省的構(gòu)造函數(shù),則使用該函數(shù)。如果一個類中沒有定義任何構(gòu)造函數(shù),編譯器將生成一個不帶參數(shù)的共有缺省構(gòu)造函數(shù)。12、通過運算符重載,可以改變運算符原有的()。A、操作數(shù)類型B、操作數(shù)個數(shù)C、優(yōu)先級D、結(jié)合性標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是運算符重載。運算符重載具有保持其原有的操作數(shù)個數(shù)、優(yōu)先級、語法結(jié)構(gòu)和結(jié)合性不變的特性。故本題選項A正確。13、有如下程序:#includeusingnamespacestd;classBoat;classCar{public:Car(inti):weight(i){)friendintTotal(constCar&c,constBoat&b);//①private:intweight;};classBoat{public:Boat(inti):weight(i){)friendintTotal(constCar&c,constBoat&b);private:intweight;};intTotal(constCar&c,constBoat&b){//②returnc.weight+b.weight;}intmain(){Carc(10);Boatb(8);cout<<"Thetotalweightis"<A、程序編譯正確B、程序編譯時語句①出錯C、程序編譯時語句②出錯D、程序編譯時語句③出錯標(biāo)準(zhǔn)答案:A知識點解析:程序中定義了類car和類Boat,在兩個類中分別定義他們的構(gòu)造函數(shù)和友元函數(shù)銜end。程序在vC6.0中編譯通過。14、下列關(guān)于模板形參的描述中,錯誤的是()。A、模板形參表必須在關(guān)鍵字template之后B、模板形參表必須用括弧()括起來C、可以用class修飾模板形參D、可以用typename修飾模板形參標(biāo)準(zhǔn)答案:B知識點解析:聲明一個函數(shù)模板的格式是:template<<模板形參表聲明>><函數(shù)聲明>,其中的<模板形參表聲明>是由一個或多個<模板形參>組成(如果是多個,需要用逗號隔開)。每個<模板形參>具有下面的幾種形式:①typename<參數(shù)表>②class<參數(shù)名>③<類型修飾><參數(shù)名>由此可知,模板形參表必須用括?。迹纠ㄆ饋?,而不是(),所以選項B)為正確答案。15、若MyTemp是一個只有一個虛擬類型參數(shù)的類模板,且有如下語句序列MyTemp<double>p2;MyTemp<long>p3[2];編譯系統(tǒng)在處理上面的語句序列時,所生成的模板MyTemp的實例的個數(shù)是()。A、1B、2C、3D、0標(biāo)準(zhǔn)答案:C知識點解析:p2是一個double型的MyTemp,p3[2]是一個long型MyTemp數(shù)組,其中包括兩個元素。所以共有3個MyTemp的實例。16、下列關(guān)于C++流的描述中,錯誤的是()。A、cout>>’A’表達式可輸出字符AB、eof()函數(shù)可以檢測是否到達文件尾C、對磁盤文件進行流操作時,必須包含頭文件fstreamD、以ios_base::out模式打開的文件不存在時,將自動建立一個新文件標(biāo)準(zhǔn)答案:A知識點解析:Cout是一個標(biāo)準(zhǔn)輸出流對象。>>稱之為提取運算符,它的功能是從輸入流中提取數(shù)據(jù)賦值給一個變量。<<為插入運算符,其功能是把表達式的值插入到輸出流中。當(dāng)系統(tǒng)執(zhí)行cout<<x操作時,首先根據(jù)x值的類型調(diào)用相應(yīng)的插入運算符重載器函數(shù),把x的值傳送給對應(yīng)的形參,接著執(zhí)行函數(shù)體,把x的值輸出到顯示器屏幕上,在當(dāng)前屏幕光標(biāo)位置處顯示出來,然后返回ostream流,以便繼續(xù)使用插入運算符輸出下一個表達式的值。對于本題來說,要輸出字符‘A’的值應(yīng)該寫成cout<’A’,因而選項A)是錯誤的。17、有如下類定義classAnimal{public:virtualvoidName0=0;};classKoala:publicAnimal{public:voidName(){/*函數(shù)體略*/)};關(guān)于上述類定義,下列描述中錯誤的是()。A、類Koala是類Animal的派生類B、類Koala中的Name函數(shù)是一個虛函數(shù)C、類Animal中的Name函數(shù)是一個純虛函數(shù)D、語句“Animala;”能夠建立類Animal的一個對象a標(biāo)準(zhǔn)答案:D知識點解析:在類Animal定義了純虛函數(shù)Name(),所以類Animal就是一個抽象類,而抽象類是不能夠建立對象的。18、已知一程序運行后執(zhí)行的第一個輸出操作是cout<<setw(10)<<setfill(’*’)<<1234;則此操作的輸出結(jié)果是()。A、1234B、******1234C、**********1234D、1234******標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是輸入輸出的格式控制。setw()控制的是輸入輸出的寬度;setfill()控制的是輸出的填充字符。所以本題的輸出結(jié)果是******1234。19、有如下的運算符重載函數(shù)定義:doubleoperator+(inti,intk){returndouble(i+k);}但定義有錯誤,對這個錯誤最準(zhǔn)確的描述是()。A、+只能作為成員函數(shù)重載,而這里的+是作為非成員函數(shù)重載的B、兩個int型參數(shù)的和也應(yīng)該是int型,而這里將+的返回類型聲明為doubleC、沒有將運算符重載函數(shù)聲明為某個類的友元D、C++已經(jīng)提供了求兩個int型數(shù)據(jù)之和的運算符+,不能再定義同樣的運算符標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是運算符的重載。C++語言規(guī)定,不能作為非成員函數(shù)重載的運算符有=、[]、()、->以及所有的類型轉(zhuǎn)換運算符,故選項A錯誤;運算符重載對返回值類型沒有限制,故選項B錯誤:C++并不強制要求非成員重載的運算符一定是某個類的友元,所以C選項錯誤;題目中重載的“+”運算符的兩個參數(shù)都是int類型,而C++已經(jīng)提供了求兩個int型數(shù)據(jù)之和的運算符+,編譯器無法區(qū)分應(yīng)該調(diào)用哪一個,所以應(yīng)該選擇D選項。20、有如下程序:#include<iostream>Usingnamespacestd;ClassAmount{imamount;public;Amount(intn=0):amount(n){}IntgetAmount()const{returnamount;}Amount&operator+=(Amounta){amount+=a.a(chǎn)mount;__________return}};intmain(){Amountx(3),y(7);x+=y;cout<<x.getAmount()<<endl;return0;}已知程序的運行結(jié)果是10,則下劃線處缺失的表達式是()。A、*thisB、thisC、&amountD、amount標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是“+”運算符重載和this指針。語句amount+=a.a(chǎn)mount;實現(xiàn)3和7的求和得到amount=10,要使程序的輸出結(jié)果為10,又因為函數(shù)的返回值類型為Amount&,所以橫線處填入*this。21、有如下函數(shù)模板定義:templateTfunc(Tx,Ty){returnx*x+y*y;}在下列對func的調(diào)用中,錯誤的是()。A、func(3,5);B、func(3.0,5.5);C、func(3,5.5);D、func(3,5.5);標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是函數(shù)模板的使用。引用模板函數(shù)和引用一般函數(shù)在語法形式上基本相同。需要注意的是說明一個函數(shù)模板后,當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個對應(yīng)的函數(shù)調(diào)用時,將根據(jù)實參中的類型來確認是否匹配函數(shù)模板中的對應(yīng)形參。本題C選項中,編譯系統(tǒng)從第一個參數(shù)“3”獲得信息“int”和從第二個參數(shù)獲得信息“double”兩者矛盾,錯誤:A、B選項正確;D選項中,函數(shù)名后的是模板實參表,編譯系統(tǒng)會將double型的形參“5.5”自動轉(zhuǎn)化成int類型。22、下列關(guān)于函數(shù)模板的描述中,錯誤的是()。A、從模板實參表和從模板函數(shù)實參表獲得信息矛盾時,以模板實參的信息為準(zhǔn)B、對于常規(guī)參數(shù)所對應(yīng)的模板實參,任何情況下都不能省略C、虛擬類型參數(shù)沒有出現(xiàn)在模板函數(shù)的形參表中時,不能省略模板實參D、模板參數(shù)表不能為空標(biāo)準(zhǔn)答案:D知識點解析:在調(diào)用一個模板函數(shù)時,如果編譯系統(tǒng)能夠從模板實參表判斷其中或全部虛擬類型參數(shù)對應(yīng)的實際參數(shù),而且它們正好是參數(shù)表中最后的若干參數(shù),剛模板實參表中的那幾個參數(shù)可以省略。國家二級C++機試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、下面敘述中正確的是()。A、線性表是線性結(jié)構(gòu)B、棧與隊列是非線性結(jié)構(gòu)C、線性鏈表是非線性結(jié)構(gòu)D、二叉樹是線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識點解析:線性表是最簡單的、最常用的一種線性結(jié)構(gòu)。所謂線性鏈表指的是采用鏈?zhǔn)酱鎯Y(jié)構(gòu)的線性表。棧和隊列其實是一種特殊的線性表。樹是一種簡單的非線性結(jié)構(gòu),二叉樹是樹的一種。2、若有定義語句“inti=2,j=3;”,則表達式i/j的結(jié)果是()。A、0B、0.7C、0.66667D、0.66666667標(biāo)準(zhǔn)答案:A知識點解析:由于變量i、j都是整型變量,所以兩者相除所得的商也是整型數(shù)據(jù)。3、下列敘述中正確的是()。A、有一個以上根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)B、只有一個根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)C、循環(huán)鏈表是非線性結(jié)構(gòu)D、雙向鏈表是非線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:B知識點解析:在數(shù)據(jù)結(jié)構(gòu)中,樹這類的的數(shù)據(jù)結(jié)構(gòu)只有一個根結(jié)點,但它不是線性結(jié)構(gòu)。4、下列語句中,錯誤的是()。A、constintbuffer:256;B、constdouble,lcpoint:C、intconstbuffer:256;D、double*constpoint:標(biāo)準(zhǔn)答案:D知識點解析:const是一個C++關(guān)鍵字,用于限定不允許改變的變量。選項B是指向常量的指針,定義時可以不初始化;選項D是指針常量,定義時必須初始化。故答案為D。5、某二叉樹共有7個結(jié)點,其中葉子結(jié)點只有1個,則該二叉樹的深度為(假設(shè)根結(jié)點在第1層)()。A、3B、4C、6D、7標(biāo)準(zhǔn)答案:D知識點解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。題目中的二叉樹的葉子結(jié)點為1,因此度為2的結(jié)點的數(shù)目為0,故該二叉樹為7層,每層只有一個結(jié)點。6、面向?qū)ο蠓椒ㄖ?,繼承是指()。A、一組對象所具有的相似性質(zhì)B、一個對象具有另一個對象的性質(zhì)C、各對象之間的共同性質(zhì)D、類之間共享屬性和操作的機制標(biāo)準(zhǔn)答案:D知識點解析:面向?qū)ο蠓椒ㄖ?,繼承是使用已有的類定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。7、下面不屬于軟件工程的3個要素是A、工具B、過程C、方法D、環(huán)境標(biāo)準(zhǔn)答案:D知識點解析:軟件工程的3個要素是工具、過程和方法。8、有如下類定義:classAA{inta;public:AA(intn=0):a(n){}};classBB:public從{public:BB(intn)};其中橫線處缺失的部分是()。A、:a(n)||B、:AA(n)||C、{a(n);|D、{a=n;}標(biāo)準(zhǔn)答案:B知識點解析:本題考查公用繼承對基類成員的訪問屬性。公用繼承中,基類的公用成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有,本題中若要給派生類繼承下來基類的私有成員賦值,那么只能調(diào)用基類的成員函數(shù)來對它賦值,所以本題答案為B。9、以下程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;voidfun(char**q){++q;cout<<*q<<endl;)main(){stoicchar*s[]={"HI","HELLO","TEST"};char**p;p=s;fun(p);system("PAUSE");return0:}A、為空B、HIC、HELLOD、TEST標(biāo)準(zhǔn)答案:C知識點解析:由程序main主函數(shù)入手,調(diào)用fun函數(shù),在fun函數(shù)中執(zhí)行“cout<<*q<<endl;”語句實現(xiàn)程序輸出。主函數(shù)中變量char*s[]為指針數(shù)組,char**p表示p指向的字符指針數(shù)據(jù)。*p就代表p指向的字符指針。語句“p=s;”表明p指向字符指針s,而**p則是s[]中的第一個字符串“HI”。主函數(shù)將變量p傳值給函數(shù)fun(char**q)中的q,在函數(shù)體內(nèi)部首先執(zhí)行“++q”語句,就是將q的指針指向s中的下一個字符串,即“HELLO”,所以輸出語句“cout<<*q<<endl:”輸出該字符串值。10、有如下類說明:classTestClass{intx:public:TestClass(intn){x=n;}};classTestClass1:publicTestClass{inty;public:TestClass1(inta,intb);};在構(gòu)造函數(shù)TestClass1的下列定義中,正確的是()。A、TestClass1::TestClass1(inta,intb):x(a),y(b){}B、TestClass1::TestClass1(inta,intb):TestClass(a),y(b){}C、TestClass1::TestClass1(inta,intb):x(a),TestClass1(b){}D、TestClass1::TestClass1(inta,intb1:TestClass(a),TestClass1(b){}標(biāo)準(zhǔn)答案:B知識點解析:題目中程序TestClass為基類,TestClass1為派生類,派生類構(gòu)造函數(shù)的一般形式為:派生類構(gòu)造函數(shù)名(總參數(shù)類表):基類構(gòu)造函數(shù)名(參數(shù)列表){派生類中新增數(shù)據(jù)成員初始化語句}。派生類TestClass1的基類函數(shù)名為TestClass,總參數(shù)為inta,intb,所以選擇B)。11、下面是一個模板聲明的開始部分:templatedouble…由此可知()。A、這可能是一個函數(shù)模板的聲明B、這可能是一個類模板的聲明C、這既可能是一個函數(shù)模板的聲明,也可能是一個類模板的聲明D、這肯定是一個錯誤的模板聲明標(biāo)準(zhǔn)答案:A知識點解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識,從ternplatedouble這里就可以看出這是一個函數(shù)模板的聲明。12、有如下類聲明:classMyBASE{intk:public:voidset(intn){k=n;)intgetOconst{retumk;}};classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE::set(m);j=n;}intgetoconst{returnMyBASE::get0+j;}};則類MyDERIVED中保護的數(shù)據(jù)成員和成員函數(shù)的個數(shù)是()。A、4B、3C、2D、1標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是派生與繼承中的訪問權(quán)限。protected派生:private->不可見:protected->priVate;public一>protected。13、當(dāng)派生類從一個基類保護繼承時,基類中的一些成員在派生類中成為保護成員,這些成員在基類中原有的訪問屬性是()。A、任何B、公有或保護C、保護或私有D、私有標(biāo)準(zhǔn)答案:B知識點解析:基類的公有成員和保護成員只有在以保護繼承方式繼承時,其在繼承類中是保護成員。14、有如下程序段:inti=1,while(1){i++;if(i==10)break;if(i%2==0)cout<<’*’;}執(zhí)行這個程序段輸出字符*的個數(shù)是()。A、10B、3C、4D、5標(biāo)準(zhǔn)答案:C知識點解析:這段程序代碼的功能是計算在1—10(包括10)之間偶數(shù)i的個數(shù),如果整數(shù)i為偶數(shù),則輸出一個‘*’,共有4個偶數(shù),所以共輸出4個‘*’。15、字符串“a+b=12\n\t”的長度為()。A、12B、10C、8D、6標(biāo)準(zhǔn)答案:C知識點解析:題目給出的字符串含有7個字符,再加字符串的結(jié)束字符,所以共8個字符。16、有如下定義:inta[5]={1,3,5,7,9},*p=a;下列表達式中不能得到數(shù)值5的是()。A、a[2]B、a[3]C、*(p+2)D、*p+4標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是指針引用數(shù)組元素。B選項中,a[3]是數(shù)組的第四個元素,即7;其它選項的引用均可得到5。17、關(guān)于函數(shù)重載,下列敘述中錯誤的是()。A、重載函數(shù)的函數(shù)名必須相同B、重載函數(shù)必須在參數(shù)個數(shù)或類型上有所不同C、重載函數(shù)的返回值類型必須相同D、重載函數(shù)的函數(shù)體可以有所不同標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是函數(shù)重載。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。18、有如下程序#inc1ude<iostream>#inc1ude<iomanip>usingnamespacestd;classMyclass{public:Myclass(){cout<’A’;}Myclass(charc){cout<<c,}~Myclass(){cout<’B’;}};intmain(){Myclassp1,*p2;p2=newMyclass(’X’);deletep2;return0;}執(zhí)行這個程序屏幕上將顯示輸出()。A、ABXB、ABXBC、AXBD、AXBB標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是構(gòu)造函數(shù)和析構(gòu)函數(shù)。構(gòu)造函數(shù)在對象被創(chuàng)建的時候由系統(tǒng)自動調(diào)用,而析構(gòu)函數(shù)在對象的生存期即將結(jié)束的時候由系統(tǒng)自動調(diào)用。此題中,主程序在創(chuàng)建MayClass類的對象pl時,調(diào)用MayClass類的默認構(gòu)造函數(shù),輸出字母A;然后在創(chuàng)建*p2對象時,調(diào)用帶字母參數(shù)的構(gòu)造函數(shù),輸出字母X;語句deletep2;調(diào)用析構(gòu)函數(shù),輸出字母B;在主函數(shù)退出時,調(diào)用析構(gòu)函數(shù)清除對象p1,輸出字母B。19、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assPart{public:Part(intx=0):val(x){cout<<val;}~Part0{cout<<val;)private:intval,};c1assWhole{public:Whole(intx,inty,intz=0):p2(x),p1(y),val(z){cout<<val;)~Whole(){cout<<val;}private:Partp1,p2;intval;};intmain(){Wholeobj(1,2,3);return0;}程序的輸出結(jié)果是()。A、123321B、213312C、213D、123123標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是類的構(gòu)造與析構(gòu)。建立類的對象時,構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個基類被繼承時聲明的順序(自左向右)接著執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中聲明的順序,最后執(zhí)行自身的構(gòu)造函數(shù)。析構(gòu)順序與之相反。本題中,Whole類中有兩個Part類的成員p1和p2,根據(jù)它們定義的順序,先構(gòu)造p1再構(gòu)造p2。所以,首先被構(gòu)造的是p1(y),輸出2;第二個被構(gòu)造的是p2(x),輸出1;最后調(diào)用析構(gòu)函數(shù),輸出val的值3;析構(gòu)函數(shù)調(diào)用順序與構(gòu)造函數(shù)相反。故最后輸出213312。20、有如下程序:#includeusingnamespacestd;classBook{public:Book(char*t=""){strcpy(title,t);}____________private:chartitle[40];};classNovel:publicBook{public:Novel(char*t=""):Book(t){}char*Category()const{return"文學(xué)";}};intmain(){Book*pb;pb=newNovel();cout<Category();return0;若程序運行時輸出結(jié)果是“文學(xué)”,則劃線處缺失的語句是()。A、char*Category();B、char*Category()const;C、virtualchar*Category()const;D、virtualchar*Category()const=0;標(biāo)準(zhǔn)答案:D知識點解析:根據(jù)程序運行的結(jié)果為:文學(xué),說明程序執(zhí)行了派生類Novel中的成員函數(shù)*Category()const{return"文學(xué)";},所以在基類Book中要把函數(shù)*Categorv()const定義為純虛函數(shù)。21、有如下程序#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3;Funfun1;constFunfun2;return0;}若程序的輸出結(jié)果是:123則程序中下劃線處遺漏的語句是()。A、cout<<fun1.value()<<Fun::i<<fun2.value();B、cout<<Fun::i<<fun1.value()<<fun2.value();C、cout<<fun1.value()<D、cout<<fun2.value()<<Fun::i<<fun1.value();標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是常成員函數(shù)。const關(guān)鍵字可以用于參與重載函數(shù)的區(qū)分,此時常對象調(diào)用常成員函數(shù),一般對象調(diào)用一般成員函數(shù),當(dāng)類中只有一個常成員函數(shù)時,一般對象也可以調(diào)用該常成員函數(shù)。本題中,通過fun1調(diào)用value()函數(shù)時,是調(diào)用前一個,而通過fun2調(diào)用value()函數(shù)是調(diào)用后一個;另外,value()函數(shù)中訪問的i是類中定義的數(shù)據(jù)成員i,全局變量i在類中被“屏蔽”。fun1.value()輸出i-1=2-1=1;fun2.value()調(diào)用后一個value()函數(shù)輸出i+1=2+1=3;Fun::i是通過類名直接訪問類的靜態(tài)數(shù)據(jù)成員i的值,即2;所以正確的輸出順序是A選項。22、下列運算符中,不能被重載的是()。A、&&B、!=C、.D、++標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是運算符重載。在C++中,只有.、.*、->*、::?:這五個運算符不能重載。23、已知將運算符“+”和“*”作為類Complex的成員函數(shù)重載,設(shè)c1和c2是類Complex的對象,則表達式c1+c2*c1等價于()。A、c1.operator*(c2.operator+(c1))B、c1.operator+(c2.operator*(c1)C、c1.operator*(c1.operator+(c2))D、c2.operator+(c1.operator*(c1)標(biāo)準(zhǔn)答案:B知識點解析:表達式cl+c2*cl的含義是cl加上c2與cl的積。24、已知基類Employee只有一個構(gòu)造函數(shù),其定義如下:Employee::Employee(intn):id(n){}Manager是Employee的派生類,則下列對Manager的構(gòu)造函數(shù)的定義中,正確的是()。A、Manager::Manager(intn):id(n){}B、Manager::Manager(intn){id=n;}C、Manager::Manager(intn):Employee(n){}D、Manager::Manager(intn){Employee(n);}標(biāo)準(zhǔn)答案:C知識點解析:基類的構(gòu)造函數(shù)是帶有參數(shù)的,派生類從基類派生,這就需要在派生類的構(gòu)造函數(shù)名后面顯示的調(diào)用基類的構(gòu)造函數(shù)。25、下列控制對齊方式的操作符中,錯誤的是()。A、internalB、centerC、leftD、right標(biāo)準(zhǔn)答案:B知識點解析:對齊方式的控制操作符left的含義是在設(shè)定的寬度內(nèi)左對齊輸出,右端填己設(shè)定的填充字符;right(此為默認設(shè)置)在設(shè)定的寬度內(nèi)右對齊輸出:internal在設(shè)定的寬度內(nèi)右對齊輸出,但若有符號(一或+),符號置于最左端。國家二級C++機試(選擇題)模擬試卷第4套一、選擇題(本題共33題,每題1.0分,共33分。)1、以下程序的執(zhí)行結(jié)果是()。#include<iostream.h>intfun(intb[],intn){inti,r=1;for(i=0;i<n;i++)r=r*b[i];returnr;}voidmain(){intx,a[]={1,2,3,4,5,6,7,8};x=fun(a,3);cout<<x<<end1;}A、5B、6C、7D、8標(biāo)準(zhǔn)答案:B知識點解析:由程序的main函數(shù)入手,調(diào)用fun函數(shù),其中參數(shù)為數(shù)組a和3。fun函數(shù)的功能是for循環(huán)中由第一個數(shù)組元素開始到第三個元素進行累積。2、下列各組類型聲明符中,含義相同的一組是()。A、unsignedlongint和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是基本類型和派生型。C++語言中,基本類型的字長及其取值范圍可以放大和縮小,改變后的類型就叫做基本類型和派生類型。本題A選項中,unsignedlongint的省略形式為unsignedlong:選項B中,signedshortint的省略形式是short;選項C中,unsignedshort的省略形式是unsignedshort;選項D中,shortint的省略形式是short。3、若X和v是程序中的兩個整型變量,則下列if語句中正確的是()。A、if(x=0)y=l;elsey=2;B、if(x=0)theny=lelseY=2;C、if(x=0)y=lelsey=2;D、if(x==0)y=1;elsey=2;標(biāo)準(zhǔn)答案:A知識點解析:ifelse語句的彤式為:if(<條件>)<語句1>else<語句2>所以符合以上形式的ifelse語句為選項A)。4、下列對于線性鏈表的描述中正確的是()。A、存儲空間不一定連續(xù),且各元素的存儲順序是任意的B、存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面C、存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面D、存儲空間必須連續(xù),且各元素的存儲順序是任意的標(biāo)準(zhǔn)答案:A知識點解析:一般來說,在線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。在線性鏈表中,各數(shù)據(jù)元素之間的前后件關(guān)系是由各結(jié)點的指針域來指示的,指向線性表中第一個結(jié)點的指針head稱為頭指針,當(dāng)head=NULL(或0)時稱為空表。5、數(shù)據(jù)結(jié)構(gòu)主要研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的運算和()。A、數(shù)據(jù)的方法B、數(shù)據(jù)的存儲結(jié)構(gòu)C、數(shù)據(jù)的對象D、數(shù)據(jù)的邏輯存儲標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)元素及其之間的相互關(guān)系和數(shù)據(jù)運算的一門學(xué)科,它包含3個方面的內(nèi)容,即數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和數(shù)據(jù)的運算。6、下面敘述中錯誤的是()。A、軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤B、對被調(diào)試的程序進行“錯誤定位”是程序調(diào)試的必要步驟C、程序調(diào)試通常也稱為DebugD、軟件測試應(yīng)嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性標(biāo)準(zhǔn)答案:A知識點解析:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。軟件測試要嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性。程序調(diào)試通常也稱Debug,對被調(diào)試的程序進行“錯誤”定位是程序調(diào)試的必要步驟。7、有如下類定義:classMyClass{Intvalue;public;MyClass(intn):value(n){}intgerValueoconst{returnvalue;)};則類MyClass的構(gòu)造函數(shù)的個數(shù)是()。A、1個B、2個C、3個D、4個標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是構(gòu)造函數(shù)的概念。構(gòu)造函數(shù)的名字必須與類名相同:構(gòu)造函數(shù)不指定返回值類型;構(gòu)造函數(shù)可以重載;在創(chuàng)建對象時,系統(tǒng)會自動調(diào)用構(gòu)造函數(shù)。8、有如下程序:#includeusingnamespacestd;classVAC{public;intf()const{return3;)intf(){return5;)};Intmain(){VACv1;constVACv2;cout<A、53B、35C、55D、33標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是常成員函數(shù)的應(yīng)用。VAC類中說明了兩個函數(shù),一個是常成員函數(shù),一個是普通函數(shù):在主函數(shù)中說明了兩個對象,通過普通對象vl調(diào)用的是普通函數(shù),輸出5;通過常對象v2調(diào)用的是常成員函數(shù),輸出3。9、有如下程序:#include<iostream>usingnarnespacestd;classA{public:AO{cout<<’’A’’;}};classB{public:B(){cout<<’’B’’;}};classC:publicA{Bb:public:C(){cout<<’’C’’;}};intmain(){Cobj;return0:}執(zhí)行后的輸出結(jié)果是()。A、CBAB、BACC、ACBD、ABC標(biāo)準(zhǔn)答案:D知識點解析:此題中,語句Cobj對象初始化首先調(diào)用基類的構(gòu)造函數(shù)A(),輸出“A”,其次是C類中對象的構(gòu)造函數(shù)的調(diào)用,即調(diào)用BO,輸出“B”;最后是調(diào)用自身的構(gòu)造函數(shù)C(),輸出“C”。10、數(shù)據(jù)庫系統(tǒng)的三級模式不包括()。A、概念模式B、內(nèi)模式C、外模式D、數(shù)據(jù)模式標(biāo)準(zhǔn)答案:D知識點解析:數(shù)據(jù)庫系統(tǒng)的三級模式包括概念模式、外模式和內(nèi)模式(物理模式)。11、—個教師講授多門課程,一門課程由多個教師講授。則實體教師和課程間的聯(lián)系是()。A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系標(biāo)準(zhǔn)答案:D知識點解析:一個教師可講授多門課程,一門課程可由多個教師講授,則實體教師和課程的聯(lián)系是多對多的聯(lián)系。12、若PAT是一個類,則程序運行時,語句“PAT{*ad}[3];”調(diào)用PAT的構(gòu)造函數(shù)的次數(shù)是(A、0B、1C、2D、3標(biāo)準(zhǔn)答案:A知識點解析:語句“PAT(*ad)[3]”定義了含有3個元素的指向類PAT。類型的指針數(shù)組ad。13、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、交C、投影D、并標(biāo)準(zhǔn)答案:A知識點解析:選擇是單目運算,其運算對象是一個表。該運算按給定的條件,從表中選出滿足條件的行形成一個新表作為運算結(jié)果。投影也是單目運算,該運算從表中選出指定的屬性值組成一個新表。自然連接是一種特殊的等價連接,它將表中有相同名稱的列自動進行記錄匹配。自然連接不必指定任何同等連接條件。14、在函數(shù)中,可以用auto、extem、register和static這四個關(guān)鍵字中的一個來說明變量的存儲類型,如果不說明存儲類型,則默認的存儲類型是()。A、autoB、extemC、registerD、static標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是存儲類型。C++語言變量的存儲類型分為如下幾種類型:auto---函數(shù)內(nèi)部的局部變量;static…靜態(tài)存儲分配;extern---全局變量;register---變量存儲在硬件寄存器中。15、下列關(guān)于派生類和基類的描述中,正確的是()。A、派生類成員函數(shù)只能訪問基類的公有成員B、派生類成員函數(shù)只能訪問基類的公有和保護成員C、派生類成員函數(shù)可以訪問基類的所有成員D、派生類對基類的默認繼承方式是公有繼承標(biāo)準(zhǔn)答案:B知識點解析:派生類不論是采用那種繼承方式繼承基類,它的成員函數(shù)只能訪問基類的公有成員和保護成員。16、下列定義語句中,錯誤的是()。A、intpx*;B、char*acp[10];C、char(*pac)[10];D、int(*p)();標(biāo)準(zhǔn)答案:A知識點解析:指針變量聲明的一般形式為:<數(shù)據(jù)類型>*<變量名>,在選項A中,*放在變量名的后面,所以是錯誤的。17、下面模型中為概念模型的是A、網(wǎng)狀模型B、層次模型C、關(guān)系模型D、實體一聯(lián)系模型標(biāo)準(zhǔn)答案:D知識點解析:概念模型足對真實世界中問題域內(nèi)的事物的描述,不是對軟件設(shè)計的描述。概念數(shù)據(jù)模型是面向用戶、面向現(xiàn)實世界的數(shù)據(jù)模型,是與DBMS無關(guān)的。它主要刖來描述一個單位的概念化結(jié)構(gòu)。實體關(guān)系模型(EntityRelationshipDiagram)地理信息系統(tǒng)術(shù)語,該模型直接從現(xiàn)實世界中抽象出實體類型和實體間聯(lián)系,然后用實體聯(lián)系圖(E-R圖)表示數(shù)據(jù)模型,是描述概念世界,建立概念模型的實用工縣。層次模型是指辟{一顆“有向樹”的數(shù)據(jù)結(jié)構(gòu)來表示表示各類實體以及實體間的聯(lián)系,樹中每一個結(jié)點代表一個記錄類型,樹狀結(jié)構(gòu)表示實體型之間的聯(lián)系。層次模型是最早用于商品數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)模型。18、要定義一個引用變量p,使之引用類Myclass的一個對象,正確的定義語句是()。A、Myclassp=Myclass;B、Myclassp=newMyclass;C、Myclass&p=newMyclass;D、Myclassa,&p=a;標(biāo)準(zhǔn)答案:D知識點解析:在選項D)中,定義了MyClass類的一個對象a和引用變量p,并且聲明p初始化為對a的引用。19、Samp1e是一個類,執(zhí)行下面語句后,調(diào)用Samp1e類的構(gòu)造函數(shù)的次數(shù)是()。Samp1ea[2],*P=newSamp1e;A、0B、1C、2D、3標(biāo)準(zhǔn)答案:D知識點解析:在C++中,聲明一個類對象時,編譯程序需要調(diào)用類的構(gòu)造函數(shù)為對象分配存儲空間,進行必須的初始化。在本題的這條語句中,聲明了一個Samp1e類型的包含2個數(shù)組元素的數(shù)組a[2],一個指向類Samp1e對象的指針P,所以Samp1e類的構(gòu)造函數(shù)共調(diào)用了3次。20、有如下語句序列:ifstreaminfile("DATA.DAT");if(infile.good())eout<<"A";else{cout<<"B";ofstreamoutfile("DATA.DAT");if(outfile.fail())cout<<"C";elsecout<<"D";}若執(zhí)行這個語句序列顯示的是BD,則說明文件DATA.DAT()。A、以讀方式打開成功B、以讀方式打開失敗,但以寫方式打開成功C、以讀方式打開失敗,以寫方式打開也失敗D、以讀方式打開成功,以寫方式打開也成功標(biāo)準(zhǔn)答案:B知識點解析:由這個語句序列顯示的結(jié)果是BD,說明執(zhí)行了cout<<"B"和eout<<"D"語句。21、某類中有一個無參且無返回值的常成員函數(shù)Show,則正確的Show函數(shù)原型是()。A、constvoidShow();B、voidconstShow();C、voidShow()const;D、voidShow(const);標(biāo)準(zhǔn)答案:C知識點解析:常成員函數(shù)的說明格式如下:<返回類型×成員函數(shù)名>(<參數(shù)表>)const;,所以對于本題來說無參且無返回值的常成員函數(shù)show,其正確的函數(shù)原型是選項C)。22、有如下類聲明:classFoo{intbar;};則Foo類的成員bar是()。A、公有數(shù)據(jù)成員B、公有成員函數(shù)C、私有數(shù)據(jù)成員D、私有成員函數(shù)標(biāo)準(zhǔn)答案:C知識點解析:此題考查的是類的定義。在定義類的成員變量時,如果沒有使用關(guān)鍵字;所有成員默認定義為private私有權(quán)限。23、在一個派生類的成員函數(shù)中,試圖調(diào)用其基類的成員函數(shù)“voidf();”,但無法通過編譯。這說明()。A、f()是基類的私有成員B、f)是基類的保護成員C、派生類的繼承方式為私有D、派生類的繼承方式為保護標(biāo)準(zhǔn)答案:A知識點解析:在派生類對基類的三種繼承形式中,都無法對基類的私有成員訪問A正確。在B中,三種繼承方式都能訪問基類的保護成員,故B不正確。C選項的情況在f)是基類私有成員情況下是對的,但是還有別的可能,并不一定正確。同樣D也不一定正確。24、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(){cout<<’*’;}MyClass(MyClass&a){cout<<’#’;}~MyClass(){cout<<’@’;}};intmain();MyClassa;Myclassb(a);return0:}運行時的輸出結(jié)果是()。A、*@#@B、#@*@C、*#@@D、#*@@標(biāo)準(zhǔn)答案:C知識點解析:程序在執(zhí)行時,先創(chuàng)建類對象a,輸出*,再創(chuàng)建類對象b,輸出#,然后再依次調(diào)用類對象b和a的析構(gòu)函數(shù),輸出兩個25、下列關(guān)于運算符重載的敘述中,正確的是()。A、通過運算符重載,可以定義新的運算符B、有的運算符只能作為成侵函數(shù)重載C、若重載運算符+,則相應(yīng)的運算符函數(shù)名是+D、重載一個二元運算符時,必須聲明兩個形參標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是運算符重載。C++中,“=”、“[]”、“()”、“一>”以及所有的類型轉(zhuǎn)換符只能作為成員函數(shù)重載,故B選項正確;運算符重載只是賦予已有的運算符多重含義,并不是定義新的運算符;運算符函數(shù)的函數(shù)名就是在運算符前加上關(guān)鍵字operator。26、有如下類定義classMyClasspublic:______________Private:intdata;};若要為MyClass類重載流輸入運算符>>,使得程序中可以“cin>>obj;”形式輸入MyClass類的對象obi,則橫線處的聲明語句應(yīng)為()。A、friendistream&operator>>(istream&is,MyClass&a);B、friendistream&operator>>(istream&is,MyClassa);C、istream&operator>>(istream&is,MyClass&a);D、istream&operator>>(istream&is,MyClassa);標(biāo)準(zhǔn)答案:A知識點解析:C++的輸入運算符>>作為非類成員函數(shù)重載。在一個類中,可將輸入運算符>>聲明為友元函數(shù),在類MyClass重載輸入運算符>>的形式如選項A)所示。27、有如下程序:#include<iostream>usingnamespacestd;classPair{intm;intn;public:Pair(inti,intj):m(i),n(j){}booloperator>(PairP)const;//須在類體外給出定義};intmain(){Pairp1(3,4),p2(4,3),p3(4,5);cout<<(p1>p2)<<(p2>p1)<<(p2>p3)<<(p3>p2);return0;}運算符函數(shù)。perator>的功能是比較兩個Pair對象的大小當(dāng)左邊對象大時,返回ture,否則返回false。比較規(guī)則是首先比較兩對象的m成員,m大者為大:當(dāng)m相等時比較n,n大者為大。程序輸出0101,下列對運算符重載函數(shù)的正確定義是()。A、boolPair::operator>(Pairp)const{if(mt=p.m)returnm>p.m;returnn>p.n;}B、boolPair::operator>(Pairp){if(m!=p.m)returnm>p.m;returnn>p.n;}C、boolPair::operator>(Pairp)eonst{if(m>p.m)returntrue;returnn>p.n;}D、boolPair::operator>(Pairp){if(m>p.m)returntrue;returnn>p.n;}標(biāo)準(zhǔn)答案:A知識點解析:按照比較規(guī)則:首先比較兩對象的m成員,m大者為大:當(dāng)m相等時比較n,n大者為大。這條規(guī)則的用C++寫出來就是選項A。28、有類定義如下:classType{public:Type(inti=0);Typeoperator-(int);friendTypeoperator+(Type,Type);private:intval;};若有對象定義Typec1;則下列語句序列中,錯誤的是()。A、Type(3)+c1;B、c1+Type(3);C、3-c1;D、c1-3:標(biāo)準(zhǔn)答案:C知識點解析:由于在類Type中對“-”進行了重載,所以根據(jù)“-”重載的形式定義,c1-3是正確的,而3-c1是錯誤的表達式。29、若為Fraction類重載前增1運算符++,應(yīng)在類體中將其聲明為()。A、Fraction&operator++();B、Fraction&operator++(int);C、friendFraction&operator++();D、friendFraction&operator++(int);標(biāo)準(zhǔn)答案:A知識點解析:在類Fraction中重載前增1運算符++時,其聲明形式為Fraction&operator++();在類Fraction中重載后增1運算符十+時,其聲明形式為Fraction&operatorH(int);。30、在一個派生類對象結(jié)束其生命周期時()。A、先調(diào)用派生類的析構(gòu)函數(shù)后調(diào)用基類的析構(gòu)函數(shù)B、先調(diào)用基類的析構(gòu)函數(shù)后調(diào)用派生類的析構(gòu)函數(shù)C、如果基類沒有定義析構(gòu)函數(shù),則只調(diào)用派生類的析構(gòu)函數(shù)D、如果派生類沒有定義析構(gòu)函數(shù),則只調(diào)用基類的析構(gòu)函數(shù)標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是派生類對象的析構(gòu)。釋放派生類對象時,析構(gòu)函數(shù)的執(zhí)行順序是:首先調(diào)用派生類自身的析構(gòu)函數(shù);然后調(diào)用類成員對象的析構(gòu)函數(shù);最后調(diào)用基類的析構(gòu)函數(shù)。所以四個選項中只有選項A正確。31、下列關(guān)于函數(shù)模板的描述中,正確的是()。A、函數(shù)模板是一個實例函數(shù)B、使用函數(shù)模板定義的函數(shù)沒有返回類型C、函數(shù)模板的類型參數(shù)與函數(shù)的參數(shù)相同D、通過使用不同的類型參數(shù),可以從函數(shù)模板得到不同的實例函數(shù)標(biāo)準(zhǔn)答案:D知識點解析:函數(shù)模板是一系列相關(guān)函數(shù)的模型或樣板,這些函數(shù)的源代碼相同,只是所針對的數(shù)據(jù)類型不同。數(shù)據(jù)類型成了函數(shù)模板的參數(shù),所以函數(shù)模板是一種參數(shù)化類型的函數(shù)。32、要利用C++流實現(xiàn)輸入輸出的各種格式控制,必須在程序中包含的頭文件是()。A、fstreamB、istrearaC、ostreamD、iomanip標(biāo)準(zhǔn)答案:D知識點解析:要使用setw、fixed等操作符,須包含iomanip這個文件。33、下列關(guān)于函數(shù)模板的描述中,正確的是()。A、函數(shù)模板是一個實例函數(shù)B、使用函數(shù)模板定義的函數(shù)沒有返回類型C、函數(shù)模板的類型參數(shù)與函數(shù)的參數(shù)相同D、通過使用不同的類型參數(shù),可以從函數(shù)模板得到不同的實例函數(shù)標(biāo)準(zhǔn)答案:D知識點解析:函數(shù)模板是一系列相關(guān)函數(shù)的模型或樣板,這些函數(shù)的源代碼相同,只是所針對的數(shù)據(jù)類型不同。數(shù)據(jù)類型成了函數(shù)模板的參數(shù),所以函數(shù)模板是一種參數(shù)化類型的函數(shù)。國家二級C++機試(選擇題)模擬試卷第5套一、選擇題(本題共34題,每題1.0分,共34分。)1、數(shù)據(jù)結(jié)構(gòu)主要研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的運算和()。A、數(shù)據(jù)的方法B、數(shù)據(jù)的存儲結(jié)構(gòu)C、數(shù)據(jù)的對象D、數(shù)據(jù)的邏輯存儲標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)元素及其之間的相互關(guān)系和數(shù)據(jù)運算的一門學(xué)科,它包含3個方面的內(nèi)容,即數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和數(shù)據(jù)的運算。2、一棵二叉樹的前序遍歷結(jié)果是ABCEDF,中序遍歷結(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論