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

下載本文檔

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

文檔簡(jiǎn)介

國家二級(jí)C++機(jī)試(選擇題)模擬試卷13(共9套)(共302題)國家二級(jí)C++機(jī)試(選擇題)模擬試卷第1套一、選擇題(本題共36題,每題1.0分,共36分。)1、有如下程序:#includeusingnamespacestd;classPart{public:Part(intx=0):val(x){cout<A、123321B、213312C、213D、123123標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查帶參數(shù)的構(gòu)造函數(shù)。本題中定義了一個(gè)對(duì)象obj,那么執(zhí)行其構(gòu)造函數(shù),初始化p1,p2的順序是由聲明這兩個(gè)成員的順序決定的,而不是由參數(shù)化列表順序決定,所以本題中,會(huì)先執(zhí)行p1,輸出2,然后執(zhí)行p2輸出1,然后輸出3,最后一次輸出312。所以本題答案為B。2、有如下程序:#ncludeusingnamespacestd;classBase{public:Base(intx=0){cout<A、0B、1C、01D、001標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個(gè)派生類的對(duì)象時(shí),先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù),對(duì)象釋放時(shí),先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。所以本題中定義了一個(gè)對(duì)象d,先執(zhí)行基類的構(gòu)造函數(shù)輸出0,因?yàn)榕缮愔械乃接袛?shù)據(jù)成員為Base,所以還會(huì)執(zhí)行一次基類的構(gòu)造函數(shù)輸出0,最后執(zhí)行派生類的構(gòu)造函數(shù)輸出1,所以本題答案為D。3、下列代碼段中聲明了3個(gè)類:classPerson}};classStudent:publicPerson{};classUndergraduate:Student{};下列關(guān)于這些類之聞關(guān)系的描述中,錯(cuò)誤的是()。A、類Person是類Undergraduate的基類B、類Undergraduate從類Student公有繼承C、類Student是類Person的派生類D、類Undergraduate是類Person的派生類標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查基類和派生類的邏輯關(guān)系,屬于基礎(chǔ)知識(shí),如果沒有指明哪種繼承方式,那么默認(rèn)為私有繼承,所以B選項(xiàng)錯(cuò)誤。4、有如下程序:#includeusingnamespacestd;classBase{public:voidoutput(){cout<<1;}virtualvoidPrint(){cout<<’B’;}};classDerived:publicBase{public:voidoutput(){cout<<2;}voidPrint(){cout<<’D’;}};intnlain(){Base*ptr=newDerived;ptr->output();ptr->Print();deleteptr;retum0;}執(zhí)行這個(gè)程序的輸出結(jié)果是()。A、1BB、1DC、2BD、2D標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在某基類中聲明為virtual并在一個(gè)或多個(gè)派生類中被重新定義的成員函數(shù),本題中定義了一個(gè)指向派生類對(duì)象的基類指針ptr,執(zhí)行ptr->output后,會(huì)執(zhí)行基類的output函數(shù),輸出1,由于Print是虛函數(shù),所以ptr->Print()會(huì)執(zhí)行派生類的Print,即輸出D,所以本題答案為B。5、有如下程序:#includeusingnamespaeestd;classB{public:virtualvoidshow(){cout<<"B";}};classD:publicB{public:voidshow(){cout<<"D";}};voidfun1(B*ptr){ptr->show();}voidfun2(B&ref){ref.show();}voidfun3(Bb){b.show();}intmain(){Bb,*p=newD;Dd;fun1(p);fun2(b);fun3(d);deleteP;retum0;}執(zhí)行這個(gè)程序的輸出結(jié)果是()。A、BBBB、BBDC、DBBD、DBD標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在某基類中聲明為virtual并在一個(gè)或多個(gè)派生類中被重新定義的成員函數(shù),本題中定義類B的對(duì)象b、對(duì)象指針*p=newD以及類D的對(duì)象d;執(zhí)行fun1會(huì)調(diào)用派生類的show函數(shù),因?yàn)閟how函數(shù)為虛函數(shù),而調(diào)用fun2、fun3仍然為基類的show函數(shù),所以本題答案為c。6、C++中的模板包括()。A、對(duì)象模板和函數(shù)模板B、對(duì)象模板和類模板C、函數(shù)模板和類模板D、變量模板和對(duì)象模板標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查函數(shù)模板和類模板,所以答案為C。7、下列關(guān)于類模板的模板參數(shù)的敘述中,錯(cuò)誤的是()。A、模板參數(shù)可以作為數(shù)據(jù)成員的類型B、模板參數(shù)可以作為成員函數(shù)的返回類型C、模板參數(shù)可以作為成員函數(shù)的參數(shù)類型D、模板參數(shù)不能作為成員函數(shù)的局部變量的類型標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查類模板的概念和定義,模板參數(shù)可以作為成員函數(shù)的局部變量的類型。8、有如下語句序列:charstr[10];cin>>str;當(dāng)從鍵盤輸入“Ilovethisgame”時(shí),str中的字符串是()。A、IlovethisgameB、IlovethiC、IloveD、I標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對(duì)象,cin用來接收字符串時(shí),遇“空格”、“TAB”、“回車”時(shí)都會(huì)結(jié)束。所以本題答案為D。9、下列符號(hào)中能夠作為C++標(biāo)識(shí)符的是()。A、constB、2aC、_shapeD、count標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查C++標(biāo)識(shí)符的命名規(guī)則,其規(guī)則有如下幾點(diǎn):①所有標(biāo)識(shí)符必須由字母、數(shù)字或下畫線組成,且必須由字母或下畫線開頭;②所有標(biāo)識(shí)符不能使用C++已有的關(guān)鍵字;③大、小寫字母表示不同意義,即代表不同的標(biāo)識(shí)符。選項(xiàng)A是關(guān)鍵字,選項(xiàng)B不能以數(shù)字開頭,選項(xiàng)D包含了字符"-",且不能以此字符開頭。故答案為C。10、已知枚舉類型聲明語句為:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};則下列說法中錯(cuò)誤的是()。A、枚舉常量YELLOW的值為1B、枚舉常量RED的值為6C、枚舉常量BLACK的值為10D、枚舉常量WHITE的值為1標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C++語言規(guī)定枚舉常量的默認(rèn)值依次等于0,1,…,n-l。也可以給枚舉常量賦初值,方法是:在枚舉常量的后面跟上"=整型常量",在給枚舉常量賦初值時(shí),如果給其中任何一個(gè)枚舉常量賦初值,則其后的枚舉常量將按自然數(shù)的規(guī)則依次賦初值。所以本題答案為D。11、下列敘述中正確的是()。A、棧是一種先進(jìn)先出的線性表B、隊(duì)列是一種后進(jìn)先出的線性表C、棧與隊(duì)列都是非線性結(jié)構(gòu)D、以上三種說法都不對(duì)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:棧是一種先進(jìn)后出的線性表,隊(duì)列是一種先進(jìn)先出的線性表,棧與隊(duì)列都是線性結(jié)構(gòu)。12、軟件測(cè)試的目的是()。A、評(píng)估軟件可靠性B、發(fā)現(xiàn)并改正程序中的錯(cuò)誤C、改正程序中的錯(cuò)誤D、發(fā)現(xiàn)程序中的錯(cuò)誤標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程,測(cè)試要以查找錯(cuò)誤為中心,而不是為了演示軟件的正確功能。不是為了評(píng)估軟件或改正錯(cuò)誤。13、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、軟件集成測(cè)試計(jì)劃B、軟件詳細(xì)設(shè)計(jì)說明書C、用戶手冊(cè)D、軟件需求規(guī)格說明書標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:需求分析階段的工作可以概括為:需求獲取、需求分析、編寫需求規(guī)格說明書、需求評(píng)審四個(gè)方面。所以選擇D。14、軟件生命周期是指()。A、軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程B、軟件從需求分析、設(shè)計(jì)、實(shí)現(xiàn)到測(cè)試完成的過程C、軟件的開發(fā)過程D、軟件的運(yùn)行維護(hù)過程標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個(gè)時(shí)期都屬于軟件生命周期。15、面向?qū)ο蠓椒ㄖ?,繼承是指()。A、一組對(duì)象所具有的相似性質(zhì)B、一個(gè)對(duì)象具有另一個(gè)對(duì)象的性質(zhì)C、各對(duì)象之間的共同性質(zhì)D、類之間共享屬性和操作的機(jī)制標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:繼承是面向?qū)ο蟮姆椒ǖ囊粋€(gè)主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和操作的機(jī)制。16、層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是()。A、記錄長度B、文件的大小C、聯(lián)系的復(fù)雜程度D、數(shù)據(jù)之間的聯(lián)系方式標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),網(wǎng)狀模型是一個(gè)不加任何條件限制的無向圖,關(guān)系模型采用二維表來表示,所以三種數(shù)據(jù)庫的劃分原則是數(shù)據(jù)之間的聯(lián)系方式。17、一個(gè)工作人員可以使用多臺(tái)計(jì)算機(jī),而一臺(tái)計(jì)算機(jī)可被多個(gè)人使用,則實(shí)體工作人員與實(shí)體計(jì)算機(jī)之間的聯(lián)系是()。A、一對(duì)一B、一對(duì)多C、多對(duì)多D、多對(duì)一標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:因?yàn)橐粋€(gè)人可以操作多個(gè)計(jì)算機(jī),而一臺(tái)計(jì)算機(jī)又可以被多個(gè)人使用,所以兩個(gè)實(shí)體之間是多對(duì)多的關(guān)系。18、數(shù)據(jù)庫設(shè)計(jì)中反映用戶對(duì)數(shù)據(jù)要求的模式是()。A、內(nèi)模式B、概念模式C、外模式D、設(shè)計(jì)模式標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:數(shù)據(jù)庫系統(tǒng)的三級(jí)模式是概念模式、外模式和內(nèi)模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,給出了每個(gè)用戶的局部數(shù)據(jù)描述,所以選擇c。內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲(chǔ)結(jié)構(gòu)與物理存取方法。19、有三個(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)解析:關(guān)系T中的元組是R關(guān)系中有而S關(guān)系中沒有的元組的集合,所以進(jìn)行的是差的運(yùn)算。20、T列符號(hào)中能夠作為C++標(biāo)識(shí)符的是()。A、constB、2aC、一shapeD、-count標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查C++標(biāo)識(shí)符的命名規(guī)則,其規(guī)則有如下幾點(diǎn):①所有標(biāo)識(shí)符必須由字母、數(shù)字或下畫線組成,且必須由字母或下畫線開頭;②所有標(biāo)識(shí)符不能使用C++已有的關(guān)鍵字;③大、小寫字母表示不同意義,即代表不同的標(biāo)識(shí)符。選項(xiàng)A是關(guān)鍵字,選項(xiàng)B不能以數(shù)字開頭,選項(xiàng)D包含了字符”一”,且不能以此字符開頭。故答案為C。21、已知枚舉類型聲明語句為:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};則下列說法中錯(cuò)誤的是()。A、枚舉常量YELLOW的值為:1B、枚舉常量RED的值為6C、枚舉常量BLACK的值為10D、枚舉常量WHITE的值為1標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C++語言規(guī)定枚舉常量的默認(rèn)值依次等于0,1,…,n—1。也可以給枚舉常量賦初值,方法是:在枚舉常量的后面跟上“=整型常量”,在給枚舉常量賦初值時(shí),如果給其中任何一個(gè)枚舉常量賦初值,則其后的枚舉常量將按自然數(shù)的規(guī)則依次賦初值。所以本題答案為D。22、執(zhí)行下列語句段后,輸出字符“*”的個(gè)數(shù)是()。for(inti=50;i>l;i-=2)cout<<’*’;A、24B、25C、26D、50標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查for循環(huán)語句,題目中每執(zhí)行完循環(huán)體后,i都會(huì)減2,那么只有50到2之間的偶數(shù)才能輸出“*”,所以總共輸出25次。23、有如下定義: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ù)組的指針,本題中指針變量p指向數(shù)組a,直接使用數(shù)組下標(biāo)即可取值,數(shù)組下標(biāo)是從O開始標(biāo)號(hào)的,所以a[2]能取到5,而a[3]取不到5,C選項(xiàng)中使用指針后移方法能夠取到5,D選項(xiàng)中*木p為1,所以*p+4為5。24、下列語句中錯(cuò)誤的是()。A、constinta;B、constinta=10;C、constint*point=O;D、constim~point=newint(10);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:const是一個(gè)C++語言的關(guān)鍵字,它限定一個(gè)變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量只能被讀,必須初始化。A選項(xiàng)沒有初始化,B、C、D選項(xiàng)都正確。25、已知函數(shù)FA調(diào)用函數(shù)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)解析:如果使用用戶自己定義的函數(shù),而該函數(shù)與調(diào)用它的函數(shù)(即主調(diào)用函數(shù))在同一程序單元中,且位置在主調(diào)用函數(shù)之后,則必須在調(diào)用此函數(shù)之前對(duì)被調(diào)用的函數(shù)作聲明。26、下列關(guān)于運(yùn)算符函數(shù)的描述中,錯(cuò)誤的是()。A、運(yùn)算符函數(shù)的名稱總是1)~[operator為前綴B、運(yùn)算符函數(shù)的參數(shù)可以是對(duì)象C、運(yùn)算符函數(shù)只能定義為類的成員函數(shù)D、在表達(dá)式中使用重載的運(yùn)算符相當(dāng)于調(diào)用運(yùn)算符重載函數(shù)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:運(yùn)算符函數(shù)可以定義為類的友元函數(shù)。所以c選項(xiàng)錯(cuò)誤。27、為了提高函數(shù)調(diào)用的實(shí)際運(yùn)行速度,可以將較簡(jiǎn)單的函數(shù)定義為()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸函數(shù)D、函數(shù)模板標(biāo)準(zhǔn)答案:A知識(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ù)體來替換,一般只將規(guī)模很小而使用頻繁的函數(shù)聲明為內(nèi)聯(lián)函數(shù),可以避免函數(shù)調(diào)用時(shí)間開銷,從而提高運(yùn)行速度。28、若要對(duì):Data類中重載的加法運(yùn)算符成員函數(shù)進(jìn)行聲明,下列選項(xiàng)中正確的是()。A、Data+(Data);B、Dataoperator+(Data);C、Data+operator(Data);D、operator+(Data,Data);標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:根據(jù)重載加法運(yùn)算符的格式,只有B選項(xiàng)正確。29、已知函數(shù)f的原型是voidf(int*a,long&b);,變量v1、v2的定義是:intv1;longv2;下列調(diào)用語句中正確的是()。A、f(v1,&v2);B、f(v1,v2);C、f(&v1,&v2);D、f(&v1,v2);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:函數(shù)參數(shù)的3種傳遞方式:①將變量名作為形參和實(shí)參,即傳值方式;②傳遞變量指針;③引用形參。本題中函數(shù)f的第一個(gè)形參為指針,那么調(diào)用f函數(shù)時(shí),第一個(gè)參數(shù)必須是地址,所以必須是&v1,第二個(gè)形參為引用,所以對(duì)應(yīng)實(shí)參為v2即可。故本題答案為D。30、已知Value是一個(gè)類,value是Value的一個(gè)對(duì)象。下列以非成員函數(shù)形式重載的運(yùn)算符函數(shù)原型中,正確的是()。A、Valueoperator+(Valuev,inti);B、Valueoperator+(Valuev=value,inti);C、Valueoperator+(Valuev,inti=0);D、Valueoperator+(Valuev=value,inti=0);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查運(yùn)算符重載,其中重載運(yùn)算符的函數(shù)不能有默認(rèn)的參數(shù),所以本題答案為A。31、下列關(guān)于運(yùn)算符重載的描述中,正確的是()。A、運(yùn)算符重載為成員函數(shù)時(shí),若參數(shù)表中無參數(shù),重載的是一元運(yùn)算符B、一元運(yùn)算符只能作為成員函數(shù)重載C、二元運(yùn)算符重載為非成員函數(shù)時(shí),參數(shù)表中有一個(gè)參數(shù)D、C++中可以重載所有的運(yùn)算符標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:運(yùn)算符重載為成員函數(shù)時(shí),會(huì)省略一個(gè)參數(shù),如果無參數(shù),表明是一元運(yùn)算符。一元運(yùn)算符既可以作為成員函數(shù)重載,也可以作為非成員函數(shù)重載。二元運(yùn)算符如果作為非成員函數(shù),則參數(shù)表中必須有兩個(gè)參數(shù)。C++有5個(gè)運(yùn)算符不能重載,它們是:(成員訪問運(yùn)算符)、*(成員指針訪問運(yùn)算符)、::(域運(yùn)算符)、sizeof(長度運(yùn)算符)和?:(條件運(yùn)算符)。故本題答案為A。32、有如下類定義:classPoint{private:staticinthow_many;};how—many=0;要初始化Point類的靜態(tài)成員how_many,下畫線處應(yīng)填入的內(nèi)容是()。A、intB、staticintC、intPoint::D、staticintPoint::標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查靜態(tài)數(shù)據(jù)成員,靜態(tài)數(shù)據(jù)成員可以初始化,但只能在類體外進(jìn)行初始化,其一般形式為:數(shù)據(jù)類型類名::靜態(tài)數(shù)據(jù)成員名=初值。所以本題答案為C。33、有如下頭文件:intn();staticintt2();classMA{public:intf3();staticintf4();};在所描述的函數(shù)中,具有隱含的this指針的是()。A、nB、f=!C、13D、f4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:只有類的非靜態(tài)成員函數(shù)才隱含this指針,其作用域是類內(nèi)部,當(dāng)類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員時(shí),編譯器會(huì)自動(dòng)將對(duì)象本身的地址作為一個(gè)隱含參數(shù)傳遞給函數(shù),而不必一定寫上this。所以本題答案為C。34、下列有關(guān)類繼承的敘述中,錯(cuò)誤的是()。A、繼承可以實(shí)現(xiàn)軟件復(fù)用B、虛基類可以解決由多繼承產(chǎn)生的二義性問題C、派生類構(gòu)造函數(shù)要負(fù)責(zé)調(diào)用基類的構(gòu)造函數(shù)D、派生類沒有繼承基類的私有成員標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:3種繼承方式中,派生類繼承了基類的私有成員,但不能被直接訪問,可以通過派生類的友元函數(shù)去訪問基類的私有成員。35、在下列關(guān)鍵字中,不能用來表示繼承方式的是()。A、privateB、staticC、publicD、protected標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:3種繼承方式:公用繼承、私有繼承和保護(hù)繼承分別使用public、private和protected3個(gè)關(guān)鍵字來定義。36、有如下兩個(gè)類定義:classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;protected:doubley2;public:doubley3;};在類YY中保護(hù)成員變量的個(gè)數(shù)是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查保護(hù)繼承中派生類對(duì)基類的訪問屬性,在受保護(hù)繼承中,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,所以基類的成員x2、x3變成了保護(hù)成員,派生類中的y2也是保護(hù)成員,所以共有3個(gè)保護(hù)成員。本題答案為C。國家二級(jí)C++機(jī)試(選擇題)模擬試卷第2套一、選擇題(本題共26題,每題1.0分,共26分。)1、下列關(guān)于C++函數(shù)的說明中,正確的是()。A、內(nèi)聯(lián)函數(shù)就是定義在另一個(gè)函數(shù)體內(nèi)部的函數(shù)B、函數(shù)體的最后一條語句必須是return語句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)解析:此題考查的是有關(guān)函數(shù)的概念。內(nèi)聯(lián)函數(shù)是在函數(shù)定義之前加關(guān)鍵字inline來聲明的函數(shù),而不是定義在另一個(gè)函數(shù)體內(nèi)部的函數(shù),故選項(xiàng)A錯(cuò)誤;無返回值的函數(shù)在執(zhí)行完最后一條語句后,會(huì)自動(dòng)返回而不必加入return語句,故選項(xiàng)B錯(cuò)誤;如果函數(shù)只是返回值類型不同,而其它完全相同,則不能作為函數(shù)重載來使用,故選項(xiàng)D錯(cuò)誤。2、若有下面的函數(shù)調(diào)用:fun(a+b,3,max(n-1,b))則fun的實(shí)參個(gè)數(shù)是()。A、3B、4C、5D、6標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是函數(shù)的調(diào)用。C++中函數(shù)調(diào)用的一般形式為:函數(shù)名(實(shí)參表),其中實(shí)參表是用逗號(hào)分隔的一系列表達(dá)式。因此,本題中fun()函數(shù)的實(shí)參表由a+b、3和max(n-1,b)組成。3、假設(shè)函數(shù)fun已經(jīng)定義,其原型為“voidfun(inta,intb=7,char*p="*");”下列函數(shù)調(diào)用中錯(cuò)誤的是()。A、fun(5)B、fun(5,8)C、fan(6,"##")D、fun(0,0,"==")標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:根據(jù)函數(shù)fun()的定義,其前兩個(gè)形參為整型變量,第三個(gè)形參為字符型變量。所以在調(diào)用時(shí),必須符合形參的數(shù)據(jù)類型,而選項(xiàng)C的第二個(gè)實(shí)參的數(shù)據(jù)類型為字符串,不符合第二個(gè)形參的數(shù)據(jù)類型。4、已知函數(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為正確答案。5、下列函數(shù)原型聲明中,錯(cuò)誤的是()。A、intfunction(intm,intn);B、intfunction(int,int);C、intfunction(intm=3,intn);D、intfunction(int&m,int&n);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C++中,函數(shù)在使用之前要預(yù)先聲明。這種聲明在標(biāo)準(zhǔn)C++中稱為函數(shù)原型,函數(shù)原型給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時(shí)必須提供的參數(shù)個(gè)數(shù)和類型。其語法為:<返回類型><函數(shù)名>(<形參列表>);使用函數(shù)原型說明有兩種形式:①直接使用函數(shù)定義的頭部,并在后面加上一個(gè)分號(hào);②在函數(shù)原型說明中省略參數(shù)列表中的形參變量名,僅給出函數(shù)名、函數(shù)類型、參數(shù)個(gè)數(shù)及次序。在選項(xiàng)C中,給出了形參變量m的初值。6、在對(duì)函數(shù)進(jìn)行原型聲明時(shí),下列語法成分中,不需要的是()。A、函數(shù)返回類型B、函數(shù)參數(shù)列表C、函數(shù)名D、函數(shù)體標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在C++中函數(shù)在使用之前要預(yù)先聲明,這種聲明在標(biāo)準(zhǔn)C++中稱為函數(shù)原型。函數(shù)給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時(shí)必須指明參數(shù)個(gè)數(shù)和類型。7、關(guān)于函數(shù)中的<返回類型>,下列表述中錯(cuò)誤的是()。A、<返回類型>中有可能包含關(guān)鍵字intB、<返回類型>中有可能包含自定義標(biāo)識(shí)符C、<返回類型>中有可能包含字符*D、<返回類型>中可能包含[]標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:<返回類型>又稱為函數(shù)類型,表示一個(gè)函數(shù)所計(jì)算(或運(yùn)行)的結(jié)果值的類型。它可以是C++中已定義的數(shù)據(jù)類犁,也可能是用戶自定義的數(shù)據(jù)類型。但是不能包含[],因?yàn)榉?hào)[]不是一個(gè)數(shù)據(jù)類型。8、有如下程序:#includeusingnamespacestd;classA{public:staticinta;voidinit(){a=1;)A(inta=2){int();a++;)};intA∷a=0;Aobj;intmain(){cout<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沒有影響。9、有如下程序:#includeusingnamespacestd;intmain(){voidfunction(doubleva1);doubleva1;function(va1);cout<A、編譯出錯(cuò),無法運(yùn)行B、輸出:3C、輸出:3.0D、輸出一個(gè)不確定的數(shù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是函數(shù)參數(shù)的傳遞。C++語言中,函數(shù)在傳遞參數(shù)時(shí),總是將實(shí)參的值傳遞給被調(diào)用函數(shù)的形參,即傳值調(diào)用。因此,在函數(shù)中對(duì)形參所作的任何操作都不會(huì)改變實(shí)參的值。10、已知函數(shù)f的原型是voidfi(int*a,long&b);,變量v1、v2的定義是:intv1;loongv2;下列調(diào)用語句中正確的是()。A、f(v1,&v2);B、f(v1,v2);C、f(&v1,&v2);D、f(&v1,v2);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是函數(shù)的調(diào)用。因?yàn)樽兞康亩x是imv1;longv2,而函數(shù)f()的第一個(gè)參數(shù)是指針,第二個(gè)參數(shù)是引用,所以選項(xiàng)D為正確引用。11、在下列原型所示的C++函數(shù)中,按“傳值”方式傳遞參數(shù)的是()。A、voidfl(intx);B、voidf2(int*x);C、voidf3(constint*x);D、voidf4(int&x);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:傳值方式是將實(shí)參復(fù)制到形參中,因此實(shí)參和形參是兩個(gè)不同的變量,有各自的存儲(chǔ)空間,可以把函數(shù)的形參看做是函數(shù)的局部變量。其中BC選項(xiàng)為按低值傳遞D選賢為桉引用傳遞。12、下列關(guān)于函數(shù)參數(shù)的敘述中,正確的是()。A、在函數(shù)原型中不必聲明形參類型B、函數(shù)的實(shí)參和形參共享內(nèi)存空間C、函數(shù)形參的生存期與整個(gè)程序的運(yùn)行期相同D、函數(shù)的形參在函數(shù)被調(diào)用時(shí)獲得初始值標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:函數(shù)的實(shí)參與形參是兩個(gè)不同的變量,有各自的存儲(chǔ)空間。函數(shù)形參是函數(shù)的局部變量,在函數(shù)調(diào)用時(shí)獲得初始值。13、有如下程序:#includeusingnamespacestd;voidfl(int&X,int&y){intz=x;x=y(tǒng);y=z;)voidf2(intx,inty){intz=x;x=y(tǒng);y=z;}intmain(){intx=10,y=26;fl(x,y);f2(x,y);tout<A、10B、16C、26D、36標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:子函數(shù)f1中的形參是引用變量,所以執(zhí)行子函數(shù)實(shí)現(xiàn)了變量x,y值的交換,變量x的值等于26,而變量y的值等于10。而子函數(shù)f2中的形參是醬通變量,因?yàn)镃++的函數(shù)之間的參數(shù)傳遞是傳值,所以執(zhí)行函數(shù)f2不能實(shí)現(xiàn)變量x,y值的交換。14、已知函數(shù)f的原型是“voidfont*x,int&y);”,變量v1、v2的定義是“intv1,v2;”,下列調(diào)用語句中,正確的是()。A、f(v1,v2);B、f(v1,&v2);C、f(&v1,v2);D、f(&v1,&v2);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在函數(shù)f的形參表達(dá)式中第一個(gè)形參為整型指針變量,第二個(gè)為整型引用變量,所以用實(shí)參v1的指針初始化第一個(gè)形參,用實(shí)參v2初始化第二形參。15、有如下程序:#includeusingnamespacestd;voidfl(int&x){x++;)voidf2(intx){++x;)hatmain(){intx=10,y=12;f1(x);f2(y);cout<A、22B、23C、24D、25標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在函數(shù)n(int&x){x++;}中,是對(duì)變量x的引用,所以當(dāng)在main函數(shù)中執(zhí)行“f1(x);”語句后,變量x的值等于11,而在函數(shù)voidf2(intx){++x;}中,對(duì)變量x的傳遞調(diào)用,在main函數(shù)中執(zhí)行“f2(y);”語句后,變量y的值仍然等于12,所以輸出x+y的值等于23。16、下面是重載為非成員函數(shù)的運(yùn)算符函數(shù)原型,其中錯(cuò)誤的是()。A、Fractionoperator+(Fraction,F(xiàn)raction);B、Fractionoperator-(Fraction);C、Fraction&operator=(Fraction&,F(xiàn)raction);D、Fraction&operator+=(Fraction&,F(xiàn)raction);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是運(yùn)算符重載。C++語言規(guī)定,“=”運(yùn)算符只能作為成員函數(shù)重載。17、關(guān)于函數(shù)重載,下列敘述中錯(cuò)誤的是()。A、重載函數(shù)的函數(shù)名必須相同B、重載函數(shù)必須在參數(shù)個(gè)數(shù)或類型上有所不同C、重載函數(shù)的返回值類型必須相同D、重載函數(shù)的函數(shù)體可以有所不同標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是函數(shù)重載。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個(gè)數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對(duì)返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。18、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(intx):val(x){}voidPrint()const{cout<<"const:va1"="<A、va1=10const:va1=20B、const:va1=10const:va1=20C、const:va1=10va1=20D、va1=10va1=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ù)中聲明的obj1是常對(duì)象,obj2是一般對(duì)象。故輸出結(jié)果是const∷va1=10va1=20。19、若已經(jīng)聲明了函數(shù)原型“voidfun(inta,doubleb=0.0);”,則下列重載函數(shù)聲明中正確的是()。A、voidfun(inta=90,doubleb=0.0);B、intfun(inta,doubleB);C、voidfun(doublea,intB);D、boolfun(inta,doubleb=0.0);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)重載的原則就是至少要在參數(shù)個(gè)數(shù)或參數(shù)類型上有所不同,且如果函數(shù)只是函數(shù)類型不同的,而其他完全相同,也不能作為重載函數(shù)來使用。20、對(duì)C++編譯器區(qū)分重載函數(shù)無任何意義的信息是()。A、參數(shù)類型B、參數(shù)個(gè)數(shù)C、返回值類型D、常成員函數(shù)關(guān)鍵字const標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:如果重載函數(shù)只是函數(shù)類型不同,而參數(shù)個(gè)數(shù)和類型完全相同,C++編譯器則無法區(qū)別它們。21、已知函數(shù)fun的原型為intfun(int,int,int);下列重載函數(shù)原型中錯(cuò)誤的是()。A、charfun(int,int);B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:重載函數(shù)至少要在參數(shù)個(gè)數(shù)或參數(shù)類型上不同。而選項(xiàng)D中的函數(shù)與原函數(shù)只是函數(shù)類型不同,而其他完全相同(參數(shù)個(gè)數(shù)及類型),則不能作為重載函數(shù)來使用。22、下列關(guān)于函數(shù)重載的敘述中,錯(cuò)誤的是()。A、重載函數(shù)的參數(shù)個(gè)數(shù)可以不同B、重載函數(shù)的參數(shù)類型可以不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)個(gè)數(shù)或參數(shù)類型必須有所不同標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:兩個(gè)或兩個(gè)以上的函數(shù),具有相同的函數(shù)名,但是形參的個(gè)數(shù)或者類型不同,編譯器根據(jù)實(shí)參和形參的類型及個(gè)數(shù)進(jìn)行最佳匹配,自動(dòng)確定調(diào)用哪個(gè)函數(shù),這就是函數(shù)的重載。23、下列有關(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ù)體的最后一條語句必須是return語句標(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ò)誤。24、為了取代C中帶參數(shù)的宏,在C++中使用()。A、重載函數(shù)B、內(nèi)聯(lián)函數(shù)C、遞歸函數(shù)D、友元函數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是內(nèi)聯(lián)函數(shù)。C++語言引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C語言的預(yù)處理宏函數(shù)。故選項(xiàng)B正確。25、為了提高函數(shù)調(diào)用的實(shí)際運(yùn)行速度,可以將較簡(jiǎn)單的函數(shù)定義為()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸函數(shù)D、函數(shù)模板標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C++引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C中的預(yù)處理宏函數(shù)。兩者的區(qū)別在于,宏函數(shù)是由預(yù)處理器對(duì)宏進(jìn)行替換,而內(nèi)聯(lián)函數(shù)是通過編譯器來實(shí)現(xiàn)的。內(nèi)聯(lián)函數(shù)在調(diào)用時(shí)像宏函數(shù)一樣展開,所以它沒有一般函數(shù)的參數(shù)壓棧和退棧操作,減少了調(diào)用開銷,因此,內(nèi)聯(lián)函數(shù)比普通函數(shù)有更高的執(zhí)行效率。26、計(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次。國家二級(jí)C++機(jī)試(選擇題)模擬試卷第3套一、選擇題(本題共23題,每題1.0分,共23分。)1、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<’A’;}~A(){cout<<一’C’;}};classB:publicA{public:B(){cout<<’G’;}~BO{cout<<’T’;}};intmain(){Bobj;return0;}運(yùn)行這個(gè)程序的輸出結(jié)果是()。A、GATCB、AGTCC、GACTD、AGCT標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:派生類B是由基類A公開繼承而來,所以在創(chuàng)建類B的obj對(duì)象時(shí),首先執(zhí)行基類A的構(gòu)造函數(shù)A(),輸出A,再執(zhí)行派生類B的構(gòu)造函數(shù)B(),輸出G,當(dāng)程序結(jié)束時(shí),首先執(zhí)行派生類的析構(gòu)函數(shù)~B(),輸出T,再執(zhí)行基類A的析構(gòu)函數(shù)~A(),輸出C。2、有如下程序:#includeusingnamespacestd;classBase{public:voidfun0{cout<<’n’B;}};classDerived:publicBase{public:voidfun(){_______tout<<’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()。3、下列關(guān)于虛基類的描述中,錯(cuò)誤的是()。A、使用虛基類可以消除由多繼承產(chǎn)生的二義性B、構(gòu)造派生類對(duì)象時(shí),虛基類的構(gòu)造函數(shù)只被調(diào)用一次C、聲明“classB:virtualpublicA”說明類B為虛基類D、建立派生類對(duì)象時(shí),首先調(diào)用虛基類的構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:虛基類是為了消除由多重繼承產(chǎn)生的二義性而提出的。虛基類的說明格式是:Class<類名>:virtual<繼承方式><基類名>,其中關(guān)鍵字virtual與繼承方式的位置無關(guān),但必須位于基類名之前,且virtual只對(duì)緊隨其后基類名起作用。對(duì)于本題來說,聲明“classB:virtualpublicA”說明類A為虛基類。4、在C++中,用于實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性的是()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、模板函數(shù)D、虛函數(shù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是虛函數(shù)的概念。C++語言的多態(tài)性有兩種:函數(shù)重載和虛函數(shù)。虛函數(shù)只有在運(yùn)行時(shí)才能被確定,稱為運(yùn)行時(shí)多態(tài)。編譯時(shí)的多態(tài)是通過函數(shù)重載和模板實(shí)現(xiàn)的。5、下列關(guān)于虛函數(shù)的說明中,正確的是()。A、從虛基類繼承的函數(shù)都是虛函數(shù)B、虛函數(shù)不得是靜態(tài)成員函數(shù)C、只能通過指針或引用調(diào)用虛函數(shù)D、抽象類中的成員函數(shù)都是虛函數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是虛函數(shù)的概念。在成員函數(shù)的聲明前面加上virual關(guān)鍵字,即可把函數(shù)聲明為虛函數(shù)。虛函數(shù)可以是另一個(gè)函數(shù)的友元函數(shù)而不能是靜態(tài)成員函數(shù)。6、)有如下程序#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ù)中,語句A*p=newB;定義了一個(gè)基類的指針p,并讓它指向一個(gè)派生類對(duì)象。所以通過該指針調(diào)用func1時(shí),運(yùn)行的是派生類的版本,而通過該指針調(diào)用func2運(yùn)行的是基類的版本。所以程序運(yùn)行的最后輸出是:B1A2。7、如果不使用多態(tài)機(jī)制,那么通過基類的指針雖然可以指向派生類對(duì)象,但是只能訪問從基類繼承的成員。有如下程序,沒有使用多態(tài)機(jī)制。#includeusingnamespacestd;classBase{inta,b;public:Base(intx,inty){a=x;b=:y;}voidshow(){cout<*pb;DerivedD1(10,20,30,40);pb=&D1;return0;return();}運(yùn)行時(shí)輸出的結(jié)果是()。A、10,20B、30,40C、20,30D、50,50標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是多態(tài)性。在C++中,一個(gè)基類指針可以用于指向它的派生類對(duì)象,而且通過這樣的指針調(diào)用虛函數(shù)時(shí),被調(diào)用的是該指針實(shí)際所指向的對(duì)象類的那個(gè)重定義版本。在實(shí)函數(shù)的情況下。通過基類指針?biāo){(diào)用的只能是基類的那個(gè)函數(shù)版本,無法調(diào)用到派生類中重定義函數(shù)。此題中,通過指針pb所調(diào)用的是基類的版本,即輸出a和b的值10,20。8、虛函數(shù)支持多態(tài)調(diào)用,一個(gè)基類的指針可以指向派生類的對(duì)象,而且通過這樣的指針調(diào)用虛函數(shù)時(shí),被調(diào)用的是指針?biāo)傅膶?shí)際對(duì)象的虛函數(shù)。而非虛函數(shù)不支持多態(tài)調(diào)用。有如下程序:#includeusingnamespacestd;classBase{public:virtualvoidf(){cout<<"f0+";)voidg(){cout<<"g0+";)};classDerived:publicBase{Public:voidf(){cout<<"f+";}voidgo{cout<<,"g+";}};intmain{Derivedd;Base*p=&d;P->fi();P->g();return0;}運(yùn)行時(shí)輸出的結(jié)果是()。A、f+g+B、f0+g+C、f+g0+D、f0+g0+標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是虛函數(shù)和多態(tài)性。此題中,因?yàn)閒()是虛函數(shù)具有多態(tài)性,所以通過指針p調(diào)用的f()是派生類Derived中定義的f();而g()不是虛函數(shù),通過指針p調(diào)用的是Base中的g()。9、有如下程序;#includeusingnamespacestd;classBase{public:voidoutput0{cout<<1;}virtualvoidPrint(){cout<<’B’;}};classDerived:publicBase{public:voidoutput(){cout<<2;}voidPrint(){cout<<’D’;}};intmain(){Base*ptr=newDerived;ptr->output();ptr->Print();deleteptr;return0}程序的輸出結(jié)果是()。A、1BB、1DC、2BD、2D標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是虛函數(shù)與多態(tài)性。在成員函數(shù)的聲明前面加上vimal關(guān)鍵字,即可把函數(shù)聲明為虛函數(shù);在C++中,一個(gè)基類指針可以用于指向它的派生類對(duì)象,而且通過這樣的指針調(diào)用虛函數(shù)時(shí),被調(diào)用的是該指針實(shí)際所指向的對(duì)象類的那個(gè)重定義版本。本題中,從基類的定義可以看出:output()函數(shù)是普通成員函數(shù),而Print()函數(shù)是虛函數(shù)。所以,通過ptr指針調(diào)用的output()是基類中的output(),而通過它調(diào)用的Pfint()則是派生類中的Print()。10、有如下程序;#includeusingnamespacestd;classB{public:virtualvoidshow(){cout<<"B";}};classD:publicB{public:voidshow(){cout<<"D";}};voidfun1(B*ptr){ptr->show();}voidfun2(B&ref){ref.show();}voidfun3(Bb){b.show();}intmain(){Bb,*p=newD;Dd;fun1(p);fun2(b);fun3(d);return0;}程序的輸出結(jié)果是()。A、BBBB、BBDC、DBBD、DBD標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是虛函數(shù)與多態(tài)性。在成員函數(shù)的聲明前面加上virual關(guān)鍵字,即可把函數(shù)聲明為虛函數(shù);在C++中,一個(gè)基類指針可以用于指向它的派生類對(duì)象,而且通過這樣的指針調(diào)用虛函數(shù)時(shí),被調(diào)用的是該指針實(shí)際所指向的對(duì)象類的那個(gè)重定義版本。此題中,fun1()和fun2()的形參分別是基類的指針和引用,給fun1()傳入的實(shí)參是指向派生類對(duì)象的指針p,fun1()將調(diào)用D類中的show()輸出字符‘D’:給。fun2()出入的實(shí)參是基類對(duì)象,fun2()調(diào)用類B中的show()輸出字符‘B’:fun3()由于形參是基類對(duì)象,調(diào)用的始終都是基類的show(),輸出字符‘B’。故最終輸出結(jié)果是DBB。11、下列有關(guān)抽象類和純虛函數(shù)的敘述中,錯(cuò)誤的是()。A、擁有純虛函數(shù)的類是抽象類,不能用來定義對(duì)象B、抽象類的派生類若不實(shí)現(xiàn)純虛函數(shù),它也是抽象類C、純虛函數(shù)的聲明以“=0;”結(jié)束D、純虛函數(shù)都不能有函數(shù)體標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是抽象類和純虛函數(shù)的概念。純虛函數(shù)可以有函數(shù)體,它的實(shí)現(xiàn)由派生類給出。12、有如下程序:#includeusingnamespacestd;classGA{public;virtualhatf(){retum1;}};classGB:publicGA{public;virtualintf0{return2;});voidshow(GAg){cout<A、1111B、1211C、1112D、1212標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查派生類與虛函數(shù)的考查。由主函數(shù)main入手,其中分別定義了類GA和GB的對(duì)象a和b。首先,執(zhí)行參數(shù)a的show函數(shù)調(diào)用,其中的輸出語句為調(diào)用GA類中的f()虛函數(shù),返回1。同理display(a)函數(shù)輸出1。show(b)函數(shù)中調(diào)用的為GA中的f()函數(shù),display(b)調(diào)用GA中f()函數(shù),返回1,display(b)調(diào)用GB中的f()函數(shù)返回2。所以最后輸出為1112。13、下列選項(xiàng)中,與實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性無關(guān)的是()。A、重載函數(shù)B、虛函數(shù)C、指針D、引用標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在C++中,多態(tài)性可以分為兩類:編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。編譯時(shí)的多態(tài)性是通過函數(shù)重載和模版體現(xiàn)的,運(yùn)行時(shí)的多態(tài)性是通過虛函數(shù)體現(xiàn)的。14、在一個(gè)抽象類中,一定包含有()。A、虛函數(shù)B、純虛函數(shù)C、模板函數(shù)D、重載函數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:擁有純虛函數(shù)的類叫做抽象類,所以抽象類中必然包含有虛函數(shù)。15、有如下程序:#includeusingnamespacestd;classA{public:virtualvoidf(){cout<<1;}voidg(){cout<<2;}};classB:publicA{public:virtualvoidf(){cout<<3;}voidg(){cout<<4;}};voidshow(A&a){a.f();a.g();}intmain(){Bb;show(b);return0;}運(yùn)行時(shí)的輸出結(jié)果是()。A、12B、34C、14D、32標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在派生類classB中對(duì)基類中的虛擬成員函數(shù)virtualvoidf()和實(shí)函數(shù)voidg()進(jìn)行了重新定義,在主函數(shù)中通過語句show(b);調(diào)用派生類中的虛函數(shù)virtualvoidf(){cout<<3;}輸出3,調(diào)用基類的實(shí)函數(shù)voidg(){cout<<2;}輸出2。所以選項(xiàng)D為正確答案。16、有如下程序:#includeusingnamespacestd;classPublication{∥出版物類charname[30];public:Publication(char*name=”未知名稱”){strcpy(this->name,name);}constchar*getName()const{returnname;}virtualconstchar*getType()const{return"未知類型";}};classBook:publicPublication{∥書類public:Book(char*name):Publication(name){}virtualconstchar*getType()const{return"書";}};voidshowPublication(Publication&p){cout<A、未知類型:未知名稱B、未知類型:精彩人生C、書:未知名稱D、書:精彩人生標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:因?yàn)轭怋ook繼承自基類Publication,所以在類Book中的虛常成員函數(shù),*getType(){return"書";)就會(huì)覆蓋基類中的虛常成員函數(shù)*getType()const{return"未知類型";),所以在主函數(shù)中調(diào)用函數(shù)showPublication(book)時(shí),getType()函數(shù)的輸出的結(jié)果是“書”,getName()函數(shù)的輸出結(jié)果為“精彩人生”。17、下面是類shape的定義:classShape{public:VirtualvoidDraw()=0;};下列關(guān)于Shape類的描述中,正確的是()。A、類Shape是虛基類B、類Shape是抽象類C、類Shape中的Draw函數(shù)聲明有誤D、語句“Shapes;”能夠建立Shape的一個(gè)對(duì)象S標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:因?yàn)轭怱hape中包含純虛函數(shù)Draw(),所以類Shape是抽象類。18、有如下程序:#includeusingnamespacestd;classB{public:B(intxx):x(xx){++count;x+=10;}virtualvoidshow()const{cout<*ptr=newD(10,20);ptr->show();deleteptr;return0;}運(yùn)行時(shí)的輸出結(jié)果是()。A、1_120B、2_120C、1_20D、2_20標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在主函數(shù)中定義了一個(gè)基類B的指針變量ptr,并調(diào)用類D的構(gòu)造函數(shù)創(chuàng)建了類D的實(shí)例對(duì)象,因?yàn)樽兞縞ount是全局變量所以在調(diào)用基類B的構(gòu)造函數(shù)給其值加1,在調(diào)用D的構(gòu)造函數(shù)時(shí)給其值加1,因而輸出其值等于2,在類D的構(gòu)造函數(shù)中給成員變量y的值加100,所以其等于120并輸出。19、有如下程序:#includeusingnamespacestd;classInstrument{public:virtualvoidDisplay()=0;};classPiano:publicInstrument{public:voidDisplay(){/*函數(shù)體程序略*/}};intmain(){Instruments;Instrument*p=0;∥…;return0;}下列敘述中正確的是()。A、語句“Insturment*p=0;”編譯時(shí)出錯(cuò)B、語句“Instruments;”編譯時(shí)出錯(cuò)C、類Piano中的Display函數(shù)不是虛函數(shù)D、類Instrument是一個(gè)虛基類標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由于函數(shù)Display()是一個(gè)純虛函數(shù),所以類Instrument是抽象類,而抽象類是不能定義對(duì)象的,因而選項(xiàng)B為正確選項(xiàng)。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=newNove1();cout<Category();return0;}若程序運(yùn)行時(shí)輸出結(jié)果是“文學(xué)”,則劃線處缺失的語句是()。A、char*Category();B、char*Category()const;C、virtualchar*Category()const;D、virtualchar*Category()const=0;標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:根據(jù)程序運(yùn)行的結(jié)果為:文學(xué),說明程序執(zhí)行了派生類Novel中的成員函數(shù)*Category()const{return"文學(xué)";},所以在基類Book中要把函數(shù)*Category()const定義為純虛函數(shù)。21、有如下程序:#includeusingnarnespacestd;classBase{public:virtualvoidfunction1(){rout<<’0’;}voidfunction20{rout<<’1’;}};classDerived:publicBase{public:voidfunction1(){rout<<’2’;}voidfunction2(){rout<<’3’;}};intmm(){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ù)ftmetion1()在基類Base中定義為虛成員函數(shù),而在派生類Dervied中重新進(jìn)行了定義,輸出字符2,函數(shù)function2()在基類Base中定義虛成員函數(shù),在主函數(shù)中使用指向基類的指針變量p訪問:function2()時(shí),輸出1。22、有如下程序:#includeusingnamespacestd;classBase{public:virtualvoidShow(){tout<<’B’;}};classDerived:publicBase{public:voidShow(){cout<<’D’;}};intmain(){Base*p1=newDerived;Derived*p2=newDerived;p1->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ù)Show()輸出字符‘B’,而在派生類Derived中對(duì)虛函數(shù)Show()進(jìn)行了重新定義,輸出字符‘D’。在主函數(shù)中對(duì)基類和派生類中的虛函數(shù)Show()進(jìn)行了多態(tài)調(diào)用,此時(shí)調(diào)用的是派生類中重新定義的Show(),輸出字符‘D’。23、有如下程序:#includeusingnamespacestd;classB{public:virtualvoidf(){cout<<"B";}voidg(){cout<<"B";}};classD:publicB{public:voidf0{cout<<"D";}voidg0{cout<<"D";}};voidh(B*p){p->f();P->g();}intmain(){Dobj;h(&obj);return0;}運(yùn)行這個(gè)程序的輸出結(jié)果是()。A、DDB、BBC、BDD、DB標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在基類B中定義虛函數(shù)f()和成員函數(shù)g(),而在派生類D中定義了函數(shù)f()和同名函數(shù)g()。而函數(shù)h中的形參為指向基類的指針變量p,所以在主函數(shù)中執(zhí)行h(&obj)時(shí),會(huì)調(diào)用派生類的函數(shù)f(),輸出D,再調(diào)用基類的函數(shù)g(),輸出B。國家二級(jí)C++機(jī)試(選擇題)模擬試卷第4套一、選擇題(本題共38題,每題1.0分,共38分。)1、下列敘述中正確的是A、算法的效率只與問題的規(guī)模有關(guān),而與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無關(guān)B、算法的時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量C、數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)是一一對(duì)應(yīng)的D、算法的時(shí)間復(fù)雜度與空間復(fù)雜度一定相關(guān)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:算法的效率與問題的規(guī)模和數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)都有關(guān),A錯(cuò)誤。算法的時(shí)間復(fù)雜度,是指執(zhí)行算法所需要的計(jì)算工作量,B正確。由于數(shù)據(jù)元素在計(jì)算機(jī)存儲(chǔ)空間中的位置關(guān)系可能與邏輯關(guān)系不同,因此數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)不是一一對(duì)應(yīng)的,C錯(cuò)誤。算法的時(shí)間復(fù)雜度和空間復(fù)雜度沒有直接的聯(lián)系,D錯(cuò)誤。2、下列敘述中正確的是A、線性表鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的存儲(chǔ)空間一般要少于順序存儲(chǔ)結(jié)構(gòu)B、線性表鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)的存儲(chǔ)空間都是連續(xù)的C、線性表鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的存儲(chǔ)空間可以是連續(xù)的,也可以是不連續(xù)的D、以上說法均錯(cuò)誤標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:線性表的順序存儲(chǔ)結(jié)構(gòu)具備如下兩個(gè)基本特征:(1)線性表中的所有元素所占的存儲(chǔ)空間是連續(xù)的;(2)線性表中各數(shù)據(jù)元素在存儲(chǔ)空間中是按邏輯順序依次存放的。用一組任意的存儲(chǔ)單元來依次存放線性表的結(jié)點(diǎn),這組存儲(chǔ)單元既可以是連續(xù)的,也可以是不連續(xù)的,甚至是零散分布在內(nèi)存中的任意位置上的。因此C正確。3、某二叉樹共有12個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有1個(gè)。則該二叉樹的深度為(根結(jié)點(diǎn)在第1層)A、3B、6C、8D、12標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:二叉樹中,度為0的節(jié)點(diǎn)數(shù)等于度為2的節(jié)點(diǎn)數(shù)加1,即n2=n0-1,葉子節(jié)點(diǎn)即度為0,n0=1,則n2=0,總節(jié)點(diǎn)數(shù)為12=n0+n1+n2=1+n1+0,則度為1的節(jié)點(diǎn)數(shù)n1=11,故深度為12,選D。4、結(jié)構(gòu)化程序設(shè)計(jì)中,下面對(duì)goto語句使用描述正確的是A、禁止使用goto語句B、使用goto語句程序效率高C、應(yīng)避免濫用goto語句D、以上說法均錯(cuò)誤標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:結(jié)構(gòu)化程序設(shè)計(jì)中,要注意盡量避免goto語句的使用,故選C。5、下面不屬于軟件測(cè)試實(shí)施步驟的是A、集成測(cè)試B、回歸測(cè)試C、確認(rèn)測(cè)試D、單元測(cè)試標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:軟件測(cè)試主要包括單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試。6、下面不屬于軟件需求分析階段主要工作的是A、需求變更申請(qǐng)B、需求分析C、需求評(píng)審D、需求獲取標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:需求分析階段的工作可概括為4個(gè)方面:①需求獲取。②需求分析。③編寫需求規(guī)格說明書。④需求審評(píng)。7、一般情況下,當(dāng)對(duì)關(guān)系R和S進(jìn)行自然連接時(shí),要求R和S含有一個(gè)或者多個(gè)共有的A、記錄B、行C、屬性D、元組標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:自然連接是一種特殊的等值連接,它滿足下面的條件:①兩關(guān)系間有公共域;②通過公共域的等值進(jìn)行連接,選C。8、有三個(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)解析:關(guān)系T是關(guān)系R的一部分,并且是關(guān)系R去掉R和S相同的元素,符合差操作。9、有表示公司和職員及工作的三張表,職員可在多家公司兼職。其中公司C(公司號(hào),公司名,地址,注冊(cè)資本,法人代表,員工數(shù)),職員S(職員號(hào),姓名,性別,年齡,學(xué)歷),工作W(公司號(hào),職員號(hào),工資),則表W的鍵(碼)為A、公司號(hào),職員號(hào)B、職員號(hào),工資C、職員號(hào)D、公司號(hào),職員號(hào),工資標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:由于職員可以再多加公司兼職,表W的鍵(碼)應(yīng)為公司關(guān)系和職員關(guān)系的主碼,即公司號(hào)和職員號(hào)。10、下列選項(xiàng)中,不是C++關(guān)鍵字的是A、constB、usingC、classD、final標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查C++關(guān)鍵字,屬于基礎(chǔ)知識(shí),只有D選項(xiàng)不是關(guān)鍵字。11、若有定義語句"doublea=2/3.0;",則語句"cout<A、0.0B、0.666667C、0.7D、0標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查除號(hào)’/’,當(dāng)除號(hào)兩邊都是整數(shù)時(shí),得出的結(jié)果為整數(shù),當(dāng)其中有一個(gè)double型,結(jié)果為double型,所以2/3.0等于0.666667,B選項(xiàng)正確。12、下列語句中,與語句"(aA、if(aB、if(a>=b)n=0;C、if(a>=b)n=0;elseif(b>=c)n=1;D、if(a標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查逗號(hào)表達(dá)式,題目中逗號(hào)表達(dá)式(ac時(shí),n為0;a>b時(shí),n為0;與該意思相同的就是D選項(xiàng),而A選項(xiàng)if語句中的判斷語句不正確。13、有如下語句序列:intx=10,&r=x;cout<A、10-10B、10-0x28ff48C、0x28ff44-10D、0x28ff44-0x28ff48標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查引用概念和使用,題目中r為x的引用,所以與x的值相同,結(jié)果為A,A選項(xiàng)正確。14、有如下程序:#includeusingnamespacestd;intmain(){intx=4;do{x--;cout<A、輸出31B、輸出20C、輸出3210D、死循環(huán)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查dowhile循環(huán),執(zhí)行第一次時(shí),輸出x為3,執(zhí)行第二次的時(shí)候?yàn)?,所以輸出結(jié)果為31,A選項(xiàng)正確。15、在一個(gè)程序文件中有如下語句:externintvar;關(guān)于這個(gè)語句,下列表述中錯(cuò)誤的是A、var稱為外部變量B、var定義在函數(shù)或類的外部C、var已在另一個(gè)程序文件中定義D、編譯系統(tǒng)在處理這個(gè)語句時(shí)將為之分配空間標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:extern定義的變量表示已經(jīng)在別的地方定義,這里只是引用,所以不會(huì)對(duì)該變量分配內(nèi)存空間,所以D選項(xiàng)錯(cuò)誤。16、已知一運(yùn)算符函數(shù)沒有參數(shù)。下列關(guān)于該運(yùn)算符函數(shù)的表述中錯(cuò)誤的是A、該運(yùn)算符函數(shù)是成員函數(shù)B、該運(yùn)算符是一元運(yùn)算符C、由于無參數(shù),使用該運(yùn)算符時(shí)不需要操作數(shù)D、該運(yùn)算符不是后綴++或后綴--標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題主要考查運(yùn)算符重載函數(shù),題目中說該運(yùn)算符重載函數(shù)沒有參數(shù),那么只能是重載一元運(yùn)算符,所以需要一個(gè)操作數(shù),并且有默認(rèn)this指針,所以是成員函數(shù),C選項(xiàng)錯(cuò)誤。17、有如下函數(shù)原型:intfunc(int**a,int*b,int&cintd);其中可稱為引用參數(shù)的參數(shù)變量是A、aB、bC、cD、d標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查引用的概念和使用方法,引用使用&來定義,所以只有C選項(xiàng)是引用,所以C選項(xiàng)正確。18、若要在Viz類中將*重載為一元運(yùn)算符,下列重載函數(shù)聲明中肯定有錯(cuò)的是A、Vizoperator*();B、Vizoperator*(Viz);C、intoperator*(Viz);D、Vizoperator*(Viz,Viz);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題中將*重載為一元運(yùn)算符,所以只有一個(gè)操作數(shù),而D選項(xiàng)有兩個(gè)操作數(shù),所以D選項(xiàng)錯(cuò)誤。19、有如下程序:#includeusingnamespacestd;void_________{intz=x;x=y;y=z;}intmain(){intx=0,y=1;f(x,y);cout<A、f(intx,inty)B、f(int*x,int*y)C、f(int&x,int&y)D、swap(intx,inty)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:參數(shù)傳遞有三種:傳值(value),傳址(address),和傳引用(reference)傳值時(shí)子函數(shù)(被調(diào)用者)復(fù)制父函數(shù)(調(diào)用者)傳遞的值,這樣子函數(shù)無法改變父函數(shù)變量的值。傳址時(shí)父函數(shù)將變量的地址傳遞給子函數(shù),這樣子函數(shù)可以能過改寫地址里的內(nèi)容改變父函數(shù)中的變量傳引用則是一種看起來像傳值調(diào)用,而實(shí)際上功能同傳址一樣的傳遞方式。子函數(shù)可以改寫父函數(shù)的變量值。題目中要求輸出10,即將x和y值調(diào)換,那么就需要使用傳引用來改變x和y的值,所以只有C選項(xiàng)正確。20、有如下類定義:classMyClass{public:_____________private:intdata;};若要為MyClass類重載流輸出運(yùn)算符<<,使得程序中可以"cout<<obj;"這樣的語句輸出MyClass類的對(duì)象obj中成員變量data的值,則橫線處應(yīng)填入的語句是A、friendostream&operator<<(ostream&os,MyClassa);B、friendostream&operator<<(MyClassa,ostream&os);C、ostream&operator<<(ostream&os,MyClassa);D、ostream&operator<<(MyClassa,ostream&os);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查在類中重載流運(yùn)算符<<,那么需要將該運(yùn)算符重載為友元成員函數(shù),且第一個(gè)參數(shù)為ostream&os,所以A選項(xiàng)正確。21、下面是重載為非成員函數(shù)的運(yùn)算符函數(shù)原型,其中錯(cuò)誤的是A、Fractionoperator+(Fraction);B、Fractionoperator-(Fraction);C、Fractionoperator*(Fraction);D、Fractionoperator/(Fraction);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:答案D的形式是重載為友元函數(shù),而友元函數(shù)不屬于類的成員函數(shù)。所以重載為友元函數(shù)需要兩個(gè)參數(shù),通過參數(shù)傳遞的方式得到參加運(yùn)算的兩個(gè)對(duì)象。其他的是重載為類的成員函數(shù),由于對(duì)象本身代表了一個(gè)操作數(shù),所以其參數(shù)只需要一個(gè),其為參加運(yùn)算的另一個(gè)操作數(shù)。22、下列關(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指針,只有類的非靜態(tài)成員才有this指針,所以D選項(xiàng)正確。23、有如下類定義:classSample{public:Sample(intx):ref(x){}//①Sample():ref(0){}//②private:staticintval=5;//③constintref;//④};上述程序段中,錯(cuò)誤的語句是A、①B、②C、③D、④標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:靜態(tài)數(shù)據(jù)成員初始化時(shí),只能在類體外進(jìn)行初始化,一邊形式為:數(shù)據(jù)類型類型::靜態(tài)數(shù)據(jù)成員名=初值所以③錯(cuò)誤,答案為C選項(xiàng)。24、有如下程序:#includeusingnamespacestd;class

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論