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

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷26(共9套)(共200題)國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷第1套一、選擇題(本題共24題,每題1.0分,共24分。)1、在下列關(guān)系運(yùn)算中,不改變關(guān)系表中的屬性個(gè)數(shù)但能減少元組個(gè)數(shù)的是()。A、并B、交C、投影D、除標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:關(guān)系R與S經(jīng)交運(yùn)算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的有序組所組成,記為R∩S,交運(yùn)算不改變關(guān)系表中的屬性個(gè)數(shù)但能減少元組個(gè)數(shù)。2、下列關(guān)于棧敘述正確的是A、棧頂元素最先能被刪除B、棧頂元素最后才能被刪除C、棧底元素永遠(yuǎn)不能被刪除D、以上三種說法都不對(duì)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:棧是先進(jìn)后出的線性表,棧頂?shù)脑刈钕缺粍h除,棧底的元素最后被刪除。3、下列敘述中正確的是()。A、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間是相同的B、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空問一般要多于順序存儲(chǔ)結(jié)構(gòu)C、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要少于順序存儲(chǔ)結(jié)構(gòu)D、上述三種說法都不對(duì)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:線性表的存儲(chǔ)分為順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。在順序存儲(chǔ)中,所有元素所占的存儲(chǔ)空間是連續(xù)的,各數(shù)據(jù)元素在存儲(chǔ)空間中是按邏輯順序依次存放的。所以每個(gè)元素只存儲(chǔ)其值就可以了,而在鏈?zhǔn)酱鎯?chǔ)的方式中,將存儲(chǔ)空間的每一個(gè)存儲(chǔ)結(jié)點(diǎn)分為兩部分,一部分用于存儲(chǔ)數(shù)據(jù)元素的值,稱為數(shù)據(jù)域:另一部分用于存儲(chǔ)下一個(gè)元素的存儲(chǔ)序號(hào),稱為指針域。所以線性表的鏈?zhǔn)酱鎯?chǔ)方式比順序存儲(chǔ)方式的存儲(chǔ)空間要大一些。4、下列有關(guān)繼承和派生的敘述中,正確的是()。A、如果一個(gè)派生類私有繼承其基類,則該派生類對(duì)象不能訪問基類的保護(hù)成員B、派生類的成員函數(shù)可以訪問基類的所有成員C、基類對(duì)象可以賦值給派生類對(duì)象。D、如果派生類沒有實(shí)現(xiàn)基類的一個(gè)純虛函數(shù),則該派生類是一個(gè)抽象類標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:如果派生類私有繼承基類,不能訪問基類中的私有成員,所以A)、B)是錯(cuò)誤的。派生類是對(duì)基類的具體化,所以C)錯(cuò)誤的。如果派生類沒有實(shí)現(xiàn)基類的一個(gè)純虛函數(shù),則該派生類是一個(gè)抽象類,即選擇D)。5、定義如下枚舉類型enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};表達(dá)式Wednesday=Friday的值是()。A、falseB、trueC、2D、異常標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:enum<枚舉類型名>{<枚舉元素表>);其中:關(guān)鍵詞“enum”表示定義的是枚舉類型,枚舉類型名由標(biāo)識(shí)符組成,而枚舉元素表由枚舉元素或枚舉常量組成。本題中的枚舉類型中的數(shù)據(jù)值Wednesday為2,而Friday的值賦值為2,所以判斷Wednesday等于Friday的表達(dá)式值為真,即true。6、若有如下類聲明:classMyClass{public:MyClass(){cout<<1;}};執(zhí)行下列語(yǔ)句MyClassa,b[2],*p[2];程序的輸出結(jié)果是()。A、11B、111C、1111D、11111標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查默認(rèn)構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù),題目中定義一個(gè)對(duì)象a以及對(duì)象數(shù)組b[2],共執(zhí)行3次構(gòu)造函數(shù),對(duì)象指針不調(diào)用構(gòu)造函數(shù)。所以本題答案為B。7、從工程管理角度看,軟件設(shè)計(jì)一般分為兩步完成,它們是()。A、概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)B、數(shù)據(jù)設(shè)計(jì)與接口設(shè)計(jì)C、軟件結(jié)構(gòu)設(shè)計(jì)與數(shù)據(jù)設(shè)計(jì)D、過程設(shè)計(jì)與數(shù)據(jù)設(shè)計(jì)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件設(shè)計(jì)是開發(fā)階段最重要的步驟。從工程管理的角度來看可分為兩步:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)是將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu),確定系統(tǒng)級(jí)接口、全局?jǐn)?shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫(kù)模式;詳細(xì)設(shè)計(jì)是指確立每個(gè)模塊的實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用適應(yīng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。從技術(shù)觀點(diǎn)來看,軟件設(shè)計(jì)包括軟件結(jié)構(gòu)設(shè)計(jì)(定義軟件系統(tǒng)各主要部件之間的關(guān)系)、數(shù)據(jù)設(shè)計(jì)(將分析時(shí)創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu))、接口設(shè)計(jì)(描述軟件內(nèi)部、軟件與協(xié)作系統(tǒng)之間以及軟件與人之間如何通信)、過程設(shè)計(jì)(把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程)四個(gè)步驟。8、在E―R圖中,用來表示實(shí)體聯(lián)系的圖形是()。A、橢圓形B、矩形C、菱形D、三角形標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在E―R圖中實(shí)體集用矩形,屬性用橢圓,聯(lián)系用菱形。9、在下列double型常量表示中,錯(cuò)誤的是()。A、E15B、35C、3E5D、3E-5標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在C++中,科學(xué)計(jì)數(shù)法表示小數(shù)的方法:E(e)左右必須有數(shù),且E(e)的右側(cè)只能為整數(shù)。10、已知類IMS中兩個(gè)成員函數(shù)的聲明為“voidlisten()const;”與“voidspeak();”,另有兩個(gè)對(duì)象的定義為“IMSobj1;”與“constIMSobj2;”,則下列語(yǔ)句中,產(chǎn)生編譯錯(cuò)誤的是()。A、obj1.1isten();B、obj1.speak();C、obj2.1isten();D、obj2.speak();標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:函數(shù)listen()作為類IMS的常成員函數(shù),一般對(duì)象obj1和常對(duì)象obi2都可以調(diào)用它,而函數(shù)speak()作為IMS的一般成員函數(shù),則只有一般對(duì)象obj1可以調(diào)用,而常對(duì)象obj2調(diào)用會(huì)產(chǎn)生編譯錯(cuò)誤。11、數(shù)據(jù)獨(dú)立性是數(shù)據(jù)庫(kù)技術(shù)的重要特點(diǎn)之一,所謂數(shù)據(jù)獨(dú)立性是指()。A、數(shù)據(jù)與程序獨(dú)立存放B、不同的數(shù)據(jù)被存放在不同的文件中C、不同的數(shù)據(jù)只能被對(duì)應(yīng)的應(yīng)用程序所使用D、以上三種說法都不對(duì)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:數(shù)據(jù)獨(dú)立性是指數(shù)據(jù)庫(kù)中數(shù)據(jù)獨(dú)立于應(yīng)用程序而不依賴于應(yīng)用程序,即數(shù)據(jù)與程序間的互不依賴性。也就是說數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)與存取方式的改變不會(huì)影響應(yīng)用程序。數(shù)據(jù)的獨(dú)立性包括物理獨(dú)立性和邏輯獨(dú)立性兩級(jí)。①物理獨(dú)立性:數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)、存取方式等)的改變,如存儲(chǔ)設(shè)備的更換、物理存儲(chǔ)的更換、存取方式改變等都不影響數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化。②邏輯獨(dú)立性:數(shù)據(jù)庫(kù)總體邏輯結(jié)構(gòu)的改變,如修改數(shù)據(jù)模式、增加新的數(shù)據(jù)類型、改變數(shù)據(jù)間聯(lián)系等,不需要相應(yīng)的應(yīng)用程序改變,這就是數(shù)據(jù)的邏輯獨(dú)立性。12、在數(shù)據(jù)庫(kù)系統(tǒng)中,用戶所見的數(shù)據(jù)模式為()。A、概念模式B、外模式C、內(nèi)模式D、物理模式標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:用戶所見到的數(shù)據(jù)模式是外模式也稱用戶模式。它是用戶的數(shù)據(jù)視圖,它由概念模式導(dǎo)出。一個(gè)概念模式可以有若干個(gè)外模式,每個(gè)用戶只關(guān)心與它有關(guān)的外模式,這樣不僅可以屏蔽大量無(wú)關(guān)信息,而且有利于數(shù)據(jù)維護(hù)。13、數(shù)據(jù)庫(kù)設(shè)計(jì)中反映用戶對(duì)數(shù)據(jù)要求的模式是()。A、內(nèi)模式B、概念模式C、外模式D、設(shè)計(jì)模式標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式是概念模式、外模式和內(nèi)模式。概念模式是數(shù)據(jù)庫(kù)系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,給出了每個(gè)用戶的局部數(shù)據(jù)描述,所以選擇C。內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫(kù)物理存儲(chǔ)結(jié)構(gòu)與物理存取方法。14、下面關(guān)于虛函數(shù)的描述中正確的是()。A、虛函數(shù)是一個(gè)靜態(tài)成員函數(shù)B、虛函數(shù)是一個(gè)非成員函數(shù)C、虛函數(shù)既可以在函數(shù)說明時(shí)定義,也可以在函數(shù)實(shí)現(xiàn)時(shí)定義D、派生類的虛函數(shù)與基類中對(duì)應(yīng)的虛函數(shù)具有相同的參數(shù)個(gè)數(shù)和類型標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在基類中用virtual聲明成員函數(shù)為虛函數(shù),所以AB錯(cuò)誤。在派生類中重新定義此函數(shù),要求函數(shù)名、函數(shù)類型、函數(shù)參數(shù)個(gè)數(shù)和類型全部與基類的虛函數(shù)相同。15、下列關(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與繼承方式的位置無(wú)關(guān),但必須位于基類名之前,日virtual只對(duì)緊隨其后基類名起作用。對(duì)于本題來說,聲明“classB:virtualpublicA”說明類A為虛基類。16、語(yǔ)句int*p=&k;定義了指針p,與這個(gè)語(yǔ)句等效的語(yǔ)句序列是()。A、int*p;p=&k;B、int*p;p=k;C、int*p;*p=&k;D、int*p;*p=k標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是指針的賦值。題目中的語(yǔ)句int*p=&k;定義了一個(gè)int類型的指針p,并將變量k的地址&k賦給指針p。所以等效語(yǔ)句是:int*p;p=&k;。17、計(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次。18、若磁盤上已存在某個(gè)文本文件,其全路徑文件名為d:hacre\test.txt,下列語(yǔ)句中不能打開該文件的是()。A、ifstreamfile(“d:hacre\test.txt”);B、ifstreamfile(“d:\kncre\\test.txt”);C、ifstreamfile;file.open(“d:\hacre\\test.txt”);ifstream(“d:\kncre\\test.txt”);D、ifstream*pFile=new標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是轉(zhuǎn)義字符。在字符常量或字符串中,以“\”開頭的一系列字符被看做是一個(gè)轉(zhuǎn)義字符。要表示“\”字符,必須使用轉(zhuǎn)義字符“\\”。19、有如下程序:#includeusingnamespacestd;classMusic{public:voidsetTitle(char*str){strcpy(title,str);}protected:chartype[10];private:chartitle[20];};classJazz:publicMusic{public:voidset(char*str){strcpy(type,"Jazz");//①strcpy(title,str);//②}};下列敘述中正確的是()。A、程序編譯正確B、程序編譯時(shí)語(yǔ)句①出錯(cuò)C、程序編譯時(shí)語(yǔ)句②出錯(cuò)D、程序編譯時(shí)語(yǔ)句①和②都出錯(cuò)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:派生類Jazz不能訪問基類Music中的私有成員title。20、有如下程序#include<iostream>usingnamespacestd;classBase{protected:Base(){cout<<’A’;}Base(charc){cout<<c;}};classDerived:publicBase{public:Derived(charc){cout<<c;}};intmain(){Deriveddl(’B’);return0;}執(zhí)行這個(gè)程序屏幕上將顯示輸出()。A、BB、BAC、ABD、BB標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是派生類對(duì)象的構(gòu)造。建立派生類對(duì)象時(shí),構(gòu)造函數(shù)的執(zhí)行順序是:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)基類被被繼承時(shí)聲明的順序:執(zhí)行成員對(duì)象的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)成員對(duì)象在類中聲明的順序;執(zhí)行派生類的構(gòu)造函數(shù)。此題中,在建立派生類Derived的對(duì)象dl時(shí)會(huì)先調(diào)用基類Base的構(gòu)造,調(diào)用的是默認(rèn)構(gòu)造函數(shù),輸出字符’A’;然后調(diào)用自身的構(gòu)造函數(shù),輸出’B’;故程序的輸出結(jié)果是:AB。21、下列關(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與繼承方式的位置無(wú)關(guān),但必須位于基類名之前,且virtual只對(duì)緊隨其后基類名起作用。對(duì)于本題來說,聲明“classB:virtualpublicA”說明類A為虛基類。22、有如下類定義:classTest{chara;constcharb;public:Test(charc){a=c;b=c;}//第1行voidf(chara)const{this->a=a;}//第2行voidg(charb){this->b=b;}//第3行charh()const{returna;}//第4行};編譯時(shí)沒有錯(cuò)誤的行是()。A、第1行B、第2行C、第3行D、第4行標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:類Test中的常成員函數(shù)h()返回?cái)?shù)據(jù)成員a的值。23、下列運(yùn)算符中,不能被重載的是()。A、&&B、!=C、.D、++標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是運(yùn)算符重載。在C++中,只有.、*、一>*、::、?:這五個(gè)運(yùn)算符不能重載。24、下列關(guān)于模板的敘述中,錯(cuò)誤的是()。A、模板聲明中的第一個(gè)符號(hào)總是關(guān)鍵字temp1ateB、在模板聲明中用<和>括起來的部分是模板的形參表C、類模板不能有數(shù)據(jù)成員D、在一定條件下函數(shù)模板的實(shí)參可以省略標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查模板的概念。模板的一般說明形式如下:temp1ate類型形參表函數(shù)返回值類型函數(shù)名(形參表){函數(shù)體},所以選項(xiàng)A、B正確。函數(shù)模板的實(shí)參在一定條件下是可以省略的,所以選項(xiàng)C錯(cuò)誤。國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷第2套一、選擇題(本題共21題,每題1.0分,共21分。)1、若有定義“hatx=4,y=5;”,則表達(dá)式“y>x++?x--:y++”的值為()。A、3B、4C、5D、6標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在表達(dá)式“y>x++?x--:y++”中,由于自加(++)運(yùn)行符的優(yōu)前級(jí)高于比較運(yùn)算符(>),所以首先進(jìn)行自加運(yùn)算,即變量x的值前自加1,等于5,此時(shí)表達(dá)式y(tǒng)>x不成立,所以整個(gè)表達(dá)式的值等于y++的值,由于y++是后自加運(yùn)算,所以其值等于5。2、若有以下程序:#include<iostream>usingnamespacestd;classA{public:A(inti,intj){a=i:b=j;}voidmove(intx,inty){a+=x;b+=y;}voidshow(){cout<<a<<","<<b<<endl;}private:inta,b;};classB:privateA{public:B(inti,intj);A(i,j){}voidfun(){move(3,5);}voidfl(){A::show();}};intmain(){Bd(3,4);d.fun();d.fl();return0:}程序執(zhí)行后的輸出結(jié)果是()。A、3,4B、6,8C、6,9D、4,3標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題的執(zhí)行過程如下:首先Bd(3,4);語(yǔ)句調(diào)用B類的構(gòu)造函數(shù):B(inti,intj),B的構(gòu)造函數(shù)中調(diào)用基類A的構(gòu)造函數(shù),使得a=3,b=4;d.fun()會(huì)調(diào)用函數(shù)move(3,5),使得(3,4)和(3,5)的對(duì)應(yīng)部分分別相加,最后輸出6,9。3、字符串“a+b=12\n\t”的長(zhǎng)度為()。A、12B、10C、8D、6標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:題目給出的字符串含有7個(gè)字符,再加字符串的結(jié)束字符,所以共8個(gè)字符。4、對(duì)下列二叉樹進(jìn)行前序遍歷的結(jié)果是()。A、DYBEAFCZXB、YDEBFZXCAC、ABDYECFXZD、ABCDEFXYZ標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:二叉樹前序遍歷的簡(jiǎn)單描述:若二叉樹為空,則結(jié)束返回;否則:①訪問根結(jié)點(diǎn);②前序遍歷左子樹;③前序遍歷右子樹??梢姡靶虮闅v二叉樹的過程是一個(gè)遞歸的過程。根據(jù)題目中給出的二叉樹的結(jié)構(gòu)可知前序遍歷的結(jié)果是ABDYECFXZ。5、下列關(guān)于C++流的描述中,錯(cuò)誤的是()。A、cout>>‘A’表達(dá)式可輸出字符AB、eof()函數(shù)可以檢測(cè)是否到達(dá)文件尾C、對(duì)磁盤文件進(jìn)行流操作時(shí),必須包含頭文件fstreamD、以ios―base::out模式打開的文件不存在時(shí),將自動(dòng)建立一個(gè)新文件標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查c++流,想要輸出字符“A,則應(yīng)該是cout<<“A”,所以本題答案為A。6、在軟件設(shè)計(jì)中不使用的工具是A、系統(tǒng)結(jié)構(gòu)圖B、PAD圖C、數(shù)據(jù)流圖D、程序流程圖標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在軟件開發(fā)的各個(gè)階段經(jīng)常會(huì)使用到一些圖形工具,如在需求分析階段使用數(shù)據(jù)流圖(DFD圖),在概要設(shè)計(jì)階段使用系統(tǒng)結(jié)構(gòu)圖,在詳細(xì)設(shè)計(jì)階段使用程序流程圖、N-S圖或者PAD圖等。7、有如下類說明: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知識(shí)點(diǎn)解析:題目中程序TestClass為基類,TestClass1為派生類,派生類構(gòu)造函數(shù)的一般形式為:派生類構(gòu)造函數(shù)名(總參數(shù)類表):基類構(gòu)造函數(shù)名(參數(shù)列表){派生類中新增數(shù)據(jù)成員初始化語(yǔ)句}。派生類TestClass1的基類函數(shù)名為TestClass,總參數(shù)為inta,intb,所以選擇B)。8、數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式不包括()。A、概念模式B、內(nèi)模式C、外模式D、數(shù)據(jù)模式標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式包括概念模式、外模式和內(nèi)模式(物理模式)。9、有如下類定義:classTV{public:Tv(intS=41,stringbr=“TCL”):size(s),brand(br){}一Tv(){}private:intsize;stringbrand;};若執(zhí)行語(yǔ)句TVli,*net[2],company[3];則Tv類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是()。A、6次B、4次C、3次D、2次標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查構(gòu)造函數(shù)和析構(gòu)函數(shù),題中定義了一個(gè)對(duì)象以及對(duì)象數(shù)組,那么構(gòu)造函數(shù)需要執(zhí)行4次,而,*net[2]并不執(zhí)行構(gòu)造函數(shù),所以答案為B。10、有如下程序:#include<iostream>usingnamespacestd;intmain(){intsum;for(inti=0;i<6;i+=3){sum=1;for(intj=i;j<6;j++)sum+=j;}cout<<sum<<endl;return0;}運(yùn)行時(shí)的輸出結(jié)果是()。A、3B、10C、12D、15標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:由題干可以知道,外層循環(huán)會(huì)進(jìn)行兩次,且第一次的結(jié)果我們可以不去理會(huì)和計(jì)算,讀者仔細(xì)觀察能發(fā)現(xiàn),在第一次的循環(huán)以后sum和j都會(huì)被重新賦值,所以外層第二次循環(huán)如下:此時(shí)i=3,sum=3內(nèi)層循環(huán)開始如下:j=3,j<6,sum=6;i=4,j<6,sum=10,j=5,j<6,sum=15,j=6退出內(nèi)層循環(huán)。得到sum=15。11、下面關(guān)于虛函數(shù)的描述中正確的是()。A、虛函數(shù)是一個(gè)靜態(tài)成員函數(shù)B、虛函數(shù)是一個(gè)非成員函數(shù)C、虛函數(shù)既可以在函數(shù)說明時(shí)定義,也可以在函數(shù)實(shí)現(xiàn)時(shí)定義D、派生類的虛函數(shù)與基類中對(duì)應(yīng)的虛函數(shù)具有相同的參數(shù)個(gè)數(shù)和類型標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在基類中用vinual聲明成員函數(shù)為虛函數(shù),所以AB錯(cuò)誤。在派生類中重新定義此函數(shù),要求函數(shù)名、函數(shù)類型、函數(shù)參數(shù)個(gè)數(shù)和類型全部與基類的虛函數(shù)相同。12、生成派生類對(duì)象時(shí),派生類構(gòu)造函數(shù)調(diào)用基類構(gòu)造函數(shù)的條件是()。A、無(wú)需任何條件B、基類中顯示定義了構(gòu)造函數(shù)C、派生類中顯式定義了構(gòu)造函數(shù)D、派生類構(gòu)造函數(shù)明確調(diào)用了基類構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:因?yàn)榕缮悘幕愔欣^承,它含有基類中的數(shù)據(jù)成員和函數(shù)成員,所以當(dāng)生成派生類對(duì)象時(shí),能無(wú)條件的調(diào)用基類的構(gòu)造函數(shù)。13、要定義一個(gè)具有5個(gè)元素的一維數(shù)組vect,并使其各元素的初值依次是30,50,-88,0和0,則下列定義語(yǔ)句中錯(cuò)誤的是()。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í)點(diǎn)解析:此題考查的是一維數(shù)組定義時(shí)的初始化。當(dāng)數(shù)組聲明時(shí)沒有給出數(shù)組的大小但是有初始化列表時(shí),數(shù)組的大小就由列表中元素的個(gè)數(shù)來確定。所以選項(xiàng)A中數(shù)組只定義3個(gè)元素,不符合題目。14、以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是()。A、publicB、staticC、protectedD、private標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是類的訪問權(quán)限。在C++語(yǔ)言中,類的訪問權(quán)限有公有、保護(hù)和私有三種。故本題選B。15、有如下類定義:classMyBase{intk;public:MyBase(intn=0):k(n){}intvalue()const{returnk;}};classMyDerived:MyBase{intj;public:MyDerived(inti):j(i){}intgetK()const{returnk;}intgetJ()const{returnj;}};編譯時(shí)發(fā)現(xiàn)有一處語(yǔ)法錯(cuò)誤,對(duì)這個(gè)錯(cuò)誤最準(zhǔn)確的描述是()。A、函數(shù)getK試圖訪問基類的私有成員變量kB、在類MyDerived的定義中,基類名MyBase前缺少關(guān)鍵字public、protected或privateC、類MyDerived缺少一個(gè)無(wú)參的構(gòu)造函數(shù)D、類MyDerived的構(gòu)造函數(shù)沒有對(duì)基類數(shù)據(jù)成員k進(jìn)行初始化標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是派生類對(duì)基類成員的訪問。因?yàn)轭愔腥笔〉脑L問權(quán)限是私有,所以本題中MyBase類中定義的成員k是私有成員。派生類中的成員只能訪問基類中的公有成員和保護(hù)成員,不能訪問基類中的私有成員。所以派生類中函數(shù)getK()中的語(yǔ)句returnk;是非法的。16、對(duì)于一個(gè)類定義,下列敘述中錯(cuò)誤的是()。A、如果沒有定義拷貝構(gòu)造函數(shù),編譯器將生成一個(gè)拷貝構(gòu)造函數(shù)B、如果沒有定義缺省的構(gòu)造函數(shù),編譯器將一定生成一個(gè)缺省的構(gòu)造函數(shù)C、如果沒有定義構(gòu)造函數(shù),編譯器將生成一個(gè)缺省的構(gòu)造函數(shù)和一個(gè)拷貝構(gòu)造函數(shù)D、如果已經(jīng)定義了構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會(huì)生成任何構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是構(gòu)造函數(shù)。如果一個(gè)類中沒有定義任何構(gòu)造函數(shù),編譯器將生成一個(gè)不帶參數(shù)的公有缺省構(gòu)造函數(shù)。但只要定義了一個(gè)任意的構(gòu)造函數(shù),就不會(huì)生成缺省構(gòu)造函數(shù)了。17、有如下程序:#include#includeusingnamespacestd;classXCF{inta:public:XCF(intaa=0):a(aa){cout<<"1";}XCF(XCF&x){a=x.a(chǎn);cout<<"2";}~XCF(){cout<Geta();deletepd;return0:}運(yùn)行時(shí)的輸出結(jié)果是()。A、1215588B、1218855C、12185D、128512標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在這個(gè)程序中在建立對(duì)象d1(5)時(shí),調(diào)用構(gòu)造函數(shù)xCF(intaa=0):a(aa){cout<<"1";},輸出1;在建立d2(d1)時(shí),調(diào)用拷貝構(gòu)造函數(shù)xcF(xCF&x){a=x.a(chǎn);cout(<"2";},輸出2;在建立newxCF(8)對(duì)象時(shí),調(diào)用構(gòu)造函數(shù)XCF(intaa=0):a(aa){cout<<"1";},輸出1;語(yǔ)句cout<Geta()的功能是輸出8:語(yǔ)句deletepd;調(diào)用析構(gòu)函數(shù)~XCF(),輸出8;當(dāng)退出程序時(shí),分別釋放對(duì)象d2、d1,輸出55。18、有如下程序:#include#includeusingnamespacestd;intmain(){cout<A、***123***456B、***123456***C、***123456D、123456標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在主函數(shù)中第一次輸出時(shí)調(diào)用函數(shù)setfill(’*’)設(shè)置填充字符為‘*’,調(diào)用函數(shù)setw(6)設(shè)置每次輸出的寬度為6,所以第一次輸出123時(shí),多余的三個(gè)空位用‘*’填充,即結(jié)果為***123,第二次從輸出流中輸出456。19、在表達(dá)式x+y*z中,+是作為成員函數(shù)重載的運(yùn)算符,木是作為非成員函數(shù)重載的運(yùn)算符。下列敘述中正確的是()。A、operator+有兩個(gè)參數(shù),operator*有兩個(gè)參數(shù)B、operator+有兩個(gè)參數(shù),operator*有一個(gè)參數(shù)C、operator+有一個(gè)參數(shù),operator*有兩個(gè)參數(shù)D、operator+有一個(gè)參數(shù),operator*有一個(gè)參數(shù)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是運(yùn)算符的重載。運(yùn)算符可重載成員函數(shù),也可重載為友元函數(shù)。當(dāng)重載為成員函數(shù)時(shí),運(yùn)算符重載函數(shù)的形參個(gè)數(shù)要比運(yùn)算符操作數(shù)的個(gè)數(shù)少一個(gè);當(dāng)重載為友元函數(shù)時(shí),其參數(shù)個(gè)數(shù)應(yīng)與操作數(shù)的個(gè)數(shù)相同。20、C++中的模板包括()。A、對(duì)象模板和函數(shù)模板B、對(duì)象模板和類模板C、函數(shù)模板和類模板D、變量模板和對(duì)象模板標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是模板。在C++語(yǔ)言中,模板有兩類:函數(shù)模板和類模板。21、下列模板聲明中,有語(yǔ)法錯(cuò)誤的是()。A、templateTfun(Tx){returnx;}B、templateTfun(Tx,intn){returnx*n;}C、templateTfun(T*p){return*p;}D、templateTclassA{Tn;};標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:第四個(gè)選項(xiàng)是定義類模板的,但是class前面的T是多余的。對(duì)于第二個(gè)選項(xiàng),同一個(gè)類的對(duì)象相乘還是同一個(gè)類的對(duì)象,但是可能要考慮溢出的問題。國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列選項(xiàng)中,不屬于模塊間耦合的是()。A、內(nèi)容耦合B、異構(gòu)耦合C、控制耦合D、數(shù)據(jù)耦合標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:耦合可以分為下列幾種,它們之間的耦合度由高到低排列:內(nèi)容耦合一一若一個(gè)模塊直接訪問另一模塊的內(nèi)容,則這兩個(gè)模塊稱為內(nèi)容耦合。公共耦合一一若一組模塊都訪問同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),則稱為公共耦合。外部耦合一一若一組模塊都訪問同一全局?jǐn)?shù)據(jù)項(xiàng),則稱為外部耦合。控制耦合一一若一模塊明顯地把開關(guān)量、名字等信息送入另一模塊,控制另一模塊的功能,則稱為控制耦合。標(biāo)記耦合一一若兩個(gè)以上的模塊都需要其余某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu)時(shí),不使用其余全局變量的方式而全使用記錄傳遞的方式,這樣的耦合稱為標(biāo)記耦合。數(shù)據(jù)耦合一一若一個(gè)模塊訪問另一個(gè)模塊,被訪問模塊的輸入和輸出都是數(shù)據(jù)項(xiàng)參數(shù),則這兩個(gè)模塊為數(shù)據(jù)耦合。非直接耦合一一若兩個(gè)模塊沒有直接關(guān)系,它們之間的聯(lián)系完全是通過程序的控制和調(diào)用來實(shí)現(xiàn)的,則稱這兩個(gè)模塊為非直接耦合,這樣的耦合獨(dú)立性最強(qiáng)。2、下列關(guān)于棧的敘述正確的是()。A、棧按“先進(jìn)先出”組織數(shù)據(jù)B、棧按“先進(jìn)后出”組織數(shù)據(jù)C、只能在棧底插入數(shù)據(jù)D、不能刪除數(shù)據(jù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:棧是按“先進(jìn)后出”的原則組織數(shù)據(jù)的,數(shù)據(jù)的插入和刪除都在棧頂進(jìn)行操作。3、下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是A、循環(huán)隊(duì)列B、帶鏈隊(duì)列C、二叉樹D、帶鏈棧標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間的前后件關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。循環(huán)隊(duì)列、帶鏈隊(duì)列和帶鏈棧都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。4、定義如下枚舉類型enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};表達(dá)式Wednesday=Friday的值是()。A、falseB、trueC、2D、異常標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:enum<枚舉類型名>{<枚舉元素表>);其中:關(guān)鍵詞“enum”表示定義的是枚舉類型,枚舉類型名由標(biāo)識(shí)符組成,而枚舉元素表由枚舉元素或枚舉常量組成。本題中的枚舉類型中的數(shù)據(jù)值Wednesday為2,而Friday的值賦值為2,所以判斷Wednesday等于Friday的表達(dá)式值為真,即true。5、從工程管理角度看,軟件設(shè)計(jì)一般分為兩步完成,它們是()。A、概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)B、數(shù)據(jù)設(shè)計(jì)與接口設(shè)計(jì)C、軟件結(jié)構(gòu)設(shè)計(jì)與數(shù)據(jù)設(shè)計(jì)D、過程設(shè)計(jì)與數(shù)據(jù)設(shè)計(jì)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件設(shè)計(jì)是開發(fā)階段最重要的步驟.從工程管理的角度來看可分為兩步:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì).概要設(shè)計(jì)是將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu),確定系統(tǒng)級(jí)接口、全局?jǐn)?shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫(kù)模式;詳細(xì)設(shè)計(jì)是指確立每個(gè)模塊的實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用適應(yīng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。從技術(shù)觀點(diǎn)來看,軟件設(shè)計(jì)包括軟件結(jié)構(gòu)設(shè)計(jì)(定義軟件系統(tǒng)各主要部件之間的關(guān)系)、數(shù)據(jù)設(shè)計(jì)(將分析時(shí)創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu))、接口設(shè)計(jì)(描述軟件內(nèi)部、軟件與協(xié)作系統(tǒng)之間以及軟件與人之間如何通信)、過程設(shè)計(jì)(把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程)四個(gè)步驟。6、用樹形結(jié)構(gòu)表示實(shí)體之間聯(lián)系的模型是()。A、關(guān)系模型B、網(wǎng)狀模型C、層次模型D、以上三個(gè)都是標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),這種結(jié)構(gòu)方式在現(xiàn)實(shí)世界中很普遍,它們自頂向下、層次分明。7、有三個(gè)關(guān)系R、S和T如下:其中關(guān)系T由關(guān)系R和S通過某種操作得到,該操作為()。A、選擇B、投影C、交D、并標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:由關(guān)系T中的數(shù)據(jù)可以看出,其數(shù)據(jù)由關(guān)系R和s的數(shù)據(jù)組成。所以關(guān)系T是由關(guān)系R和T通過并運(yùn)算得到的。8、在類聲明中,緊跟在“public:”后聲明的成員的訪問權(quán)限是()。A、私有B、公有C、保護(hù)D、默認(rèn)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:類【{1提供了3種訪問控制的權(quán)限:公有,私有和保護(hù)。其中公有類型定義了類的外部接口,任何一個(gè)外部的訪問都必須通過外部接口進(jìn)行。私有類型的成員只允許本類的成員函數(shù)訪問,來自類外部的任何訪問都是非法的,保護(hù)類型介于公有類型和私有類型之間,在繼承和派生時(shí)可以體現(xiàn)出其特點(diǎn)。9、下列敘述中,錯(cuò)誤的是()。A、false是一個(gè)邏輯型常量B、b是一個(gè)字符型常量C、365是一個(gè)int常量D、3.1415926是一個(gè)double常量標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:字符常量簡(jiǎn)稱字符,它以單引號(hào)作為起止符號(hào),中間有一個(gè)或若干個(gè)字符?;蛘咭浴埃堋遍_頭的包括多個(gè)字符的字符序列也符合規(guī)定的字符常量。10、有如下類的定義。橫線處的語(yǔ)句是()。classMyClass{public:MyClass(inta=0,intb=0){X=a;Y=b:}voidChange()const{X-=10;Y+=10;}private:intX,Y;};A、staticB、constC、mutableD、不需要填入內(nèi)容標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C++中const關(guān)鍵字用來表示一個(gè)常量,同時(shí)const也用來修飾函數(shù)。這兩個(gè)概念需要明確:const所修飾的函數(shù)只能是類的成員函數(shù),因?yàn)閏onst所修飾的函數(shù)中,要由編譯器負(fù)責(zé)保護(hù)類的成員變量不被修改。而相對(duì)的,mutable則是用來修飾類的成員變量,讓該變量在const所修飾的成員函數(shù)中可以被修改。而且const修飾的函數(shù)只能是類的成員函數(shù),mutable修飾的變量只能是類的成員變量。11、在關(guān)系數(shù)據(jù)庫(kù)中,用來表示實(shí)體間聯(lián)系的是A、屬性B、二維表C、網(wǎng)狀結(jié)構(gòu)D、樹狀結(jié)構(gòu)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在關(guān)系數(shù)據(jù)庫(kù)中,實(shí)體間的聯(lián)系由一個(gè)二維表來表示。12、有如下程序:#include<iostream>usingnarnespacestd;classTestClass{public:TestClass(){cout<<’’BB’’;fun();}voidfun(){tout<<’’Bf’’;}};classTestClass1:publicTestClass{public:TestClass1(){cout<<’’DD’’;}voidfun(){tout<<’’Df’’;}};intmain(){TestClass1d;return0;}執(zhí)行上面的程序?qū)⑤敵?)。A、BBBfDDB、BBDfDDDfC、DDD、DDBBBf標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:TestClass是TestClass1的基類。由主函數(shù)main入手,定義TestClass1的對(duì)象d,調(diào)用基類TestClass構(gòu)造函數(shù)輸出BB,調(diào)用基類成員函數(shù)fun輸出Bf,然后調(diào)用派生類的構(gòu)造函數(shù),輸出DD。13、若有下面的函數(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á)式。因此,本題中fun0函數(shù)的實(shí)參表由a+b、3和max(n—1,b)組成。14、下面是重載為非成員函數(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++語(yǔ)言規(guī)定,“=”運(yùn)算符只能作為成員函數(shù)重載。15、有如下程序:#include<iostream>usingnamespacestd;classPart{public:Part(intx=0):val(x){cout<<val;}~Part(){cout<<val;}private:intval;};classWhole{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知識(shí)點(diǎn)解析:此題考查的是類的構(gòu)造與析構(gòu)。建立類的對(duì)象時(shí),構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)基類被繼承時(shí)聲明的順序(自左向右)接著執(zhí)行成員對(duì)象的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)成員對(duì)象在類中聲明的順序,最后執(zhí)行自身的構(gòu)造函數(shù)。析構(gòu)順序與之相反。本題中,Whole類中有兩個(gè)Part類的成員p1和p2,根據(jù)它們定義的順序,先構(gòu)造p1再構(gòu)造p2。所以,首先被構(gòu)造的是p1(y),輸出2;第二個(gè)被構(gòu)造的是p2(x),輸出1;最后調(diào)用析構(gòu)函數(shù),輸出val的值3;析構(gòu)函數(shù)調(diào)用順序與構(gòu)造函數(shù)相反。故最后輸出213312。16、有如下程序:#include<iostream>usingnamespacestd;classToy{public:Toy(char*_n){strcpy(name,_n);count++;}~TOYO{count--;}char*GetName(){retBtnname;}staticintgetCount(){returncount;}private;charname[10];staticintcount;};intToy::count=0;intmain(){Toyt1(’’Snoopy’’),t2(’’Mickey’’),t3(’’Barbie’’);cout<<t1.getCount()<<end1;return0;}運(yùn)行時(shí)的輸出結(jié)果是()。A、1B、2C、3D、運(yùn)行時(shí)出錯(cuò)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:類Toy中包含一個(gè)字符數(shù)組name和一個(gè)靜態(tài)整型變量count。在程序中首先給類Toy的成員count的賦初始值0,然后在主函數(shù)中,定義了三個(gè)Toy對(duì)象t1、t2、t3,并分別對(duì)它們的name字段賦值,在賦值的同時(shí)變量count的值加l,所以最后變量count的值等于3。17、有如下語(yǔ)句序列:intx=100,&r==x:cout<A、100-100B、100-0012FF7CC、0012FF7C-100D、0012FF7C-0012FF7C標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在語(yǔ)句intx=100,&r==x;中聲明r初始化對(duì)x的引用,所以x和&r的值都是100。18、有如下程序:#includeusingnamespacestd;classBase{public:voidfun1(){cout<<"Baseha";}virtualvoidfun2(){cout<<"Base\n";}};classDerived:publicBase{public:voidfun1(){cout<<"Derivedha";}voidfun2(){cout<<"Derivedha";}};voidf(Base&b){b.fun1();b.fun2();}intmain(){Derivedobj;f(obj);return0;}執(zhí)行這個(gè)程序的輸出結(jié)果是()。A、BaseBaseB、BaseDerivedC、DerivedBaseD、DerivedDerived標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是虛函數(shù)的概念。在C++語(yǔ)言中,一個(gè)派生類的對(duì)象可以被它的任何一個(gè)基類的指針?biāo)赶?,若基類和派生類中存在~模一樣的成員函數(shù)。那么通過該基類指針調(diào)用這樣的成員函數(shù)時(shí),若這個(gè)成員函數(shù)被定義成虛函數(shù),那么就調(diào)用派生類中的;否則就調(diào)用基類中的。本題中,在f()函數(shù)中,形參b是一個(gè)基類的引用,它引用的是主函數(shù)中定義的派生類對(duì)象obj,所以在調(diào)用fun1()時(shí),運(yùn)行的是基類的版本,而fun2()運(yùn)行的是派生類的版本。19、將運(yùn)算符重載為類成員函數(shù)時(shí),其參數(shù)表中沒有參數(shù),說明該運(yùn)算符是()。A、不合法的運(yùn)算符B、—元運(yùn)算符C、無(wú)操作數(shù)的運(yùn)算符D、二元運(yùn)算符標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:對(duì)于一元或二元運(yùn)算符函數(shù)作為成員函數(shù)重載時(shí),第一操作數(shù)就是對(duì)象本身,并不顯式地出現(xiàn)在參數(shù)表中。即第一操作數(shù)僅以this指針的形式隱含存在于參數(shù)表中。因此,對(duì)于一元運(yùn)算符參數(shù)表是空的;對(duì)于二元運(yùn)算符參數(shù)表中只有一個(gè)參數(shù),它代表第二操作數(shù)。20、若要對(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)解析:“+”是一個(gè)二元運(yùn)算符,因此作為成員函數(shù)重載時(shí)參數(shù)表中只有一個(gè)參數(shù),對(duì)應(yīng)于第二個(gè)操作數(shù),而第一個(gè)操作數(shù)是對(duì)象本身。運(yùn)算符函數(shù)的函數(shù)名是由運(yùn)算符前加關(guān)鍵字operator構(gòu)成的。21、下列關(guān)于C++流的說明中,正確的是()。A、與鍵盤、屏幕、打印機(jī)和通信端口的交互都可以通過流類來實(shí)現(xiàn)B、從流中獲取數(shù)據(jù)的操作稱為插入操作,向流中添加數(shù)據(jù)的操作稱為提取操作C、cin是一個(gè)預(yù)定義的輸入流類D、輸出流有一個(gè)名為open的成員函數(shù),其作用是生成一個(gè)新的流對(duì)象標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是C++流的概念。從輸入流中提取數(shù)據(jù)稱為提取操作,把表達(dá)式插入到輸出流中的操作稱為插入操作,故選項(xiàng)B錯(cuò)誤:cin是一個(gè)預(yù)定義的輸入流對(duì)象而不是流類,故選項(xiàng)C錯(cuò)誤:輸入輸出流中沒有open成員函數(shù),故選項(xiàng)D錯(cuò)誤。22、語(yǔ)句ofstreamf("SALARY.DAT",ios_base::app);功能是建立流對(duì)象f,并試圖打開文件SALARY.DAT與f關(guān)聯(lián),而且()。A、若文件存在,將其置為空文件;若文件不存在,打開失敗B、若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個(gè)新文件C、若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗D、若文件存在,打開失??;若文件不存在,建立一個(gè)新文件標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是文件打開模式。文件打開模式iso_base::app是為添加數(shù)據(jù)而打開(總是在尾部寫),故只有選項(xiàng)B說法正確。23、下列語(yǔ)句分別是不同程序中的第一個(gè)輸入輸出語(yǔ)句,若去掉其中的“<<left”,輸出效果將發(fā)生變化的是()。A、cout<<left<<setfill(’*’)<<357;B、cout<<left<<setw(5)<<357;C、cout<<left<<setw(5)<<"ABCDE";D、cout<<left<<"ABCDE“:標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是C++流。setfill()作用是設(shè)置填充字符;left是使輸出數(shù)據(jù)在指定寬度內(nèi)左對(duì)齊:setw()的作用是設(shè)置輸入輸出寬度,且只對(duì)當(dāng)前…次有效。24、要建立文件流并打開當(dāng)前目錄下的文件file.dat用于輸入,下列語(yǔ)句中錯(cuò)誤的是()。A、ifstreamfin=ifstream.open(’’file.dat’’);B、itstream*fin=ewifstream(’’file.dat’’);C、ifstreamfin;fin.open(’’file.dat’’);D、ifstream*fin=newifstream0;fin->open(’’file.dat’’);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在選項(xiàng)A中,在賦值號(hào)的左側(cè)表示建立一個(gè)輸入流對(duì)象fin,而在賦值號(hào)的右側(cè)的表達(dá)式不正確,因?yàn)槲募斎肓黝恑fstream不能直接調(diào)用其成員函數(shù)open。25、當(dāng)使用ofstream流類定義一個(gè)流對(duì)象并打開一個(gè)磁盤文件時(shí),文件的默認(rèn)打開方式為()。A、iosbase::inB、ios_base::binaryC、ios_base::inliosbase::outD、ios_base::out標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:對(duì)于ofstream,默認(rèn)的打開方式是iosbase::out,ofstream只能用于輸出,它沒有提供任何用于輸入的操作。國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷第4套一、選擇題(本題共34題,每題1.0分,共34分。)1、算法的空間復(fù)雜度是指()。A、算法程序的長(zhǎng)度B、算法程序中的指令條數(shù)C、算法程序所占的存儲(chǔ)空間D、算法執(zhí)行過程中所需要的存儲(chǔ)空間標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:算法的空間復(fù)雜度是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間。一個(gè)算法所占用的存儲(chǔ)空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲(chǔ)空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲(chǔ)空間。如果額外空間量相對(duì)于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實(shí)際問題中,為了減少算法所占的存儲(chǔ)空間,通常采用壓縮存儲(chǔ)技術(shù),以便盡量減少不必要的額外空間。2、下列敘述中正確的是()。A、算法的效率只與問題的規(guī)模有關(guān),而與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無(wú)關(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)解析:算法的時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量。算法的工作量用算法所執(zhí)行的基本運(yùn)算的次數(shù)來度量,而算法所執(zhí)行的基本運(yùn)算次數(shù)是問題規(guī)模的函數(shù);算法的空間復(fù)雜度一般是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間。算法的時(shí)間復(fù)雜度與空間復(fù)雜度并不相關(guān)。數(shù)據(jù)的邏輯結(jié)構(gòu)就是數(shù)據(jù)元素之間的邏輯關(guān)系,它是從邏輯上描述數(shù)據(jù)元素之間的關(guān)系,是獨(dú)立于計(jì)算機(jī)的:數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是研究數(shù)據(jù)元素和數(shù)據(jù)元素之間的關(guān)系如何在計(jì)算機(jī)中表示,它們并非一一對(duì)應(yīng)。算法的執(zhí)行效率不僅與問題的規(guī)模有關(guān),還與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)有關(guān)。3、如果有以下定義及初始化:inta=3,*p=&a;則由此可以推斷,*p的值是()。A、變量a的值,即3B、變量a的地址值C、變量P的地址值D、無(wú)意義標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:題目中的定義初始化是定義一個(gè)整型變量a,初始化為3。而“int*p=&a;”是定義一個(gè)整型指針變量p,將變量a的地址作為指針變量p的初值。木p是指針變量p指向的存儲(chǔ)單元的內(nèi)容,即變量值。所以木p指向a的值3。4、一棵二叉樹中共有70個(gè)葉子結(jié)點(diǎn)與80個(gè)度為1的結(jié)點(diǎn),則該二叉樹中的總結(jié)點(diǎn)數(shù)為()。A、219B、221C、229D、231標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在二叉樹中,葉子結(jié)點(diǎn)個(gè)數(shù)為n0,則度為2的結(jié)點(diǎn)數(shù)n2=n0-1。本題中葉子結(jié)點(diǎn)的個(gè)數(shù)為70,所以度為2的結(jié)點(diǎn)個(gè)數(shù)為69,因而總結(jié)點(diǎn)數(shù)=葉子結(jié)點(diǎn)數(shù)+度為1的結(jié)點(diǎn)數(shù)+度為2的結(jié)點(diǎn)數(shù)=70+80+69=219。5、某二叉樹共有7個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有1個(gè),則該二叉樹的深度為(假設(shè)根結(jié)點(diǎn)在第1層)A、3B、4C、6D、7標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。題目中的二叉樹的葉子結(jié)點(diǎn)為1,因此度為2的結(jié)點(diǎn)的數(shù)目為0,故該二叉樹為7層,每層只有一個(gè)結(jié)點(diǎn)。6、軟件生命周期是指()。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ù)到停止使用、退役的過程。7、軟件生命周期可分為定義階段,開發(fā)階段和維護(hù)階段。詳細(xì)設(shè)計(jì)屬于()。A、定義階段B、開發(fā)階段C、維護(hù)階段D、上述三個(gè)階段標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查軟件生命周期的相關(guān)概念.通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個(gè)時(shí)期都屬于軟件生命周期。一般包括可行性研究與需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、交付使用以及維護(hù)等活動(dòng)。還可以將軟件生命周期分為軟件定義、軟件開發(fā)及軟件運(yùn)行維護(hù)三個(gè)階段。8、多繼承的構(gòu)造順序可分為如下四步:①所有非虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造②所有虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造③所有子對(duì)象的構(gòu)造函數(shù)按照它們聲明的順序構(gòu)造④派生類自己的構(gòu)造函數(shù)體這四個(gè)步驟的正確順序是()。A、④③①②B、②④③①C、②①③④D、③④①②標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:多繼承派生類的構(gòu)造順序是:首先調(diào)用虛基類的構(gòu)造函數(shù),然后調(diào)用非虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造,其次調(diào)用子對(duì)象的構(gòu)造函數(shù),最后是派生類構(gòu)造函數(shù)中的內(nèi)容。9、下列語(yǔ)句中,錯(cuò)誤的是()。A、constintbuffer=-256;B、constanttemp;C、constdouble*point;D、constdouble*it=newdouble(5.5);標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:符號(hào)常量聲明語(yǔ)句的語(yǔ)法格式是:const類型名符號(hào)常量=初值表達(dá)式,選項(xiàng)B中未給常變量賦初值,故錯(cuò)誤;而選項(xiàng)C中定義的是一個(gè)指向浮點(diǎn)型常量的指針,而不是定義一個(gè)浮點(diǎn)型常量,所以可以不賦初值。10、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0){cout<<x;)};classDerived:publicBase{public:Derived(intx=0){cout<<x;)private:Baseval;);intmain(){Derivedd(1);return0:}程序的輸出結(jié)果是()。A、0B、1C、01D、001標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是類的構(gòu)造。建立類的對(duì)象時(shí),構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)基類被繼承時(shí)聲明的順序(自左向右).>執(zhí)行成員對(duì)象的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)成員對(duì)象在類中聲明的順序.>執(zhí)行自身的構(gòu)造函數(shù)。本題中,首先會(huì)構(gòu)造基類Base,調(diào)用Base類的構(gòu)造函數(shù),輸出0;然后還定義了一個(gè)Base類的對(duì)象,再次調(diào)用Base類的默認(rèn)構(gòu)造函數(shù)輸出0;最后構(gòu)造自身,因主函數(shù)中傳入了構(gòu)造參數(shù)l,所以輸出1。故最后輸出結(jié)果是:001。11、對(duì)C++編譯器區(qū)分重載函數(shù)無(wú)任何意義的信息是()。A、參數(shù)類型B、參數(shù)個(gè)數(shù)C、返回值類型D、常成員函數(shù)關(guān)鍵字const標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:所謂函數(shù)重載是指同一個(gè)函數(shù)名可以對(duì)應(yīng)多個(gè)函數(shù)的實(shí)現(xiàn)。每種實(shí)現(xiàn)對(duì)應(yīng)一個(gè)函數(shù)體,這些函數(shù)的名字相同,其參數(shù)類型或個(gè)數(shù)不同,但不能出現(xiàn)函數(shù)返回值類型不同而參數(shù)類型和個(gè)數(shù)完全相同的重載。所以本題答案為c。12、在關(guān)系模型中,每一個(gè)二維表稱為一個(gè)()。A、關(guān)系B、屬性C、元組D、主碼(鍵)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:每個(gè)二維表代表一個(gè)關(guān)系,由表框架及表的元組組成。13、在下列關(guān)系運(yùn)算中,不改變關(guān)系表中的屬性個(gè)數(shù)但能減少元組個(gè)數(shù)的是()。A、并B、交C、投影D、笛卡兒乘積標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:關(guān)系R與S經(jīng)交運(yùn)算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的有序組所組成,記為R∩S。形式定義如下:R∩S≡{t∈R∧t∈S}=R-(R-S)。所以不改變關(guān)系表中的屬性個(gè)數(shù),但能減少元組個(gè)數(shù)的是關(guān)系表之間的交操作。14、下列有關(guān)繼承和派生的敘述中,正確的是()。A、如果一個(gè)派生類私有繼承其基類,則該派生類對(duì)象不能訪問基類的保護(hù)成員B、派生類的成員函數(shù)可以訪問基類的所有成員C、基類對(duì)象可以賦值給派生類對(duì)象D、如果派生類沒有實(shí)現(xiàn)基類的一個(gè)純虛函數(shù),則該派生類是一個(gè)抽象類標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是繼承和派生。無(wú)論是哪種繼承方式,派生類都能夠訪問基類的公有和保護(hù)成員,而不能訪問基類的私有成員,故選項(xiàng)A和B錯(cuò)誤;公有繼承時(shí),基類的對(duì)象不可作為派生類的對(duì)象處理,即基類對(duì)象不可賦值給派生類對(duì)象,所以選項(xiàng)C錯(cuò)誤。15、閱讀下面的程序:#include<iostream.h>voidmain(){intx;cin>>x;if(x++>5)cout<<x<<endl;elsecout<<x--<<endl;}如果兩次執(zhí)行上述程序,且鍵盤輸入分別為4和6,則輸出結(jié)果分別是()。A、4,6B、3,6C、4,7D、5,7標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題首先讀入數(shù)值4賦給變量x,因?yàn)閤++>5不成立,因?yàn)椤?+”后綴,之后x的值變?yōu)?,執(zhí)行語(yǔ)句cout<<x--<<endl;輸出:5,之后x的值變?yōu)?。當(dāng)讀入的數(shù)值是6時(shí),因?yàn)閤++>5成立,所以執(zhí)行語(yǔ)句cout<<x<<endl;輸出7。16、下列關(guān)于基類和派生類關(guān)系的敘述中,正確的是()。A、每個(gè)類最多只能有一個(gè)直接基類B、派生類中的成員可以訪問基類中的任何成員C、基類的構(gòu)造函數(shù)必須在派生類的構(gòu)造函數(shù)體中調(diào)用D、派生類除了繼承基類的成員,還可以定義新的成員標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:繼承分為單繼承和多繼承,一個(gè)類只有一個(gè)直接基類時(shí),稱為單繼承;而一個(gè)類同時(shí)有多個(gè)直接基類時(shí),則稱為多繼承。派生類的數(shù)據(jù)成員由所有基類的的數(shù)據(jù)成員與派生類新增的數(shù)據(jù)成員共同組成。17、下列關(guān)于賦值運(yùn)算符“=”重載的敘述中,正確的是()。A、賦值運(yùn)算符只能作為類的成員函數(shù)重載B、默認(rèn)的賦值運(yùn)算符實(shí)現(xiàn)了“深層復(fù)制”功能C、重載的賦值運(yùn)算符函數(shù)有兩個(gè)本類對(duì)象作為形參D、如果已經(jīng)定義了復(fù)制(拷貝)構(gòu)造函數(shù),就不能重載賦值運(yùn)算符標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:重載賦值運(yùn)算符必須定義為類的成員函數(shù);所以選項(xiàng)A正確。重載賦值運(yùn)算符時(shí)應(yīng)返回一個(gè)類的對(duì)象,所以C選項(xiàng)錯(cuò)誤。如果已經(jīng)定義了復(fù)制(拷貝)構(gòu)造函數(shù),仍然可以重載賦值運(yùn)算符,所以D選項(xiàng)錯(cuò)誤。18、下列關(guān)于派生類和基類的描述中,正確的是()。A、派生類成員函數(shù)只能訪問基類的公有成員B、派生類成員函數(shù)只能訪問基類的公有和保護(hù)成員C、派生類成員函數(shù)可以訪問基類的所有成員D、派生類對(duì)基類的默認(rèn)繼承方式是公有繼承標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:派生類不論是采用那種繼承方式繼承基類,它的成員函數(shù)只能訪問基類的公有成員和保護(hù)成員。19、為了取代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++語(yǔ)言引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C語(yǔ)言的預(yù)處理宏函數(shù)。20、下列關(guān)于運(yùn)算符重載的敘述中,正確的是()。A、通過運(yùn)算符重載,可以定義新的運(yùn)算符B、有的運(yùn)算符只能作為成員函數(shù)重載C、若重載運(yùn)算符+,則相應(yīng)的運(yùn)算符函數(shù)名是+D、重載一個(gè)二元運(yùn)算符時(shí),必須聲明兩個(gè)形參標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是運(yùn)算符重載。c++中,“=”、“[]”、“()”、“->”以及所有的類型轉(zhuǎn)換符只能作為成員函數(shù)重載,故B選項(xiàng)正確;運(yùn)算符重載只是賦予已有的運(yùn)算符多重含義,并不是定義新的運(yùn)算符;運(yùn)算符函數(shù)的函數(shù)名就是在運(yùn)算符前加上關(guān)鍵字operator。21、若已經(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ù)來使用。22、下列描述中,不屬于面向?qū)ο笏枷胫饕卣鞯氖?)。A、封裝性B、跨平臺(tái)性C、繼承性D、多態(tài)性標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:封裝性、繼承性和多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)的三個(gè)基本特征。跨平臺(tái)性不是面向?qū)ο蟪绦蛟O(shè)計(jì)的特征。23、將運(yùn)算符“+”重載為非成員函數(shù),下列原型聲明中,錯(cuò)誤的是()。A、MycloCkoperator+(MyClock,long);B、MycloCkoperator+(MyClock,MyClock);C、MycloCkoperator+(1ong.long);D、MycloCkoperator+(1ong,MyClock);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:運(yùn)算符重載不能有二義性,故選項(xiàng)C)不能區(qū)分運(yùn)算符的準(zhǔn)確含義。24、下列關(guān)于模板的敘述中,錯(cuò)誤的是()。A、調(diào)用模板函數(shù)時(shí),有時(shí)可以省略模板實(shí)參.B、函數(shù)模板的每個(gè)實(shí)例就是一個(gè)函數(shù)定義C、類模板的每個(gè)實(shí)例就是一一個(gè)類定義D、類模板的實(shí)例是一個(gè)類對(duì)象標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在定義對(duì)象的過程中,編譯系統(tǒng)會(huì)自動(dòng)地根據(jù)需要生成相應(yīng)的類定義,這種依據(jù)類模板生成類定義的過程稱為類模板的實(shí)例化。類模板實(shí)例化所生成的每一個(gè)類定義就是相應(yīng)類模板的一個(gè)實(shí)例。25、若Myclass為一個(gè)類,執(zhí)行“Myclassa[4],*p[5];”語(yǔ)句時(shí)會(huì)自動(dòng)調(diào)用該類構(gòu)造函數(shù)的次數(shù)是()。A、2B、5C、4D、9標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:語(yǔ)句MyClassa[4],*p[5]不僅定義了4個(gè)MyClass對(duì)象,分別為a[0],a[1],a[2],a[3],而且定義了5個(gè)指向MyClass對(duì)象的指針變量,分別為*p[0],*p[1],*p[2],*p[3],*p[4],所以共調(diào)用MyClass的構(gòu)造函數(shù)4次。26、有如下類和對(duì)象的定義:c1assConstants{public;staticdoublegetPIO{retum3.1416;)};Constantsconstants,下列各組語(yǔ)句中,能輸出3.1416的是()。A、cout<<constants—>getPI();和cout<<Constants::gerPI();B、cout<<constants.getPI();和cout<<Constants.getPI();C、cout<<constants—>getPI();和cout<<Constants—>getPI();D、cout<<constants.getPI();和cout<<Constants::getPI();標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是靜態(tài)成員函數(shù)的引用。getPI()是類Constants的靜態(tài)成員函數(shù)。引用靜態(tài)成員函數(shù)可以有兩種形式:一是通過類名直接進(jìn)行調(diào)用,例如類名::靜態(tài)成員函數(shù)名:另一種是用類的任何對(duì)象名進(jìn)行調(diào)用其作用僅是通過對(duì)象名間接的指出類名,例如constants.getPI()選項(xiàng)D即是這種調(diào)用方式。27、已知類Myclass的定義如下classMyClass{public:voidfunction1(MyClass&c){cout<<c.data;}staticvoidfunction2(MyClass&c){cout<<c.data;}voidfunction3(){cout<<data;}staricvoidfunction4(){cout<<data;}private:intdata;};其中有編譯錯(cuò)誤的函數(shù)是()。A、function1B、function2C、function3D、functicIn4標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:funcyion4()函數(shù)作為類的靜態(tài)成員函數(shù),不能直接訪問類中說明的非靜態(tài)成員,即cout<<data在編譯時(shí)會(huì)出錯(cuò)。28、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assA{public:A(inti=0):rl(i){}voidprint(){cout<<’E’<<rl<<’—’;)voidprint()const{cout<<’Ck<rl*rl<<’—’;}voidprint(intx){cout<"pk<rl*rl*rl<<’—’;}private:intr1,};intmain(){Aa1;constAa2(4);al.print(2);a2.print();returnO;}運(yùn)行時(shí)的輸出結(jié)果是()。A、P8—E4B、P8—C16—C、P0—E4—D、P0—C16—標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在主函數(shù)中創(chuàng)建al對(duì)象時(shí),調(diào)用類A的默認(rèn)構(gòu)造函數(shù),其數(shù)據(jù)成員r1的值等于O。當(dāng)執(zhí)行al.print(2)語(yǔ)句時(shí),調(diào)用帶參數(shù)的print成員函數(shù),所以輸出結(jié)果為p0—,對(duì)象a2為常成員,所以其成員變量r1的值等于4,因?yàn)槌?duì)象只能調(diào)用常成員函數(shù),所以當(dāng)執(zhí)行語(yǔ)句a2.print()語(yǔ)句時(shí),輸出結(jié)果為C14—。29、有如下程序:#include<iostream>usingnamespacestd;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<<sum;return0;}運(yùn)行時(shí)輸出的結(jié)果是()。A、120B、16C、154D、34標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是友元函數(shù)和遞歸函數(shù)。因?yàn)閒un函數(shù)是Sample類的友元函數(shù),所以fun函數(shù)可以直接訪問Sample類對(duì)象的私有成員x。主函數(shù)調(diào)用fun函數(shù),構(gòu)造參數(shù)為0~5。當(dāng)n小于2時(shí),fun函數(shù)返回1,其余返回值為n*fun(n-1)。n取0~5的值時(shí)fun(n)依次為1,1,2,6,24,120,累加結(jié)果為154。30、在類聲明中,緊跟在“public:”后聲明的成員的訪問權(quán)限是()。A、私有B、公有C、保護(hù)D、默認(rèn)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:類中提供了3種訪問控制的權(quán)限:公有,私有和保護(hù)。其中公有類型定義了類的外部接口,任何一個(gè)外部的訪問都必須通過外部接口進(jìn)行。私有類型的成員只允許本類的成員函數(shù)訪問,來自類外部的任何訪問都是非法的,保護(hù)類型介于公有類型和私有類型之間,在繼承和派生時(shí)可以體現(xiàn)出其特點(diǎn)。31、有如下類聲明:c1assMyBASE{intk;public:voidset(intn){k=m;}intget()const{returnk;}};c1assMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE::set(m);j=n;}intget()const{retumMyBASE::get()+j;}};則類MyDERIVED中保護(hù)的數(shù)據(jù)成員和成員函數(shù)的個(gè)數(shù)是()。A、4B、3C、2D、1標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是派生與繼承中的訪問權(quán)限。protected派生:private—>不可見:protected—>private;public一>protected。32、有如下程序:#inc1ude<iostream>usingnamespacestd;classMusic{public:voidsetTitle(char*str){strcpy(title,str);)protected:chartype[10];private:chartitle[20];};classJazz:publicMusic{public:voidset(char*str){strcpy(type,"Jazz");//①strcpy(title,str);//②}};下列敘述中正確的是()。A、程序編譯正確B、程序編譯時(shí)語(yǔ)句①出錯(cuò)C、程序編譯時(shí)語(yǔ)句②出錯(cuò)D、程序編譯時(shí)語(yǔ)句①和②都出錯(cuò)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:派生類Jazz不能訪問基類Music中的私有成員title。33、下列關(guān)于運(yùn)算符重載的敘述中,正確的是()。A、通過運(yùn)算符重載,可以定義新的運(yùn)算符B、有的運(yùn)算符只能作為成侵函數(shù)重載C、若重載運(yùn)算符+,則相應(yīng)的運(yùn)算符函數(shù)名是+D、重載一個(gè)二元運(yùn)算符時(shí),必須聲明兩個(gè)形參標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是運(yùn)算符重載。C++中,“=”、“[]”、“()”、“一>”以及所有的類型轉(zhuǎn)換符只能作為成員函數(shù)重載,故B選項(xiàng)正確;運(yùn)算符重載只是賦予已有的運(yùn)算符多重含義,并不是定義新的運(yùn)算符;運(yùn)算符函數(shù)的函數(shù)名就是在運(yùn)算符前加上關(guān)鍵字operator。34、在下列枚舉符號(hào)中,用來表示“相對(duì)于當(dāng)前位置”文件定位方式的是()。A、ios_base::curB、ios_base::begC、ios_base::outD、ios_base::end標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C++流的定位方式(也就是指針移動(dòng)方式)有三種,被定義為ios_base:.seekdir中的一組枚舉符號(hào):ios_base::beg相當(dāng)于文件首;ios_base::cur相當(dāng)于當(dāng)前位置(負(fù)數(shù)表示當(dāng)前位置之前);ios_base::end相對(duì)于文件尾。國(guó)家二級(jí)C++機(jī)試(選擇題)模擬試卷第5套一、選擇題(本題共19題,每題1.0分,共19分。)1、下列運(yùn)算符不能重載為友元函數(shù)的是()。A、=()[]->B、+-++--C、><>=<=D、+=-=*=/=標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此

溫馨提示

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

評(píng)論

0/150

提交評(píng)論