全國計算機等級考試二級C++題庫3(共17套)_第1頁
全國計算機等級考試二級C++題庫3(共17套)_第2頁
全國計算機等級考試二級C++題庫3(共17套)_第3頁
全國計算機等級考試二級C++題庫3(共17套)_第4頁
全國計算機等級考試二級C++題庫3(共17套)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

6第三套

1、在面向對象方法中,實現信息隱蔽是依靠。

A、對象的繼承

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

C、對象的封裝

D、對象的分類

信息隱蔽是指采用封裝技術,將程序模塊的實現細節(jié)隱藏起來,使模塊接口盡量簡單。

故此題答案為C。

2、以下表達中正確的選項是。

A、為了建立一個關系,首先要構造數據的邏輯關系

B、表示關系的二維表中各元組的每一個分量還可以分成假設干數據項

C、一個關系的屬性名表稱為關系模式

D、一個關系可以包括多個二維表

為了建立一個關系,首先要指定關系的屬性,所以選項A是錯誤的。表示關系的二維表中各元組的每一個分量必須是不可

分的根本數據項,所以選項B是錯誤的。在關系數據庫中,把數據表示成二維表,而一個二維表就是一個關系,所以選項

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

故此題答案為C。

3、以下表達中,不符合良好程序設計風格要求的是。

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

B、程序的可讀性好

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

D、輸入數據前要有提示信息

要形成良好的程序設計風格,主要應注重和考慮下述一些因素:符號名的命名應具有一定的實際含義,以便于對程序功

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

清晰第一,效率第二。

故此題答案為A。

4、一棵二叉樹中共有70個葉子結點與80個度為1的結點,那么該二叉樹中的總結點數為。

A、219

B、221

C、229

D、231

二叉樹的性質3:在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多一個。此題中度為2的結點數

為70-1=69,該二叉樹中的總結點數為70+80+69=219。

故此題答案為A。

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

A、n(n+l)/2

B、nlogzn

C、n(n-l)/2

D、n/2

冒泡排序法是一種最簡單的交換類排序方法,它是通過相鄰數據元素的交換逐步將線性表變成有序。

假設線性表的長度為n,那么在最壞的情況下,冒泡排序需要經過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需

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

故此題答案為C。

6、軟件調試的目的是。

A、發(fā)現錯誤

B、改正錯誤

C、改善軟件的性能

D、驗證軟件的正確性

軟件調試的目的是診斷和改正程序中的錯誤,改正以后還需要再測試。

故此題答案為B.

7、以下表達中正確的選項是。

A、數據庫系統(tǒng)是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持

B、數據庫技術的根本目標是要解決數據的共享問題

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

D、以上三種說法都不對

為了解決多用戶、多應用共享數據的需求,使數據為盡可能多的應用效勞,數據管理的最新技術—數據庫技術應運而生。

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

A、C是錯誤的。

故此題答案為B。

8、以下表達中正確的選項是。

A、數據的邏輯結構與存儲結構必定是---對應的

B、由于計算機存儲空間是向量式的存儲結構,因此,數據的存儲結構一定是線性結構

C、程序設計語言中的數組一般是順序存儲結構,因此,利用數組只能處理線性結構

D、以上三種說法都不對

數據的邏輯結構在計算機存儲空間中的存放形式稱為數據的存儲結構。一種數據的邏輯結構根據需要可以表示成多種存

儲結構,常用的存儲結構有順序、鏈接、索引等。而采用不同的存儲結構,其數據處理的效率是不同的。因此,在進行

數據處理時,選擇適宜的存儲結構是很重要的,所以選項A是錯誤的。

根據數據結構中各數據元素之間前后件關系的復雜程度,一般將數據結構分為兩大類型:線性結構和非線性結構,所以

選項B是錯誤的。

數組既可以處理線性結構也可以處理非線性結構,所以選項C是錯誤的。

故此題答案為D.

9、軟件是指。

A、程序

B、程序和文檔

C、算法加數據結構

D、程序、數據與相關文檔的完整集合

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

故此題答案為D.

10、以下表達中正確的選項是。

A、程序執(zhí)行的效率與數據的存儲結構密切相關

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

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

D、以上三種說法都不對

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

算機存儲空間。

故此題答案為A。

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

A、public和public

B、public和protected

C、protected和public

D、protected和protected

此題考查的是派生類。

派生類中的成員不能訪問基類中的私有成員,可以訪問基類中的公有成員和保護成員。此時派生類對基類中各成員的訪

問能力與繼承方式無關,但繼承方式將影響基類成員在派生類中的訪問控制屬性。

故此題答案為D。

12、以下關于類模板的模板參數的表達中,錯誤的選項是。

A、模板參數可以作為數據成員的類型

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

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

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

此題考查模板的作用。

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

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

故此題答案為D。

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

A、int*p;p=&k;

B、int*p;p=k;

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

D、int*p;*p=k;

此題考查的是指針。

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

具體對象的地址值。

語句int*p=&k;定義了一個指向變量k地址的int類型的指針p,此定義方法是在定義過程中同時賦初始值。選項A中int

*p;p=&k;是先定義了一個指針p,然后將變量k的地址賦給指針p,與題目中的語句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;

)

程序的輸出結果是。

A、val=10const:val=20

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

C、const:val=10val=20

D、val=10val=20

此題考查的是構造函數調用順序。

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

將x的值給val。

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

objl.Print();調用Objl對象中的Print()函數,輸出objl對象成員變量val的當前值,即輸出const:val=10。

obj2.Print0;調用Obj2對象中的Print()函數,輸出obj2對象成員變量val的當前值,即輸出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;

)

程序的輸出結果是。

A、IB

B、ID

C、2B

D、2D

此題考查的是虛函數。

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

對象在執(zhí)行此方法時調用子類的此方法。否那么會調用基類的此方法。

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

ptr->output();因為指針ptr是基類的對象。所以在執(zhí)行output()方法時會調用基類的output()方法,也就是Base類

的output。方法。不會調用Derived類的output()方法,因為output()不是虛函數。輸出1。

ptr->Print();因為Print();在基類Base中申明是虛函數,所以在子類中如果有繼承此方法就會調用子類的這方法。

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

故此題答案為B。

16、必須用一對大括號括起來的程序段是o

A、switch語句中的case標號語句

B、if語句的分支

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

D、函數的函數體

此題考查的是函數的函數體。

由一對花括號括起來的〈函數體>是語句的序列,它定義了函數應執(zhí)行的具體操作。

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

故此題答案為D.

17、以下關于運算符重載的描述中,正確的選項是。

A、運算符重載為成員函數時,假設參數表中無參數,重載的是一元運算符

B、一元運算符只能作為成員函數重載

C、二元運算符重載為非成員函數時,參數表中有一個參數

D、C++中可以重載所有的運算符

此題主要考查了運算符重載。

一元運算符還可以作為全局函數重載,所以選項B錯誤。

二元運算符重載為非成員函數時,參數表中有兩個參數,所以選項C錯誤。

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

項D錯誤。

故此題答案為A。

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

A、對象模板和函數模板

B、對象模板和類模板

C、函數模板和類模板

D、變量模板和對象模板

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

函數模板是一系列相關函數的模型或樣板,這些函數的源代碼形式相同,只是所針對的數據類型不同。

類模板就是一系列相關類的模型或樣板,這些類的成員組成相同,成員函數的源代碼形式相同,所不同的只是所針對的

類型。

故此題答案為C。

19、如果利用C++流進行輸入輸出,下面的表達中正確的選項是。

A、只能借助于流對象進行輸入輸出

B、只能進行格式化輸入輸出

C、只能借助于cin和cout進行輸入輸出

D、只能使用運算符>〉和〈〈進行輸入輸出

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

就像C語言一樣,C++語言中也沒有輸入/輸出語句。在C++中,將數據從一個對象到另一個對象的流動抽象為"流",數據

的輸入與輸出就是通過輸入/輸出流來實現的。C++流可以借助于cin、cout、cerr、clog進行輸入輸出;使用運算符“>>”、

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

故此題答案為A。

20、在函數中,可以用auto、extern,register和static這四個關鍵字中的―?個來說明變量的存儲類型,如果不說明

存儲類型,那么默認的存儲類型是。

A、auto

B、extern

C、register

D、static

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

auto一函數內部的局部變量。(auto可以省略不寫)一個局部變量如果沒有用于存儲類別定義符說明時,那么自動

被說明為auto。

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

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

register—變量存儲在硬件存放器中。

故此題答案為A。

21、以下符號中不屬于C++關鍵字的是o

A、friend

B、namespace

C、continue

D、byte

此題考查的是C++關鍵字。

關鍵字也稱保存字,它是由C++語言本身預先定義好的一類單詞。

詳細請見C++關鍵字表。

故此題答案為D。

22、有如下頭文件:

intfl();

staticintf2();

classMA{

public:

intf3();

staticintf4();

};

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

A、fl

B、f2

C、f3

D、f4

此題考查的是this指針。

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

對象。當對一個對象調用成員函數時,編譯程序先將對象的地址賦值給this指針,然后調用成員函數,每次成員函數存

取數據成員時,那么隱含使用this指針。

this指針是指向對象本身的指針,它只存在于類的非靜態(tài)成員中。fl,f2不是成員函數,不存在隱含指針;f4為靜態(tài)成

員函數,也不含有this指針;含有this指針的函數在調用時按thiscall調用約定調用。

故此題答案為C。

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

A、unsignedlongint和long

B、signedshortint和short

C、unsignedshort和short

D、shortint和int

此題考查的是符號常量聲明。

整型常量除包括根本整型(int)外,還包括短整型(shortint)、長整型(longint)、無符號型(unsigned)o假

設整型常量為無符號型那么在表示時需要在前面加上unsigned,假設沒加unsigned那么默認表示為有符號型(signed),

因此選項A、C錯誤;

選項D中int表示整型,shortint表示短整型,含義不同,所以錯誤;

選項B表示有符號的短整型,有符號(signed)可以隱藏,同時shortint可以表示為short,因此選項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;

)

程序運行的輸出結果是。

A、BBB

B、BBD

C、DBB

D、DBD

此題考查的是虛函數的用法,及虛函數被繼承后的相互調用關系。

首先通過B類生成b對象,通過B類生成*p對象指針并申請D類內存結構賦給*p。然后通過D類生成d。

調用funl函數,參數地址傳遞p指針地址。因為B.showO是虛函數,所以調用D.showO;輸出D。

調用fun2函數,參數引用傳遞對象b,所以調用B.showO;輸出B。

調用fun3函數,參數對象d;參數b二d地址。所以調用B.showO;輸出B。

所以輸出結果DBB。

故此題答案為C。

25、假設有如下類定義:

classB{

voidfunl(){}

protected:

doublevar1;

public:

voidfun2(){}

);

classD:publicB{

protected:

voidfun3(){}

};

obj是類D的對象,以下語句中不違反類成員訪問控制權限的是o

A、obj.funl();

B、obj.varl;

C、obj.fun2();

D、obj.fun3()

此題考查的是類成員的訪問控制。

類中提供了3中訪問控制權限:公有(public)>私有(private)和保護(protected)0

B類中成員定義訪問權限為:funl()為私有,varl為保護,fun2為公共類D公共繼承B類結構,繼承結構不改變成員權限。

因為對象外部調用成員,只能訪問〔公共)Public權限成員,僅fun2()為Public權限。

故此題答案為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;

}

程序的輸出結果是O

A、123321

B、213312

C、213

D、123123

此題考查的是類以及類的構造函數。

classWhole{

public:

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

^WholeO{cout<<val;}

private:

Partpl,p2;〃定義時間的順序跟那個

intval;

};

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

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

Wholeobj(1,2,3);創(chuàng)立Whole類對象obj這時調用Whole類的構造方法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)方法,因為對象pl在p2定義

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

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

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

現在所有對象構造完了,開始析構對象了。因為析構與構造相反,所以先析構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;

)

程序的運行結果是。

A、121

B、232

C、221

D、122

此題考查的是類的構造函數。

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

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

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

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

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

deleteptr;刪除指針對象,這時會調用析構方法~乂丫口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;

)

程序的輸出結果是O

A、0

B、1

C、01

D、001

此題考查的是類的相關知識。

“Baseval;〃因為類Derived有個Base類的對象val為私有變量。所以在給這類創(chuàng)立對象時會創(chuàng)立Baseval;對象。

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

接著創(chuàng)立類Derived對象d執(zhí)行類Derived的帶一個參數的構造方法Derived(intx=0){cout?x;},在執(zhí)行前因為類

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

intx=0意思是如果沒有傳參數過來就以0表示這個參數的值);

執(zhí)行完基類的構造方法后執(zhí)行自己的構造方法。因為傳的參數為1所以輸出1。

故此題答案為D。

29、對于一個類定義,以下表達中錯誤的選項是o

A、如果沒有定義拷貝構造函數,編譯器將生成一個拷貝構造函數

B、如果沒有定義缺省的構造函數,編譯器將一定生成一個缺省的構造函數

C、如果沒有定義構造函數,編譯器將生成一個缺省的構造函數和一個拷貝構造函數

D、如果已經定義了構造函數和拷貝構造函數,編譯器不會生成任何構造函數

此題考查的是類的定義。

類是一種用戶自定義的類型,聲明一個類對象時,編譯程序需要為對象分配存儲空間,進行必要的初始化。在C++中這項

工作是由構造函數來完成的。構造函數的作用是在對象被創(chuàng)立時利用特定的值構造對象,將對象初始化為一種特定的狀

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

故此題答案為B。

30、關于函數重載,以下表達中錯誤的選項是。

A、重載函數的函數名必須相同

B、重載函數必須在參數個數或類型上有所不同

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

D、重載函數的函數體可以有所不同

此題考查的是函數的重載。

函數重載允許用同一個函數名定義多個函數。被重載的函數必須要有不同的形參列表。不可以根據函數返回值類型來重

載函數。函數重載是用同一個函數名在不同的參數上做不同的事情。對于僅僅是函數的返回值不同,其它參數全部相同,

不是重載。如果出現這種況,會在編譯產生錯誤。

故此題答案為C。

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

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

那么此操作的輸出結果是。

A、1234

B、******1234

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

D、1234******

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

z/setfillC*')〃表示沒有到達寬度要求的用*替換。

〃1234〃表示操作的數據,因此前應該有6個*。

故此題答案為B。

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

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)

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

文件流以磁盤文件以及其他可按文件方式進行管理的外部設備為輸入輸出對象。

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

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

fstream是文件輸入輸出流類。

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

t.put(c)為輸出一個字符,因為if(c='\n')t.put(c);此句,當c為間格字符(行距字符)時,再多輸出一次t.put(c)o

故此題答案為A。

33、派生類的成員函數不能訪問基類的。

A、公有成員和保護成員

B、公有成員

C、私有成員

D、保護成員

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

類的繼承方式有公有繼承、保護繼承和私有繼承三種方式。對于公有繼承基類中的成員訪問屬性不變,對于保護和私有

繼承基類中的成員轉換為相應的訪問類型。但是如果基類成員的訪問屬性為private的,那么不能被繼承。

故此題答案為C。

34、以下運算符函數中肯定不屬于類FunNumber的成員函數的是。

A、intoperator-(FunNumber);

B、FunNumberoperator-0;

C、FunNumberoperator-(int);

D、intoperator-(FunNumber,FunNumber);

此題考查的是類的成員函數。

選項A是重載了負號或減法運算符,由于減法運算符它具有兩個操作數,而題面原型中只有一個,如果重載的是減號運算

符,那么必為成員函數。

選項B中由于沒參數,無論是負號或減法運算符至少具有一個參數,所以它必為成員函數,同時也必定是重載了負號運算

符。

選項C是必定以成函數的方式重載,因為C++規(guī)定不能對內置類的運算符進行重載,所以它不可能是友元函數(因為操作

數為內置的int型),所以必為成員函數重載,且必定是重載了減法運算符。

選項D有兩個參數,無論是負號或減法運算符,其操作數不超2個,所以必定為友元函數重載,且重載了減法運算符。

故此題答案為D.

35、以下是重載乘法運算符的函數原型聲明,其中錯誤的選項是。

MyClassoperator*(double,double);

MyClassoperator*(double,MyClass);

MyClassoperator*(MyClass,double);

MyClassoperator*(MyClass,MyClass);

此題考查的是運算符的重載。

重載的運算符應保持其原有的根本語義。重載的運算符應盡可能保持其原有的特性。運算符的重載應當配套。

至少要有一個形式參數是類的類型。所以選項A錯。

故此題答案為A。

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

標準答案為:白盒或白箱

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

行一次;保證所測模塊每一循環(huán)都在邊界條件下至少執(zhí)行一次;驗證所有內部數據結構的有效性。

37、線性表的存儲結構主要分為順序存儲結構和鏈式存儲結構。隊列是一種特殊的線性表,循環(huán)隊列是隊列的存

儲結構。

標準答案為:順序

在實際應用中,隊列的順序存儲結構一般采用循環(huán)隊列的形式。

38、對以下二叉樹進行中序遍歷的結果為。

標準答案為: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

二叉樹的中序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結點,最后

遍歷右子樹;并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。遍歷的各種形式~牢記~

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

標準答案為:實體集

在E-R圖中,矩形表示實體集。

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

標準答案為:無歧義性

無歧義性是指對每一個需求只有一種解釋,其陳述具有惟一性。作為設計的根底和驗收的依據,軟件需求規(guī)格說明

書應該是精確而無二義的,需求說明書越精確,那么以后出現的錯誤、混淆、反復的可能性越小。

41、有函數f的定義如下:

intf0(

staticints=0;

s+=2;

returns;

)

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

標準答案為:4

此題考查的是static的用法。

static在程序運行的過程中只初始化一次。

第一次運行時,s=2

第二次運行時,s=2+2=4

所以答案為4。

42、請將以下棧類Stack補充完整。

classStack{

private:

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

inttop;〃棧頂元素〔數組下標)

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)//如果??眨绦蚪K止

exit(1);

returnpList[top-];

)

標準答案為:pList[top]=item

此題考查堆棧的操作。

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

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

如果棧空,程序終止。

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

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

43、類sample是一個抽象類,其成員函數display是無形參、無返回類型的純虛函數,請完成其聲明:

classsample{

public:

sample(){};

);

標準答案為:virtualvoiddisplay()=0;

此題考查的是純虛函數。

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

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

〔其中0表示無函數體)。

44、如下程序的輸出結果是23,請將畫線缺失的局部補充完整。

#include<iostream>

usingnamespacestd;

classMyClass{

public:

voidPrint0const{cout<<23;}

};

intmain(){

MyClass*p=newMyClass();

.Print();

return0;

)

標準答案為:(*p)

此題考查的是指針。

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

此對象的方法。

45、有如下程序:

ttinclude<iostream>

usingnamespacestd;

classA{

public:

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

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

);

classB{

Aa;

public:

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

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

);

intmain(){

Bb;

return0;

)

程序的輸出結果是。

標準答案為:ABBA

此題考查的是類的構造。

main(){Bb;

創(chuàng)立類B一個對象b,這時轉到類B里去執(zhí)行類B的構造方法B(),因為在類B里有個全局的類A的對象a,所以在

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

方法B()輸出字符B,現在所有的構造方法執(zhí)行完了,就執(zhí)行析構方法了,因為析構方法與構造方法的執(zhí)行順序相反,所

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

46、請將如下程序補充完整,使得輸出結果為:bbaa

#include<iostream>

usingnamespacestd;

classA{

public:

{cout〈<〃aa〃;)

);

classB:publicA{

public:

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

);

intmain(){

B*p=newB;

deletep;

return0;

)

標準答案為:~A()

此題考查的是一個帶有指針的類的構造方法。

B*p=

溫馨提示

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

評論

0/150

提交評論