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

下載本文檔

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

文檔簡介

國眼家二級(C++)機試模擬試卷第1套

一、選擇題(本題共38題,每題1.0分,共38分。)

1、4種基本結(jié)構(gòu)中,能簡化大量程序代碼行的是()。

A、順序結(jié)構(gòu)

B、分支結(jié)構(gòu)

C、選擇結(jié)構(gòu)

D、重復(fù)結(jié)構(gòu)

標準答案:D

知識點解析:重復(fù)結(jié)構(gòu)又稱為循環(huán)結(jié)構(gòu),它根據(jù)給定的條件,判斷是否需要重復(fù)執(zhí)

行某一相同或類似的程序段,利用重復(fù)結(jié)構(gòu)可以簡化大量的程序行。

2、下列關(guān)于棧的描述正確的是()。

A、在棧中只能插入元素而不能刪除元素

B、在棧中只能刪除元素而不能插入元素

C、棧是特殊的線性表,只能在一端插入或刪除元素

D、棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素

標準答案:C

知識點解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)對棧的定義及其特點可知:棧是限定只在表尾進行插入

或刪除操作的線性表,因此棧是先進后出的線性表,對棧的插入與刪除操作,不需

要改變棧底元素。

3、下列有關(guān)數(shù)據(jù)庫的敘述,正確的是()。

A、數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程

B、數(shù)據(jù)的物理獨立性是指當數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變

C、關(guān)系中的每一列稱為元組,一個元組就是一個字段

D、如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)

鍵字,則稱其為本關(guān)系的外關(guān)鍵字。

標準答案:D

知識點解析:數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,故選項A敘述錯誤;數(shù)據(jù)

的物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)的改變不會影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),故選項B

敘述錯誤;關(guān)系中的行稱為元組,對應(yīng)存儲文件中的記錄,關(guān)系中的列稱為屬性,

對應(yīng)存儲文件中的字段,故選項C敘述錯誤。

4、概要設(shè)計中要完成的事情是()。

A、系統(tǒng)結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)的設(shè)計

B、系統(tǒng)結(jié)構(gòu)和過程的設(shè)計

C、過程和接口的設(shè)計

D、數(shù)據(jù)結(jié)構(gòu)和過程的設(shè)計

標準答案:A

知識點解析:軟件概要設(shè)計的基本任務(wù)是:設(shè)計軟件系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫

設(shè)計、編寫概要設(shè)計文檔、概要設(shè)計文檔評審。

5、下面排序算法中,平均排序速度最快的是()。

A、冒泡排序法

B、選擇排序法

C、交換排序法

D、堆排序法

標準答案:D

知識點解析:在各種排序方法中,快速排序法和堆排序法的平均速度是最快的,因

為它們的時間復(fù)雜度都是O(nlog2n),其他的排序算法的時間復(fù)雜度大都是0(1?)。

6、兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度稱為()。

A、耦合度

B、內(nèi)聚度

c燈型停

D:數(shù)次傳輸特性

標準答案:A

知識點解析?:耦合是指模塊之間的關(guān)聯(lián)程度,內(nèi)聚是指模塊內(nèi)部各部分的聚合程

度。

7、下列描述中正確的是()。

A、軟件工程只是解決軟件項目的管理問題

B、軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C、軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D、軟件工程只是解決軟件開發(fā)中的技術(shù)問題

標準答案:C

知識點解析:軟件工程是研究和應(yīng)用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化

方法來開發(fā)和維護軟件,以及如何把經(jīng)過時間考驗而證明正確的管理技術(shù)和當前能

夠得到的最好的技術(shù)方法結(jié)合起來。軟件工程的目標是生產(chǎn)具有正確性、可用性及

開銷合宜的產(chǎn)品,它的主要思想是強調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則。

8、關(guān)系模型允許定義3類數(shù)據(jù)約束,下列不屬于數(shù)據(jù)約束的是()。

A、實體完整性約束

B、參照完整性約束

C、屬性完整性約束

D、用戶自定義完整性約束

標準答案:C

知識點解析:關(guān)系模型允許定義3類數(shù)據(jù)約束,即實體完整性約束、參照完整性約

束和用戶自定義完整性約束。其中前兩種完整性約束由關(guān)系數(shù)據(jù)庫系統(tǒng)支持,用戶

自定義完整性約束則由關(guān)系數(shù)據(jù)庫系統(tǒng)提供完整性約束語言,用戶利用該語言給出

約束條件,運行時由系統(tǒng)自動檢查。

9、下列描述中正確的是()。

A、程序就是軟件

B、軟件開發(fā)不受計算機系統(tǒng)的限制

C、軟件既是邏輯實體,又是物理實體

D、軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合

標準答案:D

知識點。析:軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合,它是一個邏輯實體。軟件的開

發(fā)要受計算機系統(tǒng)的限制,例如硬件系統(tǒng)的限制、軟件操作系統(tǒng)的限制等。

10、用樹型結(jié)構(gòu)表示實體之間聯(lián)系的模型是()。

A、關(guān)系模

B、網(wǎng)狀模型

C、層次模型

D、以上三個都是

標準答案:C

知識點解析:層次模型是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型,它用樹型結(jié)構(gòu)來表示

各類實體及實體間的聯(lián)系。在現(xiàn)實世界中事物之間的聯(lián)系更多的是非層次關(guān)系的,

用層次模型表示非樹型結(jié)構(gòu)很不直接,網(wǎng)狀模型則用來表示非樹型結(jié)構(gòu)。關(guān)系模型

是目前最重要的一種數(shù)據(jù)模型,它建立在嚴格的數(shù)學概念基礎(chǔ)上。關(guān)系模型由關(guān)系

數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作系統(tǒng)和關(guān)系完整性約束3部分組成。

11、在深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為[)。

A、32

B、31

C、16

D、15

標準答案:C

知識點解析:根據(jù)二叉對的性質(zhì)及定義,一棵深度為k且有個結(jié)點的二叉樹

為滿二叉樹。滿二又樹的葉子結(jié)點為最后一層的結(jié)點數(shù),又根據(jù)滿二叉樹的性質(zhì),

在滿二叉樹的第i層上至多有2iJ個結(jié)點。因此深度為5的滿二乂權(quán)的葉子結(jié)點數(shù)

為211=16個。

12、軟件生命周期中所花費用最多的階段是()。

A、詳細設(shè)計

B、軟件編碼

C、軟件測試

D、軟件維護

A、全局變量的作用域一定比局部變量的作用域范圍大

B、靜態(tài)類別變量的生存期貫穿于整個程序的運行期間

C、函數(shù)的形參都屬于全局變量

D、未在定義語句中賦初值的auto變量和static變量的初值都是隨機值

標準答案:B

知識點解析:本題考查的是變量的作用域及其生存周期。一個全局變量的生存周期

從它被聲明開始,直到程序結(jié)束;一個局部變量的生存周期從它被聲明開始,直到

包含它的最近的一個程序塊結(jié)束。靜態(tài)變量的生存周期將延續(xù)到整個程序的終止。

17>假定.MyClass為一個類,則執(zhí)行MyClassa,b(2),叩;語句時,自動調(diào)用該

類構(gòu)造函數(shù)()次。

A、2

B、3

C、4

D、5

標準答案:A

知識點解析:C++在創(chuàng)建一個對象時,會調(diào)用類的構(gòu)造函數(shù)。執(zhí)行MyClassab,

(2),*p;創(chuàng)建了兩個對象a、b和指針p,在創(chuàng)建龍象a和b會調(diào)用構(gòu)造函數(shù),而

創(chuàng)建指制p時,由于p本身不是對象,所以不調(diào)用類的構(gòu)造函數(shù)。

18、能正確表示邏輯關(guān)系'匕*0或"0”的C++語言表達式是()。

A^a)=10ora<=0

B、a>=0Ia<=10

C、a>=10&&a<=

D、a>=10IIa<=0

標準答案:D

知識點解析:邏輯運算符“II”表示或的意思。

19、假定MyClass為一個類,那么下列的函數(shù)說明中,()為該類的析構(gòu)函數(shù)。

A、void?MyClass。;

B、~MyClass(intn);

C^MyClass();

D、?MyClass。;

標準答案:D

知識點解析:C++語言中析構(gòu)函數(shù)為符號“?”加類名,且析構(gòu)函數(shù)沒有返回值和參

數(shù),故前不加void關(guān)鍵字。所以正確的形式應(yīng)該是?MyClass。。

20、關(guān)于類和對象描述錯誤的是()。

A、對象(Object)是現(xiàn)實世界中的客觀事物,對象具有確定的屬性

B、類是具有相同屬性和行為的一組對象的集合

C、對象是類的抽象,類是時象的實例

D、類是對象的抽象,對象是類的實例

標準答案:c

知識點.析:C++中,類是用戶自定義的一種數(shù)據(jù)類型,對象是類的實例,類定義

了屬于該類的所有對象的共同特性。一個類作為一種數(shù)據(jù)類型,它可以定義多個對

象。

21、下列對重載函數(shù)的描述中,錯誤的是()。

A、重載函數(shù)中不允許使用默認參數(shù)

B、重載函數(shù)中編譯是根據(jù)參數(shù)表進行選擇的

C、不要使用重載函數(shù)來描述毫不相干的函數(shù)

D、構(gòu)造函數(shù)重載將會給初始化帶來多種方式

標準答案:A

知識點解析:選項A中,重載函數(shù)中是允許使用默認參數(shù)的;為了使重載函數(shù)有

意義,不要使用重載函數(shù)來描述毫不相干的函數(shù);重載函數(shù)中編譯是根據(jù)參數(shù)表進

行選擇的,包括參數(shù)的個數(shù)和類型。

22、以下程序的運行結(jié)果是()。#includevoidsub(intx,inty,int*z){*z=y-x;)

voidmain(){inta,b,C;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);

cout<

A、5,2,3

B、-5,-12,-7

C、-5,-12,-17

D、5,-2,-7

標準答案:B

知識點解析:在C++語言中,調(diào)用函數(shù)不可能改變實參指針變量的值,但可以改

變實參指針變量所指變量的值。

23、以下程序不用第3個變量實現(xiàn)將兩個數(shù)進行對調(diào)的操作,畫線處應(yīng)為()。void

main(){inta,b;scanf(n%d%d",&a?&b);tin?a?b;cout?"a=',<

A、a+b

B、a-b

C、b*a

D、a/b

標準答案:B

知識點解析:本題思路巧妙,分析時可以發(fā)現(xiàn)b=(a+b)-b,則此時b中放的是a,完

成交換工作的一半,然后要將b放到a中,將表達式展開,則為a=(a+b)-a,此時

正好把b放到a中。此時完成全部的交換。

24、程序中有語句:for(inti-0;i<5;i++)coul?*(p+i)?,S能夠依次輸出ini

型一維數(shù)組a的前5個元素。由此可知,變量P的定義及初始化語句是()。

A、int*p=a;

B、intp=a;

C、*p=a;

D、p=a;

標準答案:A

知識點解析:從循環(huán)語句中可以看出,是在。到4的循環(huán)中輸出數(shù)組a中的前5個

元素,輸出的值為*(p+i),即為指針p向后移動指向的元素。所以初始化要將指針

P指向數(shù)組a,即int*p=a;。

25>有以下程序段:inlk=O;while(k=l)k++;wh血循環(huán)執(zhí)行的次數(shù)是()。

A^無限次

B、有語法錯,不能執(zhí)行

C、一次也不執(zhí)行

D、執(zhí)行1次

標準答案:A

知識點解析:本來while中的表達式應(yīng)為k==l,而本題卻為k=l,是賦值表達式而

不是邏輯表達式。因此,編譯器將其值一直認為是1,因此表達式一直為真,陷入

無限次的循環(huán)。

26、設(shè)有數(shù)組定義“chararray[尸'China";”則數(shù)組array所占的空間為()。

A、4字節(jié)

B、5字節(jié)

C、6字節(jié)

D、7字節(jié)

標準答案:C

知識點解析:本題考查在C++語言中,字符串的存放規(guī)則。即字符串存放在字符

數(shù)組中,而且在字符的后面自動插入標識字符串結(jié)束的標識符、(T,因此,共6

個字符,每個字符占用1字節(jié),故正確答案為C。

27、下列關(guān)于getline函數(shù)的描述中,錯誤的是()。

A、該函數(shù)可以用來從鍵盤上讀取字符串

B、該函數(shù)讀取的字符串長度是受限制的

C、該函數(shù)讀取字符串時,遇到終止符時便停止

D、該函數(shù)中所使用的終止符只能是換行符

標準答案:D

知識點解析:本題考查的是無格式輸入/輸出流對象中的gctlinc函數(shù)。該函數(shù)的

功能是允許從輸入流中讀取多個字符,并且允許指定輸入終止字符(默認是換行

符),在讀取完成后,從讀取的內(nèi)容中刪除該終止字符。

28、有以下程序:voidfun(int*a,inti,intj){intl;if(i<j);{t=a[i];a[i]=a[j];

a[j]=t;}fun(a,++i,—j);)voidmain(){inta[]={1,2,3,4,5,6},i;fun(a,

0,5);for(i=0:i(6:i++)cout<

A、654321

B、432156

C、456123

D、123456

標準答案:A

知識點解析?:本題采用遞歸函數(shù)的方式將數(shù)組中的元素進行倒置,正確答案為A。

29、下列描述中錯誤的是()。

A、析構(gòu)函數(shù)可以被繼承

B、虛函數(shù)不能被繼承

C、派生類可以有多個基類

D、純虛基類的子類可以是虛基類

標準答案:B

知識點解析:本題考查關(guān)于C++語言基類中虛函數(shù)的繼承問題。C++語言中基類的

虛函數(shù)是可以被派生類繼承的。

30、設(shè)有程序段:intk=10;whilc(k=0)k=k-1;則下面描述中正確的是()。

A、循環(huán)執(zhí)行A次

B、無限循環(huán)

C、循環(huán)體語句一次也不執(zhí)行

D、循環(huán)體語句執(zhí)行一次

標準答案:C

知識點解析:while中表達式值一直為0,故循環(huán)一次也不執(zhí)行。

31、C++語言類體系中,不能被派生類繼承的有()。

A、轉(zhuǎn)換函數(shù)

B、構(gòu)造函數(shù)

C、虛函數(shù)

D、睜態(tài)成員函數(shù)

標準答案:B

知識點解析:派生類對象的數(shù)據(jù)結(jié)構(gòu)是由基類中說明的數(shù)據(jù)成員和派生類中說明的

數(shù)據(jù)成員共同構(gòu)成的,所以不能繼承基類的構(gòu)造函數(shù),必須重新定義。

32、下面程序的運行結(jié)果是()。#includc<iostrcam.h>classbase{protected:int

a;public:base(){cout?"0";}};classbase!:virtualbase)public:

basel(){cout?Hr';)};classbase2:virtualbase{public:

base2()(cout?"2";}};classderived:publicbaschpublicbase2{public:

derived(){cout?"3n;)|;voidmain(){derivedobj;cout<

A、0123

B、3120

C、312

D、3012

標準答案:A

知識點解析:本題考查的是含有虛基類的繼承中構(gòu)造函數(shù)的調(diào)用順序,應(yīng)該先調(diào)用

基類的構(gòu)造函數(shù),接著是按照派生類繼承列表的順序依次調(diào)用虛基類的構(gòu)造函數(shù),

最后調(diào)用派生類自己的溝造函數(shù)。

33、對于類定義:classA{public:virtualvoidfuncl(){)voidfunc2(){)};class

B:publicA{public:voidfuncl(){cout?"classBfunc1"<

A>A::rune2()和B::fund。都是虛函數(shù)

B、A::Func2()和B::funcl()都不是虛函數(shù)

C、B::fund。是虛函數(shù),而A::func2()不是虛函數(shù)

D、B::fund。不是虛函數(shù),而A::tunc2()是虛函數(shù)

標準答案:c

知識點。析:基類中說明的虛函數(shù),在派生類中自然就是虛函數(shù),所以類B中

funcl()是虛函數(shù);而類A中的func2()沒有被關(guān)鍵字virtual修飾,所以不是虛函

數(shù)。

34、下面關(guān)于運算符重載的描述錯誤的是()。

A、運算符重載不能改變操作數(shù)的個數(shù)、運算符的優(yōu)先級、運算符的結(jié)合性和運算

符的語法結(jié)構(gòu)

B、不是所有的運算符都可以進行重載

C、運算符函數(shù)的調(diào)用必須使用關(guān)鍵字operator

D、在C++語言中不可通過運算符重載創(chuàng)造出新的運算符

標準答案:C

知識點解析:例如“::”運算符就不能被重載;通過重載可以創(chuàng)造新的運算方式,

但是不能臆造新的運算將;定義的時候必須使用關(guān)健字operator,而調(diào)用時可直接

使用運算符。

35>與語句cout<

A、cout?'\n';

cout?5\12\

C、cout?'\xA';

D、coutvv'O';

標準答案:D

知識點解析:題干表示的是回車換行,選項A、B和C都表示回車換行。而D是

字符串的結(jié)尾標志。

36、下面程序的運行結(jié)果是()。#include<iostream.h>intfun<inta[],intn>

{intresult=l;for(inti=l;i(n;i++)result=result*a[i];returnresult;}voidmain()

{inta[3]={3,4,5);cout<

A、12

B、15

C、20

D、60

標準答案:C

知識點解析:for循環(huán)執(zhí)行2次,所以第一次for循環(huán)為result=l*a[l]=4,第二次

for循環(huán)為result=4*a[2]=20。

37、卜面程序的運行結(jié)果是()。#include<iostream.h>voidmain(){inti=l:

while(i<=8)if(++i%3!=2)continue;elsecout<

A、25

B、36

C>258

D、369

標準答案:c

知識點誦析:應(yīng)該先做++運算,然后進行%運算,最后比較不等式,實際上最后

輸出的結(jié)果就是被3除,余數(shù)為2的不大于8的數(shù)。

38、下列程序的運行結(jié)果為#includetemplateclassFF{TTa1,a2,a3;public:

FF(TTbl,TTb2,TTb3){al=bl;a2=b2:a3=b3:}TTSum(){return

al+a2+a3;));voidmain(){FF<int>x(int(l.1),2,3),y(int(4.2),5,6);

eout<

A、6.115.2

B、615

C、615.2

D、6.115

標準答案:B

知識點解析:本題考查模板函數(shù)的應(yīng)用,表達式im(l.1)和int(4.2)是將1.I和

4.2強制轉(zhuǎn)換為整型。

二、基本操作題(本題共7題,每題7.0分,共7分。)

39、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯

誤,請改正程序中的錯誤,使得程序輸出:9,8,7,6,5注意:錯誤的語句在/

********error********的下面,修改該語句即可。其他的語句不能修改。

試題程序:#includeclassTC{/********error********TC(inti)

{m_i=i;}voidprint()(cout?—m_i?,,';)public:intm_i;);intmain()

{/********error********inti();TCobj(10);while(i>5){/******

**error********i++:obj.print();}cout<

標準答案:(1)應(yīng)添加“public:(2)“畝骨()”應(yīng)改為5田(10);”。(3)“i++;”應(yīng)改為

“j__.,,

知或點解析:本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、保護和

私有3種,而默認的訪問屬性為私有,只有公有成員才能通過類的對象被訪問。故

應(yīng)在構(gòu)造函數(shù)前添加“public:",否則該類無法被實例化。變量的初始化可以通過

“=”號,也可以和初始化對象一樣添加構(gòu)造參數(shù),題目已要求使用后者。本題要求

輸出5個數(shù),while的循環(huán)變量i每次減1,在i}5時循環(huán),故i初始化應(yīng)為10。若

循環(huán)中i每次增1,則循環(huán)永遠不會退出。

三、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)

40、使用VC++6.0打開考生文件夾下的源程序文件2.cppo閱讀下列函數(shù)說明

和代碼,將程序補充完整。函數(shù)fun(intn)的功能是實現(xiàn)對一個整數(shù)的加密,具體

的加密方法是一個4位長的整數(shù),用每位數(shù)字加上3然后除以9的余數(shù)代替該數(shù)

字,再將第1位和第4位交換,第2位和第3位交換,然后返回得到的密碼.程

序輸出結(jié)果為18642075注意:不能修改其他部分的代碼。試題程序:#includc

#includeinifun(intn){)intmain(){inti=1357:cout<

標準答案:inti,a[4],t;a[l]=n%10;//取整型n的第1位數(shù)字a[l]=n%100/

10;//取整型n的第2位數(shù)字a[2]=n%l000/100;//取整型n的第3位數(shù)字

a[3]=n/1000;//取整型n的第4位數(shù)字for(i=0;i(=3;i++)//每位數(shù)字加

3,取余{a[i]+=3;a[i]%=9;}t=a[O];//根據(jù)加密算法交換a[0]=a[3];

a[3]=t;t=a[l];a[l]=a[2];a[2]=t;returna[3]*1000+a[2]*100+a[1]*10+a[0];/

/重組,返回加密數(shù)字

知識點解析:本題首先取得要加密整數(shù)的每一位數(shù)字,并存入數(shù)組C根據(jù)加密算

法,利用循環(huán)實現(xiàn)每位數(shù)字加3,再除以9取余。根據(jù)加密算法進行數(shù)字交換,最

后重組,返回密碼。

四、綜合應(yīng)用題(本題共[題,每題7.0分,共I分0)

41、使用VC++6.0打開考生文件夾下的源程序文件3.叩p,其中定義了用于表

示日期的類Date,但類Date的定義并不完整。請按要求完成下列操作,將類Date

的定義補充完整。(1)定義私有數(shù)據(jù)成員year、month和day,分別用于表示年、月

和口,它們都是int型的數(shù)據(jù)。請在注釋1后添加適當?shù)恼Z句。(2)完成默認構(gòu)造函

數(shù)Date的定義,使Date對象的默認值為year=l,month=l,day=lo請在注釋2后

添加適當?shù)恼Z句。(3)完成重載構(gòu)造函數(shù)Date(inty,intm,intd)的定義,把數(shù)據(jù)成

員year、month和day分別初始化為參數(shù)y、m和d的值。請在注釋3后添加適當

的語句。(4)完成成員函數(shù)print的類外定義,使其以“年-月-日”的格式將Date對象

的值輸出到屏幕上,例如1949-10-1。請在注釋4后添加適當?shù)恼Z句。注意:除在

指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。試題程序:include

classDate{public://********1********Date(inty,intm,intd){//

********2********}voidprint()const;private://datamember//

********3********j?void;:print()const{//********4********|int

main(){Date01ympic_BJ(2008,8,8);Olympic_BJ.print();return0:)

標準答案:⑴應(yīng)添力U“Date(){year=l;month=l;day=1;}''或"Date。:year(I),

month(l),day(l){}Mo(2)應(yīng)添加"year=y;month=m;day=d;(3)應(yīng)添加“int

year,month,day;(4)應(yīng)添加“coutv

知識點解析:本題考查了類的定義。根據(jù)題意,此處應(yīng)定義3個im型數(shù)據(jù)成員

year、month和day。根據(jù)題意,第2處應(yīng)添加默認構(gòu)造函數(shù),并初始化3個變

量,這里既可以使用賦值語句來實現(xiàn),也可以使用初始化列表。第3處只能通過賦

值語句初始化3個成員,因為注釋3位于函數(shù)中,無法在此處使用初始化列表。添

加輸出語句,注意題目頭包含的頭文件是iostream,h,不能添加std::前綴。

國家二級(C++)機試模擬試卷第2套

一、程序改錯題(本題共I題,每題1.0分,共1分,)

1、使用VC6打開考生文件夾下的工程testl3」,化工程包含一個源程序文件

lesll3」.cpp,但該程序運行有問題,請改正程序中的錯誤,使該程序的輸出結(jié)果

如下:n=2n=5n=7源程序文件test13_l清單如下:#include<iostream.h>class

Saniple{mtn?public。/***************found************+***/Sample。

SajY^p]e(inti){n=i,}/**?**************found********+**********/void

add(Samplesi,Samplem2)/*****************found****************/

{this.n=sl->n+s2.n;}voiddisp(){cout<<"n="<<n<<endl;));voidmain()

{Samplesl(2),s2(5),s3;s3.add(&sl,s2);sl.dispO;s2.disp();s3.disp();}

標準答案:(1)錯誤:Sample。正確:Sample。{}(2)錯誤:voidadd(Sample

si,Samples2)正確:voidadd(Sample*sI,Samples2)(3)錯誤:this.n=sl->n+s2.n;

正確:this->n=sl->n+s2.n;

知識點解析:(1)主要考查考生對于類的成員函數(shù)定義的掌握,應(yīng)該使用1)作為空

的函數(shù)體,這是不能省咯的;(2)主要考查考生對于指針調(diào)用的掌握,根據(jù)函數(shù)體

中對于si的使用可以看出,它是一個指針類型的變量,調(diào)用時實參應(yīng)該使用“*”,

形參使用(3)主要考查thi*指針的使用,thk是指向當前對象的指針,應(yīng)該使

用訪問成員。

二、簡單應(yīng)用題(本題共I題,每題L0分,共[分0)

2、請編寫一個函數(shù)voidswap(int*x,int*y),用來交換兩個數(shù)的值。注意:部分源

程序已存在文件tesll4_2.cpp中。請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)

容,僅在函數(shù)swap的花括號中填寫若干語句。文件testl4_2.cpp的內(nèi)容如下:

#include<iostream.h>voidswap(int*x,int*y);voidmain(){inta=l,b=3;

swap(&a,&b);cout<<"a-H<<a<<HH<<"b-11<<b<<endl;)void

swap(int*x,int*y){}

標準答案:voidswap(int*x,int*y)inttemp;temp=*x;*x=*y;*y=temp;}

知識點解析:本題考查的是考生利用基本控制語句解決實際問題的能力。swap函

數(shù)可以交換兩個數(shù)的值。利用指針來交換變量的值是必須掌握的。

三、綜合應(yīng)用題(本題共1題,每題1.0分,共7分0)

3、使用VC6打開考生文件夾下的工程testl2_3,此工程包含一個testl2_3.cpp,其

中定義了類Base和類A,類A公有繼承Base,但這兩個類的定義都并不完整,請

按要求完成下列操作,將程序補充完整。(1)定義枚舉類型變量en,它包含兩個枚

舉符front和back,請在注釋“〃**1**”之后添加適當?shù)恼Z句。(2)在類Base中添加

常成員虛函數(shù)voidE()的定義,該函數(shù)輸出“InBaseE!”,請在注釋“〃**2**”之后添

加適當?shù)恼Z句。(3)在類A中添加常成員虛函數(shù)voidE()的定義,該函數(shù)先調(diào)用基

類中的虛函數(shù)E()再輸出“InAE!”,請在注釋“〃**3**”之后添加適當?shù)恼Z句。(4)完

成類A構(gòu)造函數(shù)的定義,請使用參數(shù)列表的形式初始化類A的成員,并輸出“A

constructor.”,請在注釋“//**4**”之后添加適當?shù)恼Z句。輸出結(jié)果如下:Base

constructor.Aconstructor.InBaseE!InAE!InBaseP!InA!1Adestructor.Base

destructor.注意:除在指定的位置添加語句外,請不要改動程序中的其他語句。源

程序文件tesll2_3.cpp清單如下:#include<iostream.h>〃**1**classBase

{protected:intbl:intb2;public:Base();?Base。;intGetbl()const{return

bl;}voidSctbl(intx){bl=x:)intGctb2()const(returnb2;}voidSetb2(inty)

{b2=y;)voidPrint()const{cout<<,,InBaseP!u<<endl;}〃**2**};

Base::Base():bl(l),b2(5){cout<<"Baseconstructor.H<<endl:}

Base::~Base(){cout<<"Basedestructor."<<endl;}classA:publicBase

{protected:enenA;public:A();?A();enGelColor()consl{returnenA;)

voidSetColor(encolor){enA=color;)voidInA(){cout<<MInA!"VVendl;}〃**

3**{Base::E();cout<<"InAE!,,<<endl:}};//**4**(cout<<"A

constructor.'1<<endl;)A::^A(){cout<<"Adestructor.,,<<endl;)void

main(){Aal;al.E();cout<<endl;al.Print();al.InA();cout<<al.GetbI()

<<endl;)

標準答案:(I)enumen{front,back);(2)virtualvoidE()Const{cout<<"InBaseE!"

<<endl;)(3)virtualvoidE()const(4)A::A():enA(front)

知識點解析:主要考查考生對于枚舉和虛函數(shù)的定義的掌握,注意(1)中枚舉類型

使用enum關(guān)鍵字定義,它實際上就是一個有名字的常量,定義格式如下:enum

枚舉名{枚舉表},(2)中常成員函數(shù)的定義格式中const的位置不能隨便改動,因為

const關(guān)鍵字是修飾其右側(cè)文字的,(3)中調(diào)用基類函數(shù)E的方法Base::E()中使

用了作用域符。

國家二級(C++)機試模擬試卷第3套

一、程序改錯題(本題共[題,每題7.0分,共7分。)

1、使用VC6打開考生文件夾下的工程tesl32」,化工程包含一個源程序文件

test32」.cpp,但該程序運行有問題,請改正函數(shù)中的錯誤,使該程序的輸出結(jié)果

為:AddedResultforthisC++tutorial:3源程序文件test32_l.cpp清單如下:

/**********found**********/#include<iostream>classCPP_Tutorial{int

privatedata,/*****************f^)und*****************/classf*riendelass*public*

CPP_Tutorial(){private_data=5;));classfriendclass{public:intsubtractfrom(intx)

x;});voidmain(){friendclassvar3;cout<<"AddedResultforthisC++tutorial:"<

<var3.subtractfrom(2)<<end1;)

標準答案:(1)錯誤:gincludeViosiream》正確:#include<ios【ream.h>(2)錯誤:

classfriendclass;正確:friendclassfriendclass;(3)錯誤:returnvar2-x;正確;

returnvar2.private_data-x;

知識點解析:(1)正要考查考生是否理解頭文件的概念,在C++中可以把已經(jīng)定義

好的或者系統(tǒng)自帶的類定義引入自建的工程中,其方式就是通過使用頭文件,把要

引入的結(jié)構(gòu)放在頭文件(.h結(jié)尾的)中,在自建工程的開頭使用#include加入即可,

不過應(yīng)該使用頭文件的全名,題目中錯誤的丟掉了擴展名.h;(2)主要考查考生是

否掌握了友元類的定義,友元類是聲明在一個類內(nèi)的新的類,友元類的所有成員都

可以訪問原來類的所有成員,所以友元類破壞了程序的封裝性,不過只有友元類和

友元函數(shù)能夠直接訪問所在類的私有成員,題H中的類friendclass將要訪問所在類

的私有成員,所以應(yīng)該被定義成友元類;(3)主要考查考生對于對象和對象成員操

作的掌握,var2是類CPP_Tutorial的對象,它不能直接和數(shù)據(jù)成員操作,應(yīng)該使用

對象訪問成員的操作符操作它的數(shù)據(jù)成員private_data和x進行操作。

二、簡單應(yīng)用題(本題共I題,每題1.0分,共/分C)

2、請編寫一個函數(shù)fun{),它的功能是計算并輸出給定整數(shù)n的所有因子(不包括1

與自身)之和(規(guī)定n的值不大于1000)。例如:輸入n的值為856,則輸出為

sum=763o注意:部分源程序已存在文件test33_2.cpp中。請勿修改主函數(shù)main

和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)count的花括號中填寫若干語句。文件

test33_2.cpp清單如卜:#include<stdio.h>#include<iostream.h>intfun(intn){)

voidmain(){intn,sum;cout<<"Inputn:"<<endl;cin>>n;sum=fun(n);cout<

<"sum=\nn<<sum<<endl;}

標準答案:inifun(intn){ints=0,i;for(i=2;i<=n-l;i-H-)if(n%i==0)s+=i;returns;J

知識點解析:本題的解題思路是用n逐個去除以2到n-1之間的所有數(shù),如果n能

被除盡,則把所得到的一個因子累加到s中去。此種題型為典型考題。

三、綜合應(yīng)用題(本題共,題,每題1.。分,共1分C)

3、使用VC6打開考生文件夾下的工程test31_3。此工程包含一個test31_3.cpp,其

中定義了可以動態(tài)分配的字符串類,但該類的定義并不完整。請按要求完成下列操

作,將程序補充完整。(1)定義類tstring的私有數(shù)據(jù)成員length和p,它們分別是

血型的數(shù)據(jù)和字符型的韋針,其中l(wèi)ength表示一個字符串的長度。請在注釋

“〃**]**"之后添加適當?shù)恼Z句。(2)完成類tstring的構(gòu)造函數(shù),使length等于字符

串m的長度,并申請由指針p指向的length長的字符型空間,將m所指的字符串

復(fù)制到該空間。請在注釋“〃**2**”之后添加適當?shù)恼Z句。(3)完成類isiring的成員

函數(shù)strcopy(tstringn)的定義,該函數(shù)將對象n的值(包括字符串長度和字符串本身)

復(fù)制給調(diào)用該函數(shù)的對象(對象n的字符串長度任意)。請在注釋“〃**3**”之后添加

適當?shù)恼Z句。(4)完成類tstring的友元函數(shù)strlink(t$tringm,tstringn)的定義,該函

數(shù)將可動態(tài)分配的字符串類對象m和n的字符串成員連接在一起(對象m和n的字

符串長度任意),并返回該串。請在注釋“〃**4**”之后添加適當?shù)恼Z句。注意:除

在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。程序輸出結(jié)果如下:

hellotheworld!源程序文件test31_3.cpp清單如下:#include<iostream.h>#include

<conio.h>#includc<string.h>clasststring{public://**1**tstring(char*m){//**

2**strcpy(p,m);)voidstrcopy(tstringn);friendchar*strlink(tstringm,tstringn);};

voidtstring::strcopy(tstringn){//**3**char*q;q=newchar|length];

strcpy(q,tstring::p);q=strcat(tstring::p,n.p);tstring::p=q;

tstring::length=strlen(lstring::p);)char*strlink(tstringm,tstringn){int

length=strlen(m.p)+strlen(n.p);char*p;//**4**strcpy(p,m.p);p=strcat(p,n.p);return

p;}voidmain(){tstringa("hello");tstringb("theworld");tstringc("!n);a.strcopy(b);

cout<<strlink(a,c)<<endl;)

標準答案:(1)intlength;char*p;(2)length=slrlen(m);p=newchar[length|;(3)

intlength=strlen(tstung::p)+strlen(n.p);(4)p=newchar[length]:

知識點解析:本題是對類與字符串常用函數(shù)的綜合考查。字符串常用函數(shù)strcpy、

strcatstrlen的調(diào)用格式和調(diào)用限制是需要熟練掌握的。程序中通過申請新的空

間和改變指針指向解決了原有字符串函數(shù)strcpy的目標字符串空間必須足夠大的問

題。根據(jù)實際情況利用以有類建立新類的能力是需要培養(yǎng)的。

國家二級(C++)機試模擬試卷第4套

一、程序改錯題(本題共[題,每題1.0分,共7分。)

I、給定一個函數(shù),其函數(shù)功能為:使10個整數(shù)按由小到大的順序排列。在主函數(shù)

中輸入10個數(shù),并輸出結(jié)果。使用VC6打開考生文件夾下的工程RevProj5。此工

程包含一個源程序文件RevMain5.cpp,該程序?qū)崿F(xiàn)上述功能。但此程序運行有問

題。請找出錯誤的地方,改正后將此程序調(diào)試正確。注意:不得刪行或增行,也

不得更改程序結(jié)構(gòu)。文件RcvMain5.cpp中的程序清單如下;//RcvMain5.cpp

#include<iostream>#include<iomanip>usingnamespacesid;intmain(){void

sort(intarray[],in(n);intdata[10],*p,i;coutV〈”Input10numbers\n";for(i=0;i<10;

i++)cin>>data[i];cout<<"theorigincdarrayis:";for(p=data;p<data+10;p++)

{if((p-&data|0|)%5==0)cout<<"\n";cout<<setw(5)<<*p;}sort(data,10);cout

<<"\nthepresentarrayis:1';for(p=data;p<data+10;p++){if((p-&data[0])%5==0)

cout<<"\n,';cout<<setw(5)<<*p;}}voidsort(intarray[],intn){/********

*found**********/for(pl=array;pl<array+(n-l);pl++){for(p2=pl+l;p2<

array+n;p2++){if(*pl>*p2){/*********found**********/temp=*pl;

*pl=*p2;*p2=*pl;))))

琮準答案:修改后)函薪sort為:voidsort(intarray[],intn)(int*pl,*p2,temp;

for(p1=array;p1<array+(n-1);p1++){fdr(p2=p1+1;p2<array+n;p2++)if(*pl>*p2)

{temp=*pl;*pl=*p2;*p2=tcmp;}})

知識點解析:程序中有兩處標識行,表明程序中有兩處錯誤,而且都是在函數(shù)son

的函數(shù)體中的錯誤。不難發(fā)現(xiàn)在函數(shù)sort中出現(xiàn)了不pl、叩2、temp這樣的變量,

而在用到這些變量前,程序沒有對它們進行定義,所以在第1處錯誤處寫上“int

*pl,*p2,temp:第2處錯誤:易知if語句中的語句序列是實現(xiàn)兩個指針變量中

值的交換,顯然上述語句不能實現(xiàn)此功能,所以應(yīng)改為:"temp=*pl;*pl:*p2;

*p2=temp;"

二、綜合應(yīng)用題(本題共1題,每題7.0分,共7分。)

2、使用VC6打開考生文件夾下的工程MyProj4。此工程包含一個源程序文件

MyMain4.cpp,該程序?qū)⑼ㄟ^把類Distance定義為類Point的友元類來實現(xiàn)計算兩

點之間距離的功能。但程序中定義的類并不完整。請按要求完成下列操作,把類的

定義補充完整。①把類Distance定義為類Point的友元類。請在注釋“〃**1**”之后

添加適當?shù)恼Z句。②定義類Point的構(gòu)造函數(shù),完成給私有數(shù)據(jù)成員x和y的賦

值,并且兩個參數(shù)的默認值都為0。請在注釋“〃**2**”之后添加適當?shù)恼Z句。③

完成類Distance的成員函數(shù)Dis(Point&p,Point&q)的定義,并在其中計算點p、q

之間的距離,并且返回結(jié)果。假設(shè)兩點之間的距離distance=sqrt((p.x-q.x)*(p.x-

q.x)+(p.y-q.y)*(p.y-q.y))?請在注釋“〃**3**”之后添加適當?shù)恼Z句。源程序文件

MyMain4.cpp中的程序清單如卜:〃MyMain4.epp#include<iostream>#include<

cmath>usingnamespacestd;classPoint{public://**1**//定義類Point的構(gòu)造函

數(shù)//**2**voidpint(){cout<<,'x=,'<<x<<end1;cout<<"y="<<y<<

cndl;}private:floatx,y;);classDistance{public:floatDis(Point&p,Point&q);};

floatDistance::Dis(Point&p,Point&q){〃**3**}intmain(){Point

p(10,10),q(20,20);Distancecl;cout<<d.Dis(p,q)<<endl;return0;}

標準答案:類Point的定義如下:classPoint{public:friendclassDistance;Point

(floata=0,floatb=0){x=a;y=b;}voidpint(){cout<<"x=,'<<x<<endl;cout<<

"y="<<y<<endl;}private:floatx,y;);

知識點解析:此道綜合應(yīng)用題主要考核友元類的定義與使用。①第1處是完成友

元類的聲明,根據(jù)友元類的聲明格式已知此處可填入:friendclassDistance;②

第2處是完成類Point的構(gòu)造函數(shù),此處還要注意類Point的構(gòu)造函數(shù)中還應(yīng)該有

參數(shù)默認值。此處應(yīng)填入:Point(floata=0,floatb=0){x=a;y=b}③第3處是完成類

Distance成員函數(shù)Dis()的定義,函數(shù)Dis()的功能是計算兩點之間的距離。根據(jù)題

目給出的計算公式,已知第3處應(yīng)填入:floatresult;result=sqrt((p.x-q.x)*(p.x-

q.x)+(p.y-q.y)*(p.y-q.y));returnresult;

國家二級(C++)機試模擬試卷第5套

一、選擇題(本題共39題,每題1.0分,共39分。)

1、下面關(guān)于算法的敘述中,正確的是()。

A、算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)

B、算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

C、算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)

D、以上三種描述都正確

標準答案:B

知識點解析:算法在運行過程中需輔助存儲空間的大小稱為算法的空間復(fù)雜度。算

法的有窮性是指一個算法必須在執(zhí)行有限的步驟以后結(jié)束。

2、下列二叉樹描述中,正確的是()。

A、任何一棵二叉樹必須有一個度為2的結(jié)點

B、二叉樹的度可以小于2

C、非空二叉樹有0個或1個根結(jié)點

D、至少有2個根結(jié)點

標準答案:B

知識點解析:二叉樹是由n>10個結(jié)點的有限集合構(gòu)成,此集合或者為空集,或者

由一個根結(jié)點及兩棵互不相交的左右子樹組成,并且左右子樹都是二叉樹。二叉樹

可以是空集合,根可以有空的左子樹或空的右子樹。二叉樹不是樹的特殊情況,它

們是兩個概念。二叉樹具有如下兩個特點:①非空二叉樹只有一個根結(jié)點。②每

一個結(jié)點最多有兩棵子樹,且分別稱為該結(jié)點的左子樹與右子樹。

3、如果進棧序列為A,B,C,D,則可能的出棧序列是()。

A、C,A,D,B

B、B?D,C,A

C、C,D,A,B

D、任意順序

標準答案:B

知識點解析:棧的操作原則為后進先出。選項B)中出棧順序可按“A進,B進,B

出,c進,D進,D出,C出,A出”實現(xiàn)。

4、下列各選項中,不屬于序言性注釋的是()。

A、程序標題

B、程序設(shè)計者

C、主要算法

D、數(shù)據(jù)狀態(tài)

標準答案:D

知識點解析:注釋一般為序言性注釋和功能性注釋。序言性注釋常位于程序開頭部

分,它包括程序標題、程序功能說明、主要算法、接口說明、程序位置、開發(fā)簡

歷、程序設(shè)計者、復(fù)審者、復(fù)審日期及修改日期等。功能性注釋一般嵌在源程序體

之中,用于描述其后的語句或程序的主要功能。

5、下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()。

A、便于用戶,開發(fā)人員進行理解和交流

B、反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)

C、作為確認測試和驗收的依據(jù)

D、便于開發(fā)人員進行需求分析

標準答案:D

知識點解析:軟件需求規(guī)格說明書有以下幾個方面的作用:①便于用戶、開發(fā)人

員進行理解和交流。②反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和

依據(jù)。③作為確認測試和驗收的依據(jù)。

6、下列不屬于軟件工程3個要素的是()。

A、工具

B、過程

C、方法

D、環(huán)境

標準答案:D

知識點解析:軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程

項目的技術(shù)手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各

個環(huán)節(jié)的捽制、管理c

7、數(shù)據(jù)庫系統(tǒng)在其內(nèi)部具有3級模式,用來描述數(shù)據(jù)庫中全體數(shù)據(jù)的全局邏輯結(jié)

構(gòu)和特性的是()。

A、外模式

B、概念模式

C、內(nèi)模式

D、存儲模式

標準答案:B

知識點解析:概念模式,也稱邏輯模式,是對數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描

述,是全體用戶應(yīng)用公共數(shù)據(jù)視圖。它不涉及具體的硬件環(huán)境與平臺,與具體的軟

件環(huán)境也無關(guān)。

8、將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成()。

A、屬性

B、關(guān)系

C^記錄

D、碼

標準答案:B

知識點解析:E-R圖由實體、實體的屬性和實體之間的聯(lián)系3個要素組成,關(guān)系模

型的邏輯結(jié)構(gòu)是一組關(guān)系模式的集合,將E-R圖轉(zhuǎn)換為關(guān)系模型:將實體、實體

的屬性和實體之間的聯(lián)系轉(zhuǎn)化為關(guān)系模式。如下表所示。

表&R模型。美系間的比較表

E-R模型關(guān)系E?R模型關(guān)系

屬性屬性實體集關(guān)系

實體元組聯(lián)系關(guān)系

9、某二叉樹中度為2的結(jié)點有10個,則該二叉樹中有()個葉子結(jié)點。

A、9

B、10

C、11

D、12

標準答案:C

知識點解析:根據(jù)二叉樹的性質(zhì)3:對任何一棵二叉樹,度為。的結(jié)點(即葉子結(jié)

點)總是比度為2的結(jié)點多一個。

10、有如下程序:#includeusingnamespacestd;classA{public:

A(){coutvv”A“;)~A(){coutvv"~A";)};classB:publicA{A*p;public:

B(){cout?"B";p=ncwA;)B(){cout?"?B";deletep;)};intmain(){Bobj;

return0:}執(zhí)行這個程序的輸出結(jié)果是()

A、BAA?A?B~A

ABA?B?A?A

C、BAA?B?A?A

D、ABA?A?B~A

標準答案:B

知識點解析:此題考查的是類的構(gòu)造函數(shù)和析構(gòu)函數(shù)。派生類構(gòu)造函數(shù)的執(zhí)行順序

為:首先調(diào)用基類的構(gòu)造函數(shù),調(diào)用順序按它們被繼承時說明的順序;然后調(diào)用子

對象的構(gòu)造函數(shù),調(diào)用順序按它們在類中說明的順序;最后是派生類構(gòu)造函數(shù)中的

內(nèi)容。因此本題中,首先調(diào)用基類構(gòu)造函數(shù)輸出A,然后調(diào)用子對象的構(gòu)造函數(shù)輸

出B,p=newA再調(diào)用類A的構(gòu)造函數(shù)輸出A;析構(gòu)函數(shù)的調(diào)用順序和構(gòu)造函數(shù)的

調(diào)用順序相反。

11、若有以下程序:#includeusingnamespacestd;classA{public:A(inti,intj)

{a=i:b=j;}voidmove(intx,inty){a+=X:b+=y;)voidshow(){cout<

A、3,4

B、6,8

C、6,9

D、4,3

標準答案:C

知識點解析:此題的執(zhí)行過程如下:首先Bd(3,4);語句調(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()會調(diào)

用函數(shù)move(3,5),使得(3,4)和(3,5)的對應(yīng)部分分別相加,最后輸出6,9,

12>有如下程序:#includeusingnamespacestd:classTest{public:Test()

{n+=2;}-Test(){n-=3;}staticintgetNumO{returnn;)private:staticintn:};

intTest::n=l:mtmain(){Test*p=newTest;deletep:coutvv"n="v

A、n=0

B、n=l

C、n=2

D、n=3

標準答案:A

知識點解析:語句Test*p=newlest;會調(diào)用類的構(gòu)造函數(shù)Test(){n+=2;),使n的

值由原來的1變?yōu)?,然后deletep調(diào)用類的析構(gòu)函數(shù)?Test(){n—3;},因為n是

static型變量,所以會在3的基礎(chǔ)上減3使得輸出結(jié)果為Oo

13,假定MyClass為一個類,那么下列的函數(shù)說明中,()為該類的析構(gòu)函數(shù).

A、void-MyClass():

B、~MyClass(intn);

C^MyClass();

D、?MyClass。:

標準答案:D

知識點解析:C++語言中析構(gòu)函數(shù)為符號“?”加類名,且析構(gòu)函數(shù)沒有返回值和參

數(shù),故前不加void關(guān)鍵字。所以正確的形式應(yīng)該是一MyClass。。

14、下列情況中,不會調(diào)用拷貝構(gòu)造函數(shù)的是()。

A、用一個對象去初始化同一類的另一個新對象時

B、將類的一個對象賦值給該類的另一個對象時

C、函數(shù)的形參是類的對象,調(diào)用函數(shù)進行形參和實參結(jié)合時

D、函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時

標準答案:B

知識點解析:拷貝構(gòu)造函數(shù)是一個特殊的構(gòu)造函數(shù),它用一個已知的對象初始化一

個正在創(chuàng)建的同類對象,它的一般格式是:類名:類名(const類名&引用對象名)。

當一個類的對象賦值給該類的另一個對象時,是賦值而不是創(chuàng)建對象,所以不會調(diào)

用拷貝構(gòu)造函數(shù)。

15、下列有關(guān)拷貝構(gòu)造函數(shù)的描述中錯誤的是()。

A、拷貝構(gòu)造函數(shù)是一種構(gòu)造函數(shù)

B、拷貝構(gòu)造函數(shù)與一股的構(gòu)造函數(shù),一樣,可以設(shè)置多個形參

C、每一個類中都必須有一個拷貝構(gòu)造函數(shù)

D、拷貝構(gòu)造函數(shù)的功能是用一個已知對象去初始化一個正在創(chuàng)建的對象

標準答案:B

知識點解析:拷貝構(gòu)造函數(shù)是一個特殊的構(gòu)造函數(shù),它用一個已知的對象初始化一

個正在創(chuàng)建的同類對象,它不能指定函數(shù)返回類型;只有一個參數(shù),是同類的某個

對象名的引用。每一個類中都必須有一個拷貝構(gòu)造函數(shù),如果類中未聲明,編譯器

會自動生成一個公有的拷貝構(gòu)造函數(shù)。

16、類MyClass的定義如下,若要對value賦值,則下面語句正確的是()。class

MyClass{public:MyClass(){}MyClass(inti){value=newint(i);}int*value:):

A^MyClassmy;my.valuc=10;

B、MyClassmy;*my.value=10;

C、MyClassmy:my.*value=10;

D、MyClassmy(10);

標準答案:D

知識點解析?:因題目中定義的指針value是指向變量i

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論