全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C++題庫(kù)3(共17套)_第1頁(yè)
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C++題庫(kù)3(共17套)_第2頁(yè)
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C++題庫(kù)3(共17套)_第3頁(yè)
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C++題庫(kù)3(共17套)_第4頁(yè)
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C++題庫(kù)3(共17套)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

6第三套

1、在面向?qū)ο蠓椒ㄖ?,?shí)現(xiàn)信息隱蔽是依靠。

A、對(duì)象的繼承

B、對(duì)象的多態(tài)

C、對(duì)象的封裝

D、對(duì)象的分類

信息隱蔽是指采用封裝技術(shù),將程序模塊的實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái),使模塊接口盡量簡(jiǎn)單。

故此題答案為C。

2、以下表達(dá)中正確的選項(xiàng)是。

A、為了建立一個(gè)關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系

B、表示關(guān)系的二維表中各元組的每一個(gè)分量還可以分成假設(shè)干數(shù)據(jù)項(xiàng)

C、一個(gè)關(guān)系的屬性名表稱為關(guān)系模式

D、一個(gè)關(guān)系可以包括多個(gè)二維表

為了建立一個(gè)關(guān)系,首先要指定關(guān)系的屬性,所以選項(xiàng)A是錯(cuò)誤的。表示關(guān)系的二維表中各元組的每一個(gè)分量必須是不可

分的根本數(shù)據(jù)項(xiàng),所以選項(xiàng)B是錯(cuò)誤的。在關(guān)系數(shù)據(jù)庫(kù)中,把數(shù)據(jù)表示成二維表,而一個(gè)二維表就是一個(gè)關(guān)系,所以選項(xiàng)

D是錯(cuò)誤的。一個(gè)關(guān)系的屬性名表稱為該關(guān)系的關(guān)系模式,其記法為:〈關(guān)系名〉(〈屬性名1〉,〈屬性名2〉,…,<屬性名n>)。

故此題答案為C。

3、以下表達(dá)中,不符合良好程序設(shè)計(jì)風(fēng)格要求的是。

A、程序的效率第一,清晰第二

B、程序的可讀性好

C、程序中要有必要的注釋

D、輸入數(shù)據(jù)前要有提示信息

要形成良好的程序設(shè)計(jì)風(fēng)格,主要應(yīng)注重和考慮下述一些因素:符號(hào)名的命名應(yīng)具有一定的實(shí)際含義,以便于對(duì)程序功

能的理解;正確的注釋能夠幫助讀者理解程序;程序編寫應(yīng)優(yōu)先考慮清晰性,除非對(duì)效率有特殊要求,程序編寫要做到

清晰第一,效率第二。

故此題答案為A。

4、一棵二叉樹中共有70個(gè)葉子結(jié)點(diǎn)與80個(gè)度為1的結(jié)點(diǎn),那么該二叉樹中的總結(jié)點(diǎn)數(shù)為。

A、219

B、221

C、229

D、231

二叉樹的性質(zhì)3:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。此題中度為2的結(jié)點(diǎn)數(shù)

為70-1=69,該二叉樹中的總結(jié)點(diǎn)數(shù)為70+80+69=219。

故此題答案為A。

5、冒泡排序在最壞情況下的比擬次數(shù)是。

A、n(n+l)/2

B、nlogzn

C、n(n-l)/2

D、n/2

冒泡排序法是一種最簡(jiǎn)單的交換類排序方法,它是通過(guò)相鄰數(shù)據(jù)元素的交換逐步將線性表變成有序。

假設(shè)線性表的長(zhǎng)度為n,那么在最壞的情況下,冒泡排序需要經(jīng)過(guò)n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需

要的比擬次數(shù)為n(n-l)/2。

故此題答案為C。

6、軟件調(diào)試的目的是。

A、發(fā)現(xiàn)錯(cuò)誤

B、改正錯(cuò)誤

C、改善軟件的性能

D、驗(yàn)證軟件的正確性

軟件調(diào)試的目的是診斷和改正程序中的錯(cuò)誤,改正以后還需要再測(cè)試。

故此題答案為B.

7、以下表達(dá)中正確的選項(xiàng)是。

A、數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)獨(dú)立的系統(tǒng),不需要操作系統(tǒng)的支持

B、數(shù)據(jù)庫(kù)技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問(wèn)題

C、數(shù)據(jù)庫(kù)管理系統(tǒng)就是數(shù)據(jù)庫(kù)系統(tǒng)

D、以上三種說(shuō)法都不對(duì)

為了解決多用戶、多應(yīng)用共享數(shù)據(jù)的需求,使數(shù)據(jù)為盡可能多的應(yīng)用效勞,數(shù)據(jù)管理的最新技術(shù)—數(shù)據(jù)庫(kù)技術(shù)應(yīng)運(yùn)而生。

數(shù)據(jù)庫(kù)系統(tǒng)由如下幾局部組成:數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)管理員、系統(tǒng)平臺(tái)(硬件平臺(tái)和軟件平臺(tái)),所以選項(xiàng)

A、C是錯(cuò)誤的。

故此題答案為B。

8、以下表達(dá)中正確的選項(xiàng)是。

A、數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)必定是---對(duì)應(yīng)的

B、由于計(jì)算機(jī)存儲(chǔ)空間是向量式的存儲(chǔ)結(jié)構(gòu),因此,數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)一定是線性結(jié)構(gòu)

C、程序設(shè)計(jì)語(yǔ)言中的數(shù)組一般是順序存儲(chǔ)結(jié)構(gòu),因此,利用數(shù)組只能處理線性結(jié)構(gòu)

D、以上三種說(shuō)法都不對(duì)

數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放形式稱為數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存

儲(chǔ)結(jié)構(gòu),常用的存儲(chǔ)結(jié)構(gòu)有順序、鏈接、索引等。而采用不同的存儲(chǔ)結(jié)構(gòu),其數(shù)據(jù)處理的效率是不同的。因此,在進(jìn)行

數(shù)據(jù)處理時(shí),選擇適宜的存儲(chǔ)結(jié)構(gòu)是很重要的,所以選項(xiàng)A是錯(cuò)誤的。

根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后件關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類型:線性結(jié)構(gòu)和非線性結(jié)構(gòu),所以

選項(xiàng)B是錯(cuò)誤的。

數(shù)組既可以處理線性結(jié)構(gòu)也可以處理非線性結(jié)構(gòu),所以選項(xiàng)C是錯(cuò)誤的。

故此題答案為D.

9、軟件是指。

A、程序

B、程序和文檔

C、算法加數(shù)據(jù)結(jié)構(gòu)

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

計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一局部,是程序、數(shù)據(jù)及相關(guān)文檔的完整集合。

故此題答案為D.

10、以下表達(dá)中正確的選項(xiàng)是。

A、程序執(zhí)行的效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)密切相關(guān)

B、程序執(zhí)行的效率只取決于程序的控制結(jié)構(gòu)

C、程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量

D、以上三種說(shuō)法都不對(duì)

所謂提高程序執(zhí)行的效率,主要包括兩個(gè)方面:一是提高數(shù)據(jù)處理的速度,二是盡量節(jié)省在數(shù)據(jù)處理過(guò)程中所占用的計(jì)

算機(jī)存儲(chǔ)空間。

故此題答案為A。

11、如果派生類以protected方式繼承基類,那么原基類的protected成員和public成員在派生類中的訪問(wèn)屬性分別是

A、public和public

B、public和protected

C、protected和public

D、protected和protected

此題考查的是派生類。

派生類中的成員不能訪問(wèn)基類中的私有成員,可以訪問(wèn)基類中的公有成員和保護(hù)成員。此時(shí)派生類對(duì)基類中各成員的訪

問(wèn)能力與繼承方式無(wú)關(guān),但繼承方式將影響基類成員在派生類中的訪問(wèn)控制屬性。

故此題答案為D。

12、以下關(guān)于類模板的模板參數(shù)的表達(dá)中,錯(cuò)誤的選項(xiàng)是。

A、模板參數(shù)可以作為數(shù)據(jù)成員的類型

B、模板參數(shù)可以作為成員函數(shù)的返回類型

C、模板參數(shù)可以作為成員函數(shù)的參數(shù)類型

D、模板參數(shù)不能作為成員函數(shù)的局部變量的類型

此題考查模板的作用。

模板的作用:模板它提供的是一個(gè)框架,待你提供真正的參數(shù)后,它便有了一個(gè)實(shí)例。類模板定義不同類型的成員:成

員函數(shù)、靜態(tài)數(shù)據(jù)成員和嵌套的類型。模板參數(shù)也可以作為成員函數(shù)的局部變量的類型。

故此題答案為D。

13、語(yǔ)句int*p=&k;定義了指針p,與這個(gè)語(yǔ)句等效的語(yǔ)句序列是o

A、int*p;p=&k;

B、int*p;p=k;

C、int*p;*p=&k;

D、int*p;*p=k;

此題考查的是指針。

一個(gè)指針是一個(gè)特定類型數(shù)據(jù)的存儲(chǔ)地址,比方一個(gè)變量的地址。在使用任何指針變量之前必須先給它賦一個(gè)所指合法

具體對(duì)象的地址值。

語(yǔ)句int*p=&k;定義了一個(gè)指向變量k地址的int類型的指針p,此定義方法是在定義過(guò)程中同時(shí)賦初始值。選項(xiàng)A中int

*p;p=&k;是先定義了一個(gè)指針p,然后將變量k的地址賦給指針p,與題目中的語(yǔ)句int*p=&k;等效。

故此題答案為A。

14、有如下程序:

ttinclude<iostream>

usingnamespacestd;

classMyClass{

public:

MyClass(intx):val(x){}

voidPrint0const{cout?z,const:val=z'?val?,\t);}

voidprint(){cout?z,val=z,?val<<,\t);}

private:

intval;

);

intmain(){

constMyClassobjl(10);

MyClassobj2(20);

objl.Print();

obj2.Print();

return0;

)

程序的輸出結(jié)果是。

A、val=10const:val=20

B、const:val=10const:val=20

C、const:val=10val=20

D、val=10val=20

此題考查的是構(gòu)造函數(shù)調(diào)用順序。

constMyClassobjl(10);首先定義了MyClass的const對(duì)象objl,并初始構(gòu)造函數(shù)參數(shù)為x=10。構(gòu)造函數(shù)通過(guò):val(x)

將x的值給val。

MyClassobj2(20);定義MyClass的對(duì)象obj2,并初始構(gòu)造函數(shù)參數(shù)為x=20。構(gòu)造函數(shù)通過(guò):val(x)將x的值給val。

objl.Print();調(diào)用Objl對(duì)象中的Print()函數(shù),輸出objl對(duì)象成員變量val的當(dāng)前值,即輸出const:val=10。

obj2.Print0;調(diào)用Obj2對(duì)象中的Print()函數(shù),輸出obj2對(duì)象成員變量val的當(dāng)前值,即輸出const:val=20。

故此題答案為B。

15、有如下程序:

ttinclude<iostream>

usingnamespacestd;

classBase(

public:

voidoutput(){cout?l;}

virtualvoidPrint(){cout?,B5;}

);

classDerived:publicBase(

public:

voidoutput0{cout?2;}

voidPrint(){cout?,D5;}

);

intmain(){

Base*ptr=newDerived;

ptr->output();

ptr->Print();

deleteptr;

return0;

)

程序的輸出結(jié)果是。

A、IB

B、ID

C、2B

D、2D

此題考查的是虛函數(shù)。

virtualvoidPrint(){cout*'B';}表示這方法是虛函數(shù),虛函數(shù)的意思是如果子類有繼承這虛函數(shù),那么子類的

對(duì)象在執(zhí)行此方法時(shí)調(diào)用子類的此方法。否那么會(huì)調(diào)用基類的此方法。

在此程序中Derived是子類,Base是基類,Base*ptr=newDerived;創(chuàng)立一個(gè)子類的對(duì)象給基類的指針對(duì)象。

ptr->output();因?yàn)橹羔榩tr是基類的對(duì)象。所以在執(zhí)行output()方法時(shí)會(huì)調(diào)用基類的output()方法,也就是Base類

的output。方法。不會(huì)調(diào)用Derived類的output()方法,因?yàn)閛utput()不是虛函數(shù)。輸出1。

ptr->Print();因?yàn)镻rint();在基類Base中申明是虛函數(shù),所以在子類中如果有繼承此方法就會(huì)調(diào)用子類的這方法。

所以這個(gè)調(diào)用的是Derived類的Print();方法。輸出D。

故此題答案為B。

16、必須用一對(duì)大括號(hào)括起來(lái)的程序段是o

A、switch語(yǔ)句中的case標(biāo)號(hào)語(yǔ)句

B、if語(yǔ)句的分支

C、循環(huán)語(yǔ)句的循環(huán)體

D、函數(shù)的函數(shù)體

此題考查的是函數(shù)的函數(shù)體。

由一對(duì)花括號(hào)括起來(lái)的〈函數(shù)體>是語(yǔ)句的序列,它定義了函數(shù)應(yīng)執(zhí)行的具體操作。

if語(yǔ)句的分支和循環(huán)語(yǔ)句的循環(huán)體通常使用花括號(hào)。括起來(lái);switch語(yǔ)句中的case標(biāo)號(hào)語(yǔ)句后加的是冒號(hào)":"。

故此題答案為D.

17、以下關(guān)于運(yùn)算符重載的描述中,正確的選項(xiàng)是。

A、運(yùn)算符重載為成員函數(shù)時(shí),假設(shè)參數(shù)表中無(wú)參數(shù),重載的是一元運(yùn)算符

B、一元運(yùn)算符只能作為成員函數(shù)重載

C、二元運(yùn)算符重載為非成員函數(shù)時(shí),參數(shù)表中有一個(gè)參數(shù)

D、C++中可以重載所有的運(yùn)算符

此題主要考查了運(yùn)算符重載。

一元運(yùn)算符還可以作為全局函數(shù)重載,所以選項(xiàng)B錯(cuò)誤。

二元運(yùn)算符重載為非成員函數(shù)時(shí),參數(shù)表中有兩個(gè)參數(shù),所以選項(xiàng)C錯(cuò)誤。

有些運(yùn)算符不能被重載,如域運(yùn)算符(::),條件運(yùn)算符(?:)等,具體哪些運(yùn)算符不能被重載與編譯器有關(guān),所以選

項(xiàng)D錯(cuò)誤。

故此題答案為A。

18、C++中的模板包括。

A、對(duì)象模板和函數(shù)模板

B、對(duì)象模板和類模板

C、函數(shù)模板和類模板

D、變量模板和對(duì)象模板

此題考查的是C++中的模板,包括函數(shù)模板和類模板。

函數(shù)模板是一系列相關(guān)函數(shù)的模型或樣板,這些函數(shù)的源代碼形式相同,只是所針對(duì)的數(shù)據(jù)類型不同。

類模板就是一系列相關(guān)類的模型或樣板,這些類的成員組成相同,成員函數(shù)的源代碼形式相同,所不同的只是所針對(duì)的

類型。

故此題答案為C。

19、如果利用C++流進(jìn)行輸入輸出,下面的表達(dá)中正確的選項(xiàng)是。

A、只能借助于流對(duì)象進(jìn)行輸入輸出

B、只能進(jìn)行格式化輸入輸出

C、只能借助于cin和cout進(jìn)行輸入輸出

D、只能使用運(yùn)算符>〉和〈〈進(jìn)行輸入輸出

此題考查的是C++流的概念。

就像C語(yǔ)言一樣,C++語(yǔ)言中也沒(méi)有輸入/輸出語(yǔ)句。在C++中,將數(shù)據(jù)從一個(gè)對(duì)象到另一個(gè)對(duì)象的流動(dòng)抽象為"流",數(shù)據(jù)

的輸入與輸出就是通過(guò)輸入/輸出流來(lái)實(shí)現(xiàn)的。C++流可以借助于cin、cout、cerr、clog進(jìn)行輸入輸出;使用運(yùn)算符“>>”、

和get。、getline0>put(),write。函數(shù)也可以進(jìn)行輸入輸出。

故此題答案為A。

20、在函數(shù)中,可以用auto、extern,register和static這四個(gè)關(guān)鍵字中的―?個(gè)來(lái)說(shuō)明變量的存儲(chǔ)類型,如果不說(shuō)明

存儲(chǔ)類型,那么默認(rèn)的存儲(chǔ)類型是。

A、auto

B、extern

C、register

D、static

此題考查的是C++的變量類型。C++中的變量類型分為如下幾種:

auto一函數(shù)內(nèi)部的局部變量。(auto可以省略不寫)一個(gè)局部變量如果沒(méi)有用于存儲(chǔ)類別定義符說(shuō)明時(shí),那么自動(dòng)

被說(shuō)明為auto。

static一靜態(tài)存儲(chǔ)分配,又分為內(nèi)部和外部靜態(tài)。

extern一全部變量〔用于外部變量說(shuō)明)。

register—變量存儲(chǔ)在硬件存放器中。

故此題答案為A。

21、以下符號(hào)中不屬于C++關(guān)鍵字的是o

A、friend

B、namespace

C、continue

D、byte

此題考查的是C++關(guān)鍵字。

關(guān)鍵字也稱保存字,它是由C++語(yǔ)言本身預(yù)先定義好的一類單詞。

詳細(xì)請(qǐng)見C++關(guān)鍵字表。

故此題答案為D。

22、有如下頭文件:

intfl();

staticintf2();

classMA{

public:

intf3();

staticintf4();

};

在所描述的函數(shù)中,具有隱含的this指針的是O

A、fl

B、f2

C、f3

D、f4

此題考查的是this指針。

this指針式一個(gè)隱含的指針,它隱含于每個(gè)類的非靜態(tài)成員函數(shù)中,它明確地表示出了成員函數(shù)當(dāng)前操作的數(shù)據(jù)所屬的

對(duì)象。當(dāng)對(duì)一個(gè)對(duì)象調(diào)用成員函數(shù)時(shí),編譯程序先將對(duì)象的地址賦值給this指針,然后調(diào)用成員函數(shù),每次成員函數(shù)存

取數(shù)據(jù)成員時(shí),那么隱含使用this指針。

this指針是指向?qū)ο蟊旧淼闹羔?,它只存在于類的非靜態(tài)成員中。fl,f2不是成員函數(shù),不存在隱含指針;f4為靜態(tài)成

員函數(shù),也不含有this指針;含有this指針的函數(shù)在調(diào)用時(shí)按thiscall調(diào)用約定調(diào)用。

故此題答案為C。

23、以下各組類型聲明符中,含義相同的一組是。

A、unsignedlongint和long

B、signedshortint和short

C、unsignedshort和short

D、shortint和int

此題考查的是符號(hào)常量聲明。

整型常量除包括根本整型(int)外,還包括短整型(shortint)、長(zhǎng)整型(longint)、無(wú)符號(hào)型(unsigned)o假

設(shè)整型常量為無(wú)符號(hào)型那么在表示時(shí)需要在前面加上unsigned,假設(shè)沒(méi)加unsigned那么默認(rèn)表示為有符號(hào)型(signed),

因此選項(xiàng)A、C錯(cuò)誤;

選項(xiàng)D中int表示整型,shortint表示短整型,含義不同,所以錯(cuò)誤;

選項(xiàng)B表示有符號(hào)的短整型,有符號(hào)(signed)可以隱藏,同時(shí)shortint可以表示為short,因此選項(xiàng)B正確。

故此題答案為B。

24、有以下程序:

ttinclude<iostream>

usingnamespacestd;

classB{

public:

virtualvoidshow(){cout〈〈〃B〃;}

};

classD:publicB{

public:

voidshow(){cout?z/D,z;}

};

voidfunl(B*ptr){ptr->show();}

voidfun2(B&ref){ref.show();}

voidfun3(Bb){b.show();}

intmain(){

Bb,*p=newD;

Dd;

funl(p);

fun2(b);

fun3(d);

return0;

)

程序運(yùn)行的輸出結(jié)果是。

A、BBB

B、BBD

C、DBB

D、DBD

此題考查的是虛函數(shù)的用法,及虛函數(shù)被繼承后的相互調(diào)用關(guān)系。

首先通過(guò)B類生成b對(duì)象,通過(guò)B類生成*p對(duì)象指針并申請(qǐng)D類內(nèi)存結(jié)構(gòu)賦給*p。然后通過(guò)D類生成d。

調(diào)用funl函數(shù),參數(shù)地址傳遞p指針地址。因?yàn)锽.showO是虛函數(shù),所以調(diào)用D.showO;輸出D。

調(diào)用fun2函數(shù),參數(shù)引用傳遞對(duì)象b,所以調(diào)用B.showO;輸出B。

調(diào)用fun3函數(shù),參數(shù)對(duì)象d;參數(shù)b二d地址。所以調(diào)用B.showO;輸出B。

所以輸出結(jié)果DBB。

故此題答案為C。

25、假設(shè)有如下類定義:

classB{

voidfunl(){}

protected:

doublevar1;

public:

voidfun2(){}

);

classD:publicB{

protected:

voidfun3(){}

};

obj是類D的對(duì)象,以下語(yǔ)句中不違反類成員訪問(wèn)控制權(quán)限的是o

A、obj.funl();

B、obj.varl;

C、obj.fun2();

D、obj.fun3()

此題考查的是類成員的訪問(wèn)控制。

類中提供了3中訪問(wèn)控制權(quán)限:公有(public)>私有(private)和保護(hù)(protected)0

B類中成員定義訪問(wèn)權(quán)限為:funl()為私有,varl為保護(hù),fun2為公共類D公共繼承B類結(jié)構(gòu),繼承結(jié)構(gòu)不改變成員權(quán)限。

因?yàn)閷?duì)象外部調(diào)用成員,只能訪問(wèn)〔公共)Public權(quán)限成員,僅fun2()為Public權(quán)限。

故此題答案為C。

26、有如下程序:

ttinclude<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),pl(y),val(z){cout?val;}

“Whole(){cout?val;}

private:

Partpl,p2;

intval;

);

intmain(){

Wholeobj(1,2,3);

return0;

}

程序的輸出結(jié)果是O

A、123321

B、213312

C、213

D、123123

此題考查的是類以及類的構(gòu)造函數(shù)。

classWhole{

public:

Whole(intx,inty,intz=0):p2(x),pl(y),val(z){cout?val;}

^WholeO{cout<<val;}

private:

Partpl,p2;〃定義時(shí)間的順序跟那個(gè)

intval;

};

在定義類Whole的私有成員時(shí),Partpl,p2;定義對(duì)象pl在p2前。所以在執(zhí)行Whole(intx,inty,int

z=0):p2(x),pl(y),val(z){cout?val;},創(chuàng)立對(duì)象時(shí)先執(zhí)行pl(y)構(gòu)造方法,再執(zhí)行p2(x)構(gòu)造方法。

Wholeobj(1,2,3);創(chuàng)立Whole類對(duì)象obj這時(shí)調(diào)用Whole類的構(gòu)造方法Whole(intx,inty,int

z=0):p2(x),pl(y),val(z){cout?val;},得到x=l,y=2,z=3,在執(zhí)行:p2(x),pl(y),val(z)方法,因?yàn)閷?duì)象pl在p2定義

前,所以先構(gòu)造對(duì)象pl也就執(zhí)行pl(2),調(diào)用Part類的Part(intx=0):val(x){cout〈〈val;}方法,輸出2,接著構(gòu)造p2對(duì)

象,執(zhí)行p2(l)輸出1。

再執(zhí)行val(z)給val賦值為3再執(zhí)行方法體的語(yǔ)句cout<〈val;輸出3。

現(xiàn)在所有對(duì)象構(gòu)造完了,開始析構(gòu)對(duì)象了。因?yàn)槲鰳?gòu)與構(gòu)造相反,所以先析構(gòu)z再p2再pl,輸出為312??傮w輸出就是213312。

故此題答案為B。

27、有如下程序:

ttinclude<iostream>

usingnamespacestd;

classMyClass{

public:

MyClass(){++count;}

~MyClass(){--count;}

staticintgetCount0{returncount;}

private:

staticintcount;

);

intMyClass::count=0;

intmain(){

MyClassobj;

cout?obj.getCount();

MyClass*ptr=newMyClass;

cout?MyClass::getCount();

deleteptr;

cout?MyClass::getCount();

return0;

)

程序的運(yùn)行結(jié)果是。

A、121

B、232

C、221

D、122

此題考查的是類的構(gòu)造函數(shù)。

intMyClass::count=0;的意思是初始化靜態(tài)變量coimt=0;

MyClassobj;是指創(chuàng)立類MyClass對(duì)象obj,這時(shí)會(huì)執(zhí)行類MyClass的構(gòu)造方法MyClass(){++count;},得到count=l,

cout?obj.getCount();輸出1。

MyClass*ptr=newMyClass;創(chuàng)立類MyClass指針對(duì)象*ptr,這時(shí)會(huì)執(zhí)行類MyClass的構(gòu)造方法MyClass(){++count;}

得到coimt=2,cout<<MyClass::getCount();輸出2。

deleteptr;刪除指針對(duì)象,這時(shí)會(huì)調(diào)用析構(gòu)方法~乂丫口4$5(){-count;},得到count=l,cout<XMyClass::getCount();

輸出1。

故此題答案為A。

28、有以下程序:

ttinclude<iostream>

usingnamespacestd;

classBase(

public:

Base(intx=0){cout?x;}

);

classDerived:publicBase(

public:

Derived(intx=0){cout?x;}

private:

Baseval;

};

intmain(){

Derivedd(l);

return0;

)

程序的輸出結(jié)果是O

A、0

B、1

C、01

D、001

此題考查的是類的相關(guān)知識(shí)。

“Baseval;〃因?yàn)轭怐erived有個(gè)Base類的對(duì)象val為私有變量。所以在給這類創(chuàng)立對(duì)象時(shí)會(huì)創(chuàng)立Baseval;對(duì)象。

在Derivedd(l);創(chuàng)立對(duì)象d時(shí)先創(chuàng)立Base的對(duì)象val,執(zhí)行Base類的Base(intx=0){cout〈〈x;}方法,輸出0;

接著創(chuàng)立類Derived對(duì)象d執(zhí)行類Derived的帶一個(gè)參數(shù)的構(gòu)造方法Derived(intx=0){cout?x;},在執(zhí)行前因?yàn)轭?/p>

Derived是公共繼承類Base所以先執(zhí)行基類的構(gòu)造方法Base(intx=0){cout?x;}輸出0(這個(gè)方法是給參數(shù)賦默認(rèn)值的;

intx=0意思是如果沒(méi)有傳參數(shù)過(guò)來(lái)就以0表示這個(gè)參數(shù)的值);

執(zhí)行完基類的構(gòu)造方法后執(zhí)行自己的構(gòu)造方法。因?yàn)閭鞯膮?shù)為1所以輸出1。

故此題答案為D。

29、對(duì)于一個(gè)類定義,以下表達(dá)中錯(cuò)誤的選項(xiàng)是o

A、如果沒(méi)有定義拷貝構(gòu)造函數(shù),編譯器將生成一個(gè)拷貝構(gòu)造函數(shù)

B、如果沒(méi)有定義缺省的構(gòu)造函數(shù),編譯器將一定生成一個(gè)缺省的構(gòu)造函數(shù)

C、如果沒(méi)有定義構(gòu)造函數(shù),編譯器將生成一個(gè)缺省的構(gòu)造函數(shù)和一個(gè)拷貝構(gòu)造函數(shù)

D、如果已經(jīng)定義了構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會(huì)生成任何構(gòu)造函數(shù)

此題考查的是類的定義。

類是一種用戶自定義的類型,聲明一個(gè)類對(duì)象時(shí),編譯程序需要為對(duì)象分配存儲(chǔ)空間,進(jìn)行必要的初始化。在C++中這項(xiàng)

工作是由構(gòu)造函數(shù)來(lái)完成的。構(gòu)造函數(shù)的作用是在對(duì)象被創(chuàng)立時(shí)利用特定的值構(gòu)造對(duì)象,將對(duì)象初始化為一種特定的狀

態(tài),使該對(duì)象具有區(qū)別于其他對(duì)象特征。構(gòu)造函數(shù)在對(duì)象被創(chuàng)立的時(shí)候由系統(tǒng)自動(dòng)調(diào)用。

故此題答案為B。

30、關(guān)于函數(shù)重載,以下表達(dá)中錯(cuò)誤的選項(xiàng)是。

A、重載函數(shù)的函數(shù)名必須相同

B、重載函數(shù)必須在參數(shù)個(gè)數(shù)或類型上有所不同

C、重載函數(shù)的返回值類型必須相同

D、重載函數(shù)的函數(shù)體可以有所不同

此題考查的是函數(shù)的重載。

函數(shù)重載允許用同一個(gè)函數(shù)名定義多個(gè)函數(shù)。被重載的函數(shù)必須要有不同的形參列表。不可以根據(jù)函數(shù)返回值類型來(lái)重

載函數(shù)。函數(shù)重載是用同一個(gè)函數(shù)名在不同的參數(shù)上做不同的事情。對(duì)于僅僅是函數(shù)的返回值不同,其它參數(shù)全部相同,

不是重載。如果出現(xiàn)這種況,會(huì)在編譯產(chǎn)生錯(cuò)誤。

故此題答案為C。

31、一程序運(yùn)行后執(zhí)行的第一個(gè)輸出操作是

cout?setw(10)?setfill(J*')?1234;

那么此操作的輸出結(jié)果是。

A、1234

B、******1234

C、**********1234

D、1234******

〃setw(10)〃表示要輸出10個(gè)寬度。

z/setfillC*')〃表示沒(méi)有到達(dá)寬度要求的用*替換。

〃1234〃表示操作的數(shù)據(jù),因此前應(yīng)該有6個(gè)*。

故此題答案為B。

32、如下函數(shù)的作用是以雙倍行距輸出文件:

voiddouble_space(ifstream&f,ofstream&t){

charc;

while(){

if(c==,\n')t.put(c);

)

)

畫線缺失的局部是O

A、f.get(c)與t.put(c)

B、f.put(c)與t.get(c)

C、t.get(c)與f.put(c)

D、t.put(c)與f.get(c)

此題考查的是文件流的輸入輸出。

文件流以磁盤文件以及其他可按文件方式進(jìn)行管理的外部設(shè)備為輸入輸出對(duì)象。

ifstream是文件輸入流類,只能用于輸入,它沒(méi)有提供任何用于輸出的操作。

ofstream是文件輸出流類,只能用于輸出,它沒(méi)有提供任何用于輸入的操作。

fstream是文件輸入輸出流類。

f.get(c)為獲得一個(gè)字符;

t.put(c)為輸出一個(gè)字符,因?yàn)閕f(c='\n')t.put(c);此句,當(dāng)c為間格字符(行距字符)時(shí),再多輸出一次t.put(c)o

故此題答案為A。

33、派生類的成員函數(shù)不能訪問(wèn)基類的。

A、公有成員和保護(hù)成員

B、公有成員

C、私有成員

D、保護(hù)成員

此題考查的是繼承的類型。

類的繼承方式有公有繼承、保護(hù)繼承和私有繼承三種方式。對(duì)于公有繼承基類中的成員訪問(wèn)屬性不變,對(duì)于保護(hù)和私有

繼承基類中的成員轉(zhuǎn)換為相應(yīng)的訪問(wèn)類型。但是如果基類成員的訪問(wèn)屬性為private的,那么不能被繼承。

故此題答案為C。

34、以下運(yùn)算符函數(shù)中肯定不屬于類FunNumber的成員函數(shù)的是。

A、intoperator-(FunNumber);

B、FunNumberoperator-0;

C、FunNumberoperator-(int);

D、intoperator-(FunNumber,FunNumber);

此題考查的是類的成員函數(shù)。

選項(xiàng)A是重載了負(fù)號(hào)或減法運(yùn)算符,由于減法運(yùn)算符它具有兩個(gè)操作數(shù),而題面原型中只有一個(gè),如果重載的是減號(hào)運(yùn)算

符,那么必為成員函數(shù)。

選項(xiàng)B中由于沒(méi)參數(shù),無(wú)論是負(fù)號(hào)或減法運(yùn)算符至少具有一個(gè)參數(shù),所以它必為成員函數(shù),同時(shí)也必定是重載了負(fù)號(hào)運(yùn)算

符。

選項(xiàng)C是必定以成函數(shù)的方式重載,因?yàn)镃++規(guī)定不能對(duì)內(nèi)置類的運(yùn)算符進(jìn)行重載,所以它不可能是友元函數(shù)(因?yàn)椴僮?/p>

數(shù)為內(nèi)置的int型),所以必為成員函數(shù)重載,且必定是重載了減法運(yùn)算符。

選項(xiàng)D有兩個(gè)參數(shù),無(wú)論是負(fù)號(hào)或減法運(yùn)算符,其操作數(shù)不超2個(gè),所以必定為友元函數(shù)重載,且重載了減法運(yùn)算符。

故此題答案為D.

35、以下是重載乘法運(yùn)算符的函數(shù)原型聲明,其中錯(cuò)誤的選項(xiàng)是。

MyClassoperator*(double,double);

MyClassoperator*(double,MyClass);

MyClassoperator*(MyClass,double);

MyClassoperator*(MyClass,MyClass);

此題考查的是運(yùn)算符的重載。

重載的運(yùn)算符應(yīng)保持其原有的根本語(yǔ)義。重載的運(yùn)算符應(yīng)盡可能保持其原有的特性。運(yùn)算符的重載應(yīng)當(dāng)配套。

至少要有一個(gè)形式參數(shù)是類的類型。所以選項(xiàng)A錯(cuò)。

故此題答案為A。

36、在兩種根本測(cè)試方法中,測(cè)試的原那么之一是保證所測(cè)模塊中每一個(gè)獨(dú)立路徑至少要執(zhí)行一次。

標(biāo)準(zhǔn)答案為:白盒或白箱

白盒測(cè)試的根本原那么是:保證所測(cè)模塊中每一獨(dú)立路徑至少執(zhí)行一次;保證所測(cè)模塊所有判斷的每一分支至少執(zhí)

行一次;保證所測(cè)模塊每一循環(huán)都在邊界條件下至少執(zhí)行一次;驗(yàn)證所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。

37、線性表的存儲(chǔ)結(jié)構(gòu)主要分為順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。隊(duì)列是一種特殊的線性表,循環(huán)隊(duì)列是隊(duì)列的存

儲(chǔ)結(jié)構(gòu)。

標(biāo)準(zhǔn)答案為:順序

在實(shí)際應(yīng)用中,隊(duì)列的順序存儲(chǔ)結(jié)構(gòu)一般采用循環(huán)隊(duì)列的形式。

38、對(duì)以下二叉樹進(jìn)行中序遍歷的結(jié)果為。

標(biāo)準(zhǔn)答案為:ACBDFEHGP或A、C、B、D、F、E、H、G、P或A,C,B,D,F,E,H,G,P或A,C,B,D,F,E,H,G,P

二叉樹的中序遍歷指在訪問(wèn)根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問(wèn)根結(jié)點(diǎn),最后

遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先遍歷左子樹,然后訪問(wèn)根結(jié)點(diǎn),最后遍歷右子樹。遍歷的各種形式~牢記~

39、在E-R圖中,矩形表示。

標(biāo)準(zhǔn)答案為:實(shí)體集

在E-R圖中,矩形表示實(shí)體集。

40、軟件需求規(guī)格說(shuō)明書應(yīng)具有完整性、無(wú)歧義性、正確性、可驗(yàn)證性、可修改性等特性,其中最重要的是。

標(biāo)準(zhǔn)答案為:無(wú)歧義性

無(wú)歧義性是指對(duì)每一個(gè)需求只有一種解釋,其陳述具有惟一性。作為設(shè)計(jì)的根底和驗(yàn)收的依據(jù),軟件需求規(guī)格說(shuō)明

書應(yīng)該是精確而無(wú)二義的,需求說(shuō)明書越精確,那么以后出現(xiàn)的錯(cuò)誤、混淆、反復(fù)的可能性越小。

41、有函數(shù)f的定義如下:

intf0(

staticints=0;

s+=2;

returns;

)

那么在某程序中第2次執(zhí)行函數(shù)調(diào)用語(yǔ)句f();時(shí),函數(shù)f的返回值是。

標(biāo)準(zhǔn)答案為:4

此題考查的是static的用法。

static在程序運(yùn)行的過(guò)程中只初始化一次。

第一次運(yùn)行時(shí),s=2

第二次運(yùn)行時(shí),s=2+2=4

所以答案為4。

42、請(qǐng)將以下棧類Stack補(bǔ)充完整。

classStack{

private:

intpList[100];//int數(shù)組,用于存放棧的元素

inttop;〃棧頂元素〔數(shù)組下標(biāo))

public:

Stack():top(0){}

voidPush(constint&item);//新元素item壓入棧

intPop(void);//新棧頂元素彈出棧

);

voidStack::Push(constint&item){

if(top=99)//如果棧滿,程序終止}

exit(1);

top++;//棧頂指針增1

)

intStack::Pop(){

if(top<0)//如果棧空,程序終止

exit(1);

returnpList[top-];

)

標(biāo)準(zhǔn)答案為:pList[top]=item

此題考查堆棧的操作。

由于在本算法中,要彈出棧頂元素,要先將新元素item壓入棧,然后取出stack[top]中的元素。

如果棧滿,if(top=99),程序終止,棧頂指針增晨

如果棧空,程序終止。

按照堆棧先進(jìn)后的原那么,向堆棧壓入的數(shù)據(jù)總是在最上面的,top為最大記數(shù),所以pList堆棧的第top數(shù)組位

置將被賦值成壓入數(shù)據(jù)。所以答案為pList[top]二item。

43、類sample是一個(gè)抽象類,其成員函數(shù)display是無(wú)形參、無(wú)返回類型的純虛函數(shù),請(qǐng)完成其聲明:

classsample{

public:

sample(){};

);

標(biāo)準(zhǔn)答案為:virtualvoiddisplay()=0;

此題考查的是純虛函數(shù)。

這是一個(gè)純虛函數(shù)定義。它的定義格式是:virtual函數(shù)返回類型函數(shù)名(參數(shù)列表)=0,根據(jù)題目的意思,返回類

型為空,那么用void表示函數(shù)名為display參數(shù)列表為空,那么用()表示結(jié)合起來(lái),就是virtualvoiddisplay0=0;

〔其中0表示無(wú)函數(shù)體)。

44、如下程序的輸出結(jié)果是23,請(qǐng)將畫線缺失的局部補(bǔ)充完整。

#include<iostream>

usingnamespacestd;

classMyClass{

public:

voidPrint0const{cout<<23;}

};

intmain(){

MyClass*p=newMyClass();

.Print();

return0;

)

標(biāo)準(zhǔn)答案為:(*p)

此題考查的是指針。

MyClass*p二newMyClass0;是創(chuàng)立一個(gè)類MyClass的指針對(duì)象。要執(zhí)行創(chuàng)立的對(duì)象,那么(*p).Print();即為執(zhí)行

此對(duì)象的方法。

45、有如下程序:

ttinclude<iostream>

usingnamespacestd;

classA{

public:

A(){cout〈〈〃A〃;)

?A(){cout〈〈〃A〃;}

);

classB{

Aa;

public:

B(){cout<<〃B〃;}

~B(){cout?"B〃;}

);

intmain(){

Bb;

return0;

)

程序的輸出結(jié)果是。

標(biāo)準(zhǔn)答案為:ABBA

此題考查的是類的構(gòu)造。

main(){Bb;

創(chuàng)立類B一個(gè)對(duì)象b,這時(shí)轉(zhuǎn)到類B里去執(zhí)行類B的構(gòu)造方法B(),因?yàn)樵陬怋里有個(gè)全局的類A的對(duì)象a,所以在

執(zhí)行構(gòu)造方法B()之前會(huì)先創(chuàng)立類A的對(duì)象a,就去執(zhí)行類A的構(gòu)造方法A(),輸出字符A,再返回到類B執(zhí)行它的構(gòu)造

方法B()輸出字符B,現(xiàn)在所有的構(gòu)造方法執(zhí)行完了,就執(zhí)行析構(gòu)方法了,因?yàn)槲鰳?gòu)方法與構(gòu)造方法的執(zhí)行順序相反,所

以先執(zhí)行第()方法輸出字符B,再執(zhí)行~A()輸出字符A。所以輸出結(jié)果ABBA。

46、請(qǐng)將如下程序補(bǔ)充完整,使得輸出結(jié)果為:bbaa

#include<iostream>

usingnamespacestd;

classA{

public:

{cout〈<〃aa〃;)

);

classB:publicA{

public:

~B(){cout<<”bb〃;}

);

intmain(){

B*p=newB;

deletep;

return0;

)

標(biāo)準(zhǔn)答案為:~A()

此題考查的是一個(gè)帶有指針的類的構(gòu)造方法。

B*p=

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論