全國計算機二級C 考題真題及答案_第1頁
全國計算機二級C 考題真題及答案_第2頁
全國計算機二級C 考題真題及答案_第3頁
全國計算機二級C 考題真題及答案_第4頁
全國計算機二級C 考題真題及答案_第5頁
已閱讀5頁,還剩138頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2010年3月考試真題(第31次)

1.數(shù)據(jù)流程圖(DFD圖)是。

A、軟件概要設計的工具B、軟件詳細設計的工具

C、結構化方法的需求分析工具D、面向對象方法的需求分析工具

常見的需求分析方法有:結構化分析方法和面向對象的分析方法。結構化分析就是使用數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、結構

化英語、判定表和判定樹等工具,來建立一種新的、稱為結構化規(guī)格說明的目標文檔。故本題答案為C。

2.軟件(程序)調試的任務是。

A、診斷和改正程序中的錯誤B、盡可能多地發(fā)現(xiàn)程序中的錯誤

C、發(fā)現(xiàn)并改正程序中的所有錯誤D、確定程序中錯誤的性質

程序調試的任務是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯

誤,然后借助于一定的調試工具去執(zhí)行找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,調試主要在開發(fā)階段。故

本題答案為A。

3.軟件按功能可以分為:應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于系統(tǒng)軟件的是。

A、編輯軟件B、操作系統(tǒng)C、教務管理系統(tǒng)D、瀏覽器

軟件按功能可以分為:應用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。應用軟件是為解決特定領域的應用而開發(fā)的軟件。例如,

事務處理軟件,工程與科學計算軟件,實時處理軟件,嵌入式軟件,人工智能軟件等應用性質不同的各種軟件。系統(tǒng)軟件是計算

機管理自身資源,提高計算機使用效率并為計算機用戶提供各種服務的軟件。如操作系統(tǒng),編譯程序,匯編程序,網(wǎng)絡軟件,數(shù)

據(jù)庫管理系統(tǒng)等,所以選項B屬于系統(tǒng)軟件。故本題答案為B。

4.軟件生命周期可分為定義階段,開發(fā)階段和維護階段。詳細設計屬于?

A、定義階段B、開發(fā)階段C、維護階段D、上述三個階段

軟件生命周期可分為軟件定義、軟件開發(fā)及軟件運行維護三個階段。軟件開發(fā)階段包括概要設計、詳細設計、實現(xiàn)和測試四個活

動階段。故本題答案為B。

5.下列敘述中正確的是.

A、對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數(shù)為n

B、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為(n/2)

C、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為Ogan)

D、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為Slogan)

對于長度為n的有序線性表,在最壞情況下,二分查找只需要比較10g2n次,而順序查找需要比較n次。二分法查找只適用于順序

存儲的有序表,如果采用鏈式存儲結構,也只能用順序查找,所以選項A是正確的。

故本題答案為A。

6.有兩個關系R和T如下:

A、選擇B、投影C、交1)、并

從關系中找出滿足給定條件的元組的操作稱為選擇。選擇是從行的角度進行的運算,即從水平方向抽取記錄。由圖可知關系R通過

運算得到關系T,關系T與關系R相比,屬性的個數(shù)沒有發(fā)生變化,記錄的條數(shù)發(fā)生了變化。因此所使用的運算應該是選擇。故

本題答案為A。

7.算法的時間復雜度是指。

A、算法的執(zhí)行時間B、算法所處理的數(shù)據(jù)量C、算法程序中的語句或指令條數(shù)

D、算法在執(zhí)行過程中所需要的基本運算次數(shù)

所謂算法的時間復雜度,是指執(zhí)行算法所需要的計算工作量。為了能夠比較客觀地反映出個算法的效率,在度量?個算法的工

作量時,不僅應該與所使用的計算機、程序設計語言以及程序編制者無關,而且還應該與算法實現(xiàn)過程中的許多細節(jié)無關。為此,

可以用算法在執(zhí)行過程中所需基本運算的執(zhí)行次數(shù)來度量算法的工作量。故本題答案為D。

8.數(shù)據(jù)庫設計中,用E-R圖來描述信息結構但不涉及信息在計算機中的表示,它屬于數(shù)據(jù)庫設計的o

A、需求分析階段B、邏輯設計階段C、概念設計階段D、物理設計階段

E-R圖是E-R模型的一種非常直觀的圖的形式表示,它描述信息結構但不涉及信息在計算機中的表示,它是數(shù)據(jù)庫概念設計階段的

工具。故本題答案為C。

9.在學生管理的關系數(shù)據(jù)庫中,存取一個學生信息的數(shù)據(jù)單位是___.

A、文件B、數(shù)據(jù)庫C、字段D、記錄

實體是概念世界中的基本單位,屬性附屬于實體,它本身并不構成獨立單位。屬性有屬性域,每個實體可取屬性域內的值。一個

實體的所有屬性取值組成了一個值集叫元組(或稱記錄)。在概念世界中,可以用元組表示實體,也可用它區(qū)別不同的實體。所

以在學生管理的關系數(shù)據(jù)庫中,存取一個學生信息的數(shù)據(jù)單位是元組(或記錄)。故本題答案為D。

10.數(shù)據(jù)庫管理系統(tǒng)中負責數(shù)據(jù)模式定義的語言是?

A、數(shù)據(jù)定義語言B、數(shù)據(jù)管理語言C、數(shù)據(jù)操縱語言D、數(shù)據(jù)控制語言

數(shù)據(jù)定義語言(DDL):該語言負責數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構建。

數(shù)據(jù)操縱語言(DML):該語言負責數(shù)據(jù)的操縱,包括查詢及增、冊h改等操作。

數(shù)據(jù)控制語言(DCL):該語言負責數(shù)據(jù)完整性、安全性的定義與檢杳以及并發(fā)控制、故障恢復等功能。

故本題答案為A。

11.有如下兩個類定義

classXX{

private:

doublexl;

protected:

doublex2;

public:

doublex3;

);

classYY:protectedXX{

private:

doubleyl;

protected:

doubley2;

public:

doubley3;

);

在類YY中保護成員變量的個數(shù)是_____.

A、1B、2C、3D、4

本題主要考查了類的繼承與派生。

類的繼承方式有三種:公有(public)繼承、保護(protected)繼承和私有(private)繼承。當派生類從基類保護繼承時,

基類的公有成員和保護成員在派生類中都為保護成員。本題派生類YY從基類XX保護繼承,因此基類XX的公有成員x3和保護成員x2

都成為派生類YY的保護成員,再加上派生類YY自身的保護成員y2,因此類YY中有3個保護成員。故本題答案為C。

12.在C++中,cin是一個。

A、類B、對象C、模板D、函數(shù)

本題主要考查了I/O流。

在C++中,數(shù)據(jù)的輸入與輸出是通過I/O流來實現(xiàn),cin和cout是預定義的流類對象。

故本題答案為B。

13.若x和y是程序中的兩個整型變量,則下列if語句中正確的是。

A、if(x==0)y=l;elsey=2;B、if(x==0)theny=lelsey=2;

C>if(x==0)y=lelsey=2;I)、ifx==0y=l;elsey=2;

本題主要考查了if語句。

if語句的語法形式為:

if(表達式)語句1

else語句2

在C++中,if語句中沒有then,語句最后必須有一個分號,因此選項A正確,選項B和選項C錯誤;在選項D中,表達式x==0應該

用圓括號括起來,因此選項D錯誤。故本題答案為A。

14.將運算符”+〃重載為非成員函數(shù),下列原型聲明中,錯誤的是___.

A^MyClockoperator+(MyClock,long):B、MyClockoperator+(MyClock,MyClock);

C、MyClockoperator+(long,long);D、MyClockoperator+(long,MyClock);

本題主要考杳了運算符的重載。

運算符的重載是針對新類型數(shù)據(jù)的實際需要,對原有運算符進行適當?shù)母脑?。一般來講,重載的功能應當與原有功能類似,

不能改變原運算符的操作對象個數(shù),同時至少要有一個操作對象是自定義類型。選項A、選項B和選項D的兩個參數(shù)中至少有一個參

數(shù)是自定義類型,因此選項A、選項B和選項D正確。選項C中兩個參數(shù)都是基本數(shù)據(jù)類型,沒有自定義類型,因此選項C錯誤。

故本題答案是C。

15.要定義整型數(shù)組x,使之包括初值為0的三個元素,下列語句中錯誤的是.

A>intx[3]={0,0,0};intx[]={0);C、staticintx[3]={0};D、intx[]={0,0,0);

本題主要考查了一維數(shù)組的定義與初始化。

一維數(shù)組的定義形式為:

數(shù)據(jù)類型數(shù)組名[數(shù)組元素個數(shù)];

數(shù)組的初始化就是在聲明數(shù)組時給部分或全部元素賦初值。選項A定義了有?:個元素的整型數(shù)組x,并初始化三個元素的值為0,

因此選項A正確;當聲明數(shù)組時沒有給出數(shù)組元素個數(shù),但是有初始化列表,數(shù)組元素個數(shù)由列表中元素個數(shù)來確定,因此選項D

正確;選項B沒有給出數(shù)組元素個數(shù),并且在初始化列表中只給一個元素值,因此選項B定義了只有一個元素的整型數(shù)組,故選項B

錯誤;對于數(shù)值類型數(shù)組,如果給定的數(shù)值不夠,則沒有指定數(shù)值的元素將初始化為0,因此選項C正確。故本題答案為B。

16.卜.列控制格式輸入輸出的操作符中,能夠設置浮點數(shù)精度的是。

A、setprecisionB、setwC、setfillD、showpoint

本題主要考杳了輸出流的格式控制。

setprecision(intn)用于控制輸出流顯示浮點數(shù)的精度,整數(shù)n代表顯示的浮點數(shù)數(shù)字的個數(shù)。因此選項A正確。

setw(intn)用于預設輸入輸出寬度。

setfill(charc)用于預設填充字符。

showpoint用于給浮點數(shù)顯示小數(shù)點和尾部的0。

因此選項B、選項C和選項D不正確。故本題答案為A。

17.若MyTemp是一個只有一個虛擬類型參數(shù)的類模板,且有如下語句序列

MyTemp<double>p2;

MyTemp<long>p3[2];

編譯系統(tǒng)在處理上面的語句序列時,所生成的模板MyTemp的實例的個數(shù)是。

A、1B、2C、3D、0

本題主要考核類模板。

類模板聲明的語法形式為:

template〈模板參數(shù)表>

class類名

{類成員聲明}

使用類模板來建立對象時,應按如下形式聲明:

類名<模板實參表》對象名1,…,對象名n;

在定義對象的過程中,編譯系統(tǒng)會自動地根據(jù)需要生成相應的類定義,這種依據(jù)類模板生成類定義的過程稱為類模板的實例

化。類模板實例化所生成的每一個類定義就是相應類模板的一個實例,因此類模板的實例個數(shù)由類型參數(shù)的種類決定。本題使用

類模板MyTemp定義對象時指定了兩種類型參數(shù):double和long,因此所生成的實例個數(shù)是2。故本題答案為B。

18.下列代碼段聲明了3個類

classPerson}};

classStudent:publicPerson{};

classUndergraduate:Student{};

下列關于這些類之間關系的描述中,錯誤的是.。

A、類Person是類Undergraduate的基類B、類Undergraduate從類Student公有繼承

C^類Student是類Person的派生類D^類Undergraduate是類Person的派生類

本題主要考杳了類的繼承與派生。

在C++中,定義派生類的一般語法形式為:

class派生類名:繼承方式基類名1,繼承方式基類名2,…,繼承方式基類名n

{

派生類成員聲明;

);

類的繼承方式有三種:公有(public)繼承、保護(protected)繼承和私有(private)繼承。如果不顯式地給出繼承方式,

缺省的類繼承方式是私有(private)繼承。在聲明派生類Undergraduate時缺省繼承方式,因此類Undergraduate從類Student私

有繼承,故選項B錯誤。故本題答案為瓦

19.將前綴運算符〃一〃重載為非成員函數(shù),下列原型中,能正確用于類中說明的是。

A^Decr&,operator一(int);B、Deeroperator一(Decr&,int);

C、friendDecr&operator一(Decr&);D、friendDeeroperator―(Decr&,int);

本題主要考杳了運算符的重載。

運算符一既可以是前綴運算符(前減1),又可以是后綴運算符(后減1)。為了區(qū)分這兩種情況,重載這兩個運算符時必須

在格式上有所區(qū)別:重載后綴一時必須多一個虛擬參數(shù):ini。如果將前綴一和后綴一作為非成員函數(shù)重裁,那個唯一的操作數(shù)必

須作為第一參數(shù)提供。又因為要修改第一操作數(shù),對應的參數(shù)必須聲明為引用。

前綴一作為非成員函數(shù)重載的一般形式為:

friendDecr&operator—(Decr&);

后綴一作為非成員函數(shù)重裁的一般形式為:

friendDeeroperator一(Decr&,int);

當運算符重載為類的成員函數(shù)時,函數(shù)的參數(shù)個數(shù)比原來的參數(shù)個數(shù)少一個°

前綴一作為成員函數(shù)重載的一般形式為:

Decr&operator--();

后綴一作為成員函數(shù)重載的一般形式為:

Deeroperator一(int);

因此選項C正確,選項D是后綴一作為非成員函數(shù)重載的形式。

故本題答案為C。

20.有如下程序:

ttinclude<iostream>

usingnamespacestd;

classBase{

public:

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

^BaseO{cout?valB;}

private:

intvalB;

};

classDerived:publicBase{

public:

Derived(intx=0,inty=0):Base(x),valD(y){cout?valD;}

-Derived(){cout<<valD;}

private:

intvalD;

};

intmain(){

Derivedobjl2(2,3);

return0;

)

運行時的輸出結果是O

A、2332B、2323C、3232D、3223

本題主要考杳了派生類的構造函數(shù)與析構函數(shù)。

構造函數(shù)在對象被創(chuàng)建的時候由系統(tǒng)自動調用,建立派生類對象時,構造函數(shù)的執(zhí)行順序如下:(1)執(zhí)行基類的構造函數(shù),

調用順序按照各個基類被繼承時聲明的順序(自左向右);(2)執(zhí)行成員對象的構造函數(shù),調用順序按照各個成員對象在類中聲

明的順序(自上而下);(3)執(zhí)行派生類的構造函數(shù)。

析構函數(shù)用來完成對象被刪除前的一些清理工作,在對象的生存期即將結束的時刻被系統(tǒng)自動調用。派生類的析構函數(shù)在執(zhí)

行過程中也要對基類和成員對象進行操作,但它的執(zhí)行過程與構造函數(shù)嚴格相反,即:(1)對派生類新增普通成員進行清理。(2)

調用成員對象析構函數(shù),對派生類新增的成員對象進行清理。(3)調用基類析構函數(shù),對基類進行清理。

main。函數(shù)中,第一條語句Derivedobjl2(2,3);創(chuàng)建派生類對象objl2時,先以第一個實參2初始化基類Base成員valB,執(zhí)行

基類Base的構造函數(shù),輸出valB的值2;然后以第二個實參值3初始化派生類Derived成員valD,執(zhí)行派生類Derived的構造函數(shù),

輸出valD的值3:在對象objl2的生存期即將結束時,先調用派生類Derived的析構函數(shù),輸出valD的值3,然后調用基類析構函數(shù),

輸出valB的值2。因此本程序運行時的輸出結果是2332。故本題答案為A。

21.有如下程序

#include<iostream>

usingnamespacestd;

classA{

public:

A(inti=0):rl(i){}

voidprint(){cout?*E*<<rl<<,;)

voidprint()const{cout?,C"?rl*rl?,;}

voidprint(intx){cout<<'P'?rl*rl*rl?"->;}

private:

intrl;

};

intmain(){

Aal;

constAa2(4);

al.print(2);

a2.print();

return0;

)

運行時的輸出結果是______。

A、P8-E4B,P8-C16-C、P0-E4-D、P0-C16-

本題主要考杳了函數(shù)的重載、常對象和常成員函數(shù)。

使用const關鍵字修飾的對象稱為常對象,使用const關鍵字說明的成員函數(shù)稱為常成員函數(shù),通過常對象只能調用它的常成

員函數(shù),而不能調用其他成員函數(shù)。兩個以上的函數(shù),具有相同的函數(shù)名,但是形參的個數(shù)或類型不同,編譯器根據(jù)實參和形參

的類型及個數(shù)的最佳匹配,自動確定調用哪一個函數(shù),這就是函數(shù)的重載。const關鍵字可以用于對重載函數(shù)的區(qū)分。

在main。函數(shù)中,第一條語句定義類A的對象al,系統(tǒng)自動調用類A的構造函數(shù),以默認形參值0初始化對象al的數(shù)據(jù)成員rl;

第二條語句定義常對象a2,系統(tǒng)自動調用類A的構造函數(shù),以實參值4初始化對象a2的數(shù)據(jù)成員rl;第三條語句通過對象al調用帶

一個整型形參的沒用const修飾的print。函數(shù),表達式rl*rl*rl=0*0*0=0,因此輸出P0-,第四條語句常對象a2調用的是用const

修飾的常成員函數(shù)print。,表達式rl*rl的值為:4*4=16,因此輸出C16-。故程序運行時的輸出結果是P0-C16-故本

題答案為D。

22.若MyClass是一個類名,且有如下語句序列

MyClasscl,*c2;

MyClass*c3=newMyClass;

MyClass&c4=cl;

上面的語句序列所定義的類對象的個數(shù)是一?

A、1B、2C、3D、4

本題主要考查了對象的定義。

第1條語句定義了MyClass類的對象cl和MyClass類的對象指針變量c2。因為定義對象指針只是得到了用于存儲對象地址的指針

變量,不會創(chuàng)建對象,因此第1條語句只定義了個類對象cl;第2條語句定義了對象指針變量c3。并初始化c3指向用new運算符動

態(tài)創(chuàng)建的對象,因此第2條語句用new運算符動態(tài)定義了一個對象;第3條語句聲明了對象引用c4,并將其初始化為對象cl的一個別

名。因為創(chuàng)建對象引用只是為已有對象創(chuàng)建別名,不會創(chuàng)建對象,因此第3條語句沒有創(chuàng)建類對象。因此這3條語句所定義的類對

象的個數(shù)是2。

故本題答案為B。

23.下列關于類模板的描述中,錯誤的是o

A、類模板的成員函數(shù)都是模板函數(shù)B、可以為類模板參數(shù)設置默認值

C、類模板描述了一組類D、類模板中只允許有一個類型參數(shù)

本題主要考查了類模板。

使用類模板可以為類聲明一種模式,使得類中的某些數(shù)據(jù)成員、某些成員函數(shù)的參數(shù)、某些成員函數(shù)的返回值能取任意類型。

因此選項C正確:類模板聲明的語法形式為:

templateC模板參數(shù)表〉

class類名

{類成員聲明}

其中"模板參數(shù)表”由用逗號分隔的若干類型標識符或常量表達式構成,因此選項D錯誤;可以為類模板中的類型參數(shù)和非類型

參數(shù)提供默認值,如果某個類模板參數(shù)有默認值,該列表中的所有后續(xù)參數(shù)也都必須指定默認值。因此選項B正確。類模板的成員

函數(shù)都是模板函數(shù),因此選項A正確。故本題答案為D。

24.有如下程序

^include<iostream>

usingnamespacestd;

classTest{

public:

TestO{}

Test(constTest&t){cout<<l;}

);

Testfun(Test&u){Testt=u;returnt;}

intmain(){Testx,y;x=fun(y);return0;}

運行這個程序的輸出結果是。

A、無輸出B、1C、11D、111

本題主要考杳了拷貝構造函數(shù)。

拷貝構造函數(shù)是一種特殊的構造函數(shù),具有一般構造函數(shù)的所有特性,其形參是本類的對象的引用。作用是使用一個已知的

對象初始化一個正在創(chuàng)建的同類對象。拷貝構造函數(shù)在以F三種情況卜一都會被調用:

1)當用類的一個對象初始化該類的另一個對象時;

2)如果函數(shù)的形參是類的對象,調用函數(shù)時,進行形參和實參結合時;

3)如果函數(shù)的返回值是類的對象,函數(shù)執(zhí)行完成返回調用者時。

函數(shù)fun的形參為類Test的對象的引用,main。函數(shù)中,第二條語句x=fun(y);調用函數(shù)fun。。使引用u為實參y的別名,然后

執(zhí)行函數(shù)fun()的第一條語句Testt=u;,即用Test類的對象u去初始化該類的另一個對象t,系統(tǒng)將自動調用拷貝構造函數(shù),輸出1,

然后執(zhí)行函數(shù)fun。的第二條語句returnt;,函數(shù)「unO的返回值為Test類的對象t,函數(shù)執(zhí)行完成返回調用者時,系統(tǒng)將第二次

自動調用拷貝構造函數(shù),輸出1,程序執(zhí)行結束。故運行這個程序的輸出結果是11。故木題答案為C。

25.要定義?個引用變量p,使用引用類MyClass的?個對象,正確的定義語句是。

A、MyClassp=MyClass;B、MyClassp=newMyClass;

C>MyClass&p=newMyClass;D、MyClassa,&p=a;

本題主要考查了引用的聲明。

引用的聲明形式:類型標識符&引用名=目標變量名;

說明:

(1)&在此不是求地址運算,而是起標識作用。

(2)類型標識符是指目標變量的類型。

(3)聲明引用時,必須同時對其進行初始化。

(5)聲明一個引用,不是新定義了一個變量,它只表示該引用名是目標變量名的一個別名,它本身不是一種數(shù)據(jù)類型,因此

引用本身不占存儲單元,系統(tǒng)也不給引用分配存儲單元。

選項A和選項B在變量p的左邊沒有標識&,不符合引用聲明形式,因此選項A和選項B錯誤:選項C中,賦值號右邊不是已存在的

變量名,不符合引用聲明的語法形式,因此選項C錯誤;選項D先聲名對象a,然后聲明引用為已聲明變量名a的別名,符合引用聲

明形式,因此選項D正確。故本題答案為D。

26.下列關于函數(shù)的描述中,錯誤的是。

A、函數(shù)可以沒有返回值B、函數(shù)可以沒有參數(shù)C、函數(shù)可以是一個類的成員

D、函數(shù)不能被定義為模板

本題主要考查了函數(shù)。

函數(shù)定義的語法形式:

類型標識符函數(shù)名(形式參數(shù)列表)

語句序列

}

無返回值的函數(shù)其類型標識符為void。故選項A正確:函數(shù)可以沒有參數(shù),當函數(shù)定義時沒有形參,則函數(shù)調用時,<實參表)

亦為空,故選項B正確;函數(shù)可以是類的成員,故選項C正確;模板是C++支持參數(shù)化多態(tài)性的工具,函數(shù)模板實現(xiàn)了類型參數(shù)化,

將函數(shù)處理的數(shù)據(jù)類型作為參數(shù),提高了代碼的可重用性,故選項D錯誤。故本題答案為及

27.下列程序段中包含4個函數(shù),其中具有隱含this指針的是。

intfunl();

classTest{

public:

intfun2();

friendintfun3();

staticintfun4();

);

A、funlB、fun2C、fun3D、fun4

本題主要考查了this指針。

this指針是一個隱含于每一個非靜態(tài)成員函數(shù)中的特殊指針。它是一個指向正在被該成員函數(shù)操作的對象,也就是要操作該

成員函數(shù)的對象。因此類Test的非靜態(tài)成員函數(shù)fun2中具有隱含this指針,故選項B正確。函數(shù)funl和函數(shù)fun3均不是成員函數(shù),

因此不具有隱含this指針,故選項A和選項C不正確;靜態(tài)成員不屬于類的任何一個對象,而是屬于整個類,因此靜態(tài)成員沒有this

指針,故靜態(tài)成員函數(shù)fun4中沒有this指針,故選項D錯誤。故木題答案為B。

28.下面是類Shape的定義:

classShape{

public:

virtualvoidDraw()=0;

);

下列關于Shape類的描述中,正確的是.o

A、類Shape是虛基類B、類Shape是抽象類

C、類Shape中的Draw函數(shù)聲明有誤I)、語句"Shapes能夠建立Shape的■個對象s

本題主要考杳了純虛函數(shù)和抽象類。

聲明純虛函數(shù)的語法形式為:

virtual函數(shù)類型函數(shù)名(參數(shù)表)=0;

所以函數(shù)Draw。是純虛函數(shù)。帶有純虛函數(shù)的類是抽象類,所以類Shape是抽象類,因此選項B正確;抽象類不能實例化,即

不能定義一個抽象類的對象,因此選項D錯誤。故本題答案是B。

29.關于函數(shù)中的〈返回類型》,下列表述中錯誤的是___.

A、(返回類型》中有可能包含關鍵字intB、〈返回類型》中有可能包含自定義標識符

C、〈返回類型》中有可能包含字符*I)、<返回類型>中有可能包含口

本題主要考杳了函數(shù)的返回類型。

函數(shù)的定義形式為:

返回類型函數(shù)名(形參列表){函數(shù)體}

返回類型又稱函數(shù)類型,表示一個函數(shù)所計算(或運行)的結果值的類型。因為函數(shù)的結果值可以為整型,因此返回類型可

能包含關鍵字ini,選項A正確;函數(shù)的返回類型可以為類,因此返回類型可能包含自定義標識符,選項B正確;函數(shù)的返回類型可

以為指針,因此返回類型可能包含字符*,選項C正確;但返回類型不能為數(shù)組,因此返回類型中不可能包含口,因此選項D錯誤。

故本題答案為D。

30.打開文件時可單獨或組合使用下列文件打開模式

?ios_base::app?ios_base::binary

@ios_base::in@ios_base::out

若要以二進制讀方式打開一個文件,需使用的文件打開模式為o

A、①③B、①④C、②③D、②④

本題主要考查了I/O流。

打開一個與輸出流關聯(lián)的文件時,通常要指定文件模式。ios_base::app模式的功能:以寫方式打開文件,若文件不存在則創(chuàng)

建文件,若文件已存在則向文件尾添加數(shù)據(jù);ios_base::binary模式:以二進制模式打開文件(缺省為文本模式);ios_base::in

模式:以讀方式打開文件;iosbase::out模式:以寫方式打開文件,若文件不存在則創(chuàng)建,若文件已存在則清空原內容(ofstream

默認的打開方式)。因此若要以二進制讀方式打開一個文件,需使用的文件打開模式為:ios_base::binary|iosbase::in。

故本題答案為C。

31.下列關于繼承方式的描述中,錯誤的是。

A、如果不顯式地指定繼承方式,缺省的繼承方式是私有(private)

B、采用公有繼承方式時,基類中的公有成員在派生類中仍然是公有成員

C、采用保護繼承方式時,基類中的保護成員在派生類中仍然是保護成員

D、采用私有繼承方式時,基類中的私有成員在派生類中仍然是私有成員

本題主要考查了類的繼承與派生。

類的繼承方式有三種:公有(public)繼承、保護(protected)繼承和私有(private)繼承。如果不顯式地給出繼承方式,

缺省的類繼承方式是私有(private)繼承。因此選項A正確;當派生類從基類公有繼承時,基類的公有成員和保護成員的訪問屬

性在派生類中不變,仍作為派生類的公有成員和保護成員,因此選項B正確;當派生類從基類保護繼承時,基類的公有成員和保護

成員在派生類中都為保護成員,因此選項C正確;當派生類從基類私有繼承時,基類的公有成員和保護成員在派生類中都改變?yōu)樗?/p>

有成員;無論哪種繼承方式,派生類中的成員都不能訪問基類中的私有成員,因此選項D錯誤。

故本題答案為D。

32.下列關于運算符重載的描述中,錯誤的是。

A、可以通過運算符重載在C++中創(chuàng)建新的運算符B、賦值運算符只能重我為成員函數(shù)

C、運算符函數(shù)重載為類的成員函數(shù)時,第一操作數(shù)是該類對象

D、重載類型轉換運算符時不需要聲明返回類型

本題主要考杳了運算符重載。

”運算符重載”是針對C++中原有運算符進行的,不可能通過重載創(chuàng)造出新的運算符,因此選項A錯誤;在C++中,運算符的重載

方式有兩種:(1)重載為成員函數(shù);(2)重載為友元函數(shù)。以及所有的類型轉換運算符只能重載為成員

函數(shù),因此選項B正確;運算符重載為成員函數(shù)時,第一操作數(shù)就是對象本身,并不顯式地出現(xiàn)在參數(shù)表中,因此選項C正確:重

載類型轉換運算符的格式為:operator類型名(),其中"類型名”就代表了返回類型,因此重載類型轉換運算符時不需要聲明返回

類型,因此選項D正確。

故本題答案為A。

33.有以下程序:

4include<iostream>

usingnamespacestd;

classB{

public:

B(intxx):x(xx){++count;x+=10;}

virtualvoidshow()const

{cout?count?,?x?endl;}

protected:

staticintcount;

private:

intx;

);

classD:publicB{

public:

D(intxx,intyy):B(xx),y(yy){++count;y+=100;}

virtualvoidshow()const

{cout?count<<,J<<y<<endl;}

private:

inty;

};

intB::count=0;

intmain(){

B*ptr=newD(10,20);

ptr->show();

deleteptr;

return0;

運行時的輸出結果是o

A、l_120B、2」20C、l_20D、2_20

本題主要考查了派生類的構造函數(shù)、靜態(tài)成員函數(shù)以及虛函數(shù)。

建立派生類對象時,構造函數(shù)的執(zhí)行順序如下:(1)執(zhí)行基類的構造函數(shù),調用順序按照各個基類被繼承時聲明的順序(自

左向右):(2)執(zhí)行成員對象的構造函數(shù),調用順序按照各個成員對象在類中聲明的順序(自匕而下);(3)執(zhí)行派生類的構

造函數(shù)。

用static關鍵字聲明的數(shù)據(jù)成員為靜態(tài)數(shù)據(jù)成員,靜態(tài)成員在每個類只有一個拷貝,由該類的所有對象共同維護和使用。

在成員函數(shù)聲明的前面加上virtual修飾,即把該函數(shù)聲明為虛函數(shù)。在C++中,一個基類指針(或引用)可以用于指向它的

派生類對象,而且通過這樣的指針(或引用)調用虛函數(shù)時,被調用的是該指針(或引用)實際所指向的對象類的那個重定義版

本。

本題中,函數(shù)show在基類B和派生類D中都聲明為虛函數(shù)。在基類B中把保護成員定義為靜態(tài)成員count,派生類D以公有繼承方

式從基類B繼承了保護成員count。它被基類B和派生類D的所有對象所共享,但它不屬于類的任何一個對象。在main。函數(shù)中,第

一條語句通過new運算符創(chuàng)建派生類D的對象,并把對象的首地址賦給基類指針即基類指針ptr指向派生類對象。在創(chuàng)建派生

類對象時,先執(zhí)行基類B的構造函數(shù),counl的值為1,然后執(zhí)行派生類D的構造函數(shù),count的值為2,y的值為120;main。函數(shù)的

第二條語句通過基類指針ptr調用虛函數(shù)show。,被調用的是該指針實際所指向的派生類對象類的重定義版本,即輸出2120。

故本題答案為B。

34.下列敘述中,錯誤的是___。

A、false是一個邏輯型常量B、"b"是一個字符型常量

C、365是一個int常量D、3.1415926是一個double常量

本題主要考杳了常量。

在C++中,邏輯型常量有兩個:false(假)和true(真),因此選項A正確;字符型常量是單引號括起來的一個字符,字符串

常量是雙引號括起來的字符序列,因此"b"是字符串,不是字符,故選項B錯誤;整型常量默認為int型,因此選項C正確;實型常

量默認為double型,因此選項D正確。

故本題答案為B

35.在下列字符中,不允許作為C++標識符的是___。

A、bB、BC、D、2

本題主要考查了C++中的標識符命名規(guī)則。

標識符的組成要符合?定的規(guī)則:

(1)標識符是一個以字母或下劃線開頭的,由字母、數(shù)字、下劃線組成的字符串;

(2)標識符不能與任意一個關鍵字同名;

(3)標識符中的字母區(qū)分大小寫;

(4)標識符不宜過長。

在選項D中,標識符的第一個字符是數(shù)字,因此不是合法的標識符,不允許作為C++標識符。

故本題答案為D。

36.軟件是、數(shù)據(jù)和文檔的集合。

標準答案為:程序考生答案為:函數(shù)

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

37.有一個學生選課的關系,其中學生的關系模式為:學生(學號,姓名,班級,年齡),課程的關系模式為:課程(課號,課

程名,學時),其中兩個關系模式的鍵分別是學號和課號,則關系模式選課可定義為:選課(學號,,成績)。

標準答案為:課號考生答案為:課號

碼也稱為關鍵字,是表中若干屬性的屬性組,其值惟一標識表中的一個元組。在關系模式選課中能惟一標識一個元組的是學號,

課號。

38.設某循環(huán)隊列的容量為50,如果頭指針front=45(指向隊頭元素的前一位置),尾指針rear=10(指向隊尾元素),則該循環(huán)

隊列中共有個元素。

標準答案為:15或十五或15考生答案為:35

在循環(huán)隊列中,用隊尾指針rear指向隊列中的隊尾元素,用排頭指針front指向排頭元素的前一個位置,因此,從排頭指針front

指向的后一個位置直至隊尾指針rear指向的位置之間所有的元素均為隊列中的元素。本題中隊列的容量為50,頭指針為45,那么

從頭指針到50之間有46、47、48、49、50,共5個元素,尾指針為10,那么從1到10之間有10個元素,所以共有15個元素。

39.設二叉樹如下:

對該二叉樹進行后序遍歷的結果為_____.

標準答案為:EDBGHFCA或E、D、B、G、H、F、C、A或E,D,B,G,H,F,C,A或E,D,B,G,H,F,C,A

考生答案為:EDGHFCA

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

在遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結點。

40.一個隊列的初始狀態(tài)為空?,F(xiàn)將元素人1,&口,£百,5,4,3,2,1依次入隊,然后再依次退隊,則元素退隊的順序為。

標準答案為:A,B,C,D,E,F,5,4,3,2,1或A,B,C,D,E,F,5,4,3,2,1或A、B、C、D、E、F、5、4、3、2、

1或ABCDEF54321或A,B,C,D,E,F,5,4,3,2,1或A,B,C,D,E,F,5,4,3,2,1或A,B,C,D,E,F,5,4,3,

2,1或A,B,C,D,E,F,5,4,3,2,1

考生答案為:A,B,C,D,E,F,5,4,3,2,1

隊列是指允許在?端進行插入、而在另?端進行刪除的線性表。允許插入的?端稱為隊尾,允許刪除的?端稱為隊頭。在隊列這

種數(shù)據(jù)結構中,最先插入的元素將最先能夠被刪除,反之,最后插入的元素將最后才能被刪除。因此,隊列又稱為〃先進先出”或〃

后進后出〃的線性表。

41.若x和y是兩個整型變量,在執(zhí)行了語句序列

x=5;y=6;y+=x一;

后,x+y的值為o

標準答案為:15或15考生答案為:15

本題主要考查了后置減1運算符。

后置減1運算符是先使用變量,然后變量再自減。因此語句y+=x一;的功能相當于y=y+x;x=xT;兩條語句,因此執(zhí)行語句序列

x=5;y=6;y+=x-;后x的值為4,y的值為11,故x+y的值為15。

42.有如卜?的函數(shù)定義:

intXfun(intx){

inty=x;

{intx=10;y+=x;)

returnx+y;

)

通過表達式Xfun⑸調用該函數(shù),則得到的返回值為o

標準答案為:20或20考生答案為:20

本題主要考杳了標識符的作用域與可見性。

作用域是一個標識符在程序正文中有效的區(qū)域。程序運行到某一點,能夠引用到的標識符,就是該處可見的標識符,如果在

兩個或多個具有包含關系的作用域中聲明了同名標識符,則外層標識符在內層不可見。函數(shù)調用表達式Xfun⑸把實參5傳遞給函

數(shù)Xfun的形式參數(shù)x,形參x的作用域為整個函數(shù)體。Xfun函數(shù)體的第一條語句定義變量y并初始化y的值為5,第二個復合語句中的

第一條語句定義同名變量x,并初始化x的值為10,在復合語句中外層變量x不可見,因此執(zhí)行復合語句的第二條語句y+=x;后y的值

為15,內層變量x的作用域結束。然后執(zhí)行語句returnx+y;得到函數(shù)的返回值5+15=20。

43.卜.面的函數(shù)定義是某函數(shù)模板能夠生成的函數(shù)實例

intsquare(intn)(returnn*n;}

doublesquare(doublen){returnn*n;}

由此可知,該函數(shù)模板的定義是一O

標準答案為:templateVtypenameT>Tsquare(Tn){returnn*n;}或template<classT>Tsquare(Tn){return

n*n;}

考生答案為:template<typenameT>Tsquare(Tn){returnn*n;}

本題主要考查了函數(shù)模板。

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

類型本身成了它的參數(shù),因而是一種參數(shù)化類型的函數(shù)。聲明一個函數(shù)模板的格式是:

template〈模板形參表聲明)

函數(shù)聲明

其中的模板形參表聲明是由一個或多個模板形參組成(如果是多個,需要用逗號隔開)。每個模板形參具有下面幾種形式:

(1)typename參數(shù)名(2)class參數(shù)名(3)類型修飾參數(shù)名

這里的參數(shù)名可以是任意的標識符。在這三種形式中,前兩種是等價的:在聲明模板參數(shù)時,關鍵字typename與class可以互

換。

因此該題函數(shù)模板定義是template<typenameT>Tsquare(Tn){returnn*n;}或template<classT>Tsquare(Tn){return

n*n;}o

44.在執(zhí)行語句序列

inti=0;doi++;while(i*i<10);

時,do后面的循環(huán)體語句i++被執(zhí)行的次數(shù)為o

標準答案為:4或4或四考生答案為:4

本題主要考查了do-while循環(huán)語句。

第一次執(zhí)行循環(huán)體后i的值為1,i*i<10成立,繼續(xù)執(zhí)行循環(huán)體,第二次執(zhí)行循環(huán)體后i的值為2,i*i〈10成立,繼續(xù)執(zhí)行循環(huán)

體,第三次執(zhí)行循環(huán)體后i的值為3,i*i<10成立,繼續(xù)執(zhí)行循環(huán)體,第四次執(zhí)行循環(huán)體后i的值為4,i*i<10不成立,結束循環(huán)。

故循環(huán)語句被執(zhí)行次數(shù)為4。

45.假設Xcs是一個類,該類中一個成員函數(shù)的原型為"Xcs*abc();”,則在類外定義時對應的函數(shù)頭為。

標準答案為:Xcs*Xcs::abc()考生答案為:Xcs*Xcs::abc()

本題主要考杳了成員函數(shù)的類外定義。

在類外定義成員函數(shù)的語法形式為:

返回值類型類名::成員函數(shù)名(參數(shù)表)

{

函數(shù)體

)

因此在類Xcs之外定義原型為"Xcs*abc();"的成員函數(shù)對應的函數(shù)頭為Xcs*Xcs::abc()。

46.請將下面的程序補充完整,使得程序輸出”飄是張娜的書”。

4include<iostream>

usingnamespacestd;

classBook{

public:

Book(char*str){strcpy(title,str);}

voidPrintlnfoO{cout?title?endl;}

protected:

chartitle[50];

);

classMyBook:publicBook{

public:

MyBook(char*sl,char*s2="張娜〃):

{strcpy(owner,s2);}

virtualvoidPrintlnfoO{cout?title<〈"是"<<owner<〈”的書,<<endl;}

private:

charowner[10];

);

intmainO{

Book*ptr=newMyBook(〃飄〃);

ptr->Print!nfo();

return0;

}

標準答案為:virtualBook(si)考生答案為:virtual與Book(str)

本題主要考查了構造函數(shù)、虛函數(shù)。

在成員函數(shù)聲明的前面加上virtual修飾,即把該函數(shù)聲明為虛函數(shù)。在派生類中可以重新定義從基類繼承卜來的虛函數(shù),從

而提供該函數(shù)的適用于派生類的專門版本。本題在派生類MyBook中重定義了虛函數(shù)Printinfo,因此第1個空應填virtual。

派生類的構造函數(shù)必須要以合適的初值作為參數(shù),隱含調用基類和新增成員對象的構造函數(shù),用以初始化它們各自的數(shù)據(jù)成

員,然后再對新增的其他數(shù)據(jù)成員進行初始化。派生類構造函數(shù)的一般格式如下:

〈派生類名〉::<派生類名>(<總參數(shù)表》):〈基類名1》(參數(shù)表1),……

〈基類名n>(〈參數(shù)表n>),

〈成員對象名1》(〈參數(shù)表n+l>),……,

〈成員對象名(〈參數(shù)表n+m>){〈派生類構造函數(shù)體>}

因此第二個空應填Book(si),調用基類的構造函數(shù)以初始化其數(shù)據(jù)成員。

47.有如下的函數(shù)定義:

intXfun(int*a,intn){

intx=*a;

for(int*pa=a+l;pa<a+n;pa++)

if(*pa>x)x=*pa;

returnx;

)

若在執(zhí)行了語句

intx[5>{23,46,78,55,16);

后,通過表達式Xfun(x,5)調用該函數(shù),則得到的返回值為。

標準答案為:78或78考生答案為:

本題主要考杳了數(shù)組、指針和求最大值算法。

函數(shù)Xfun的功能是求首地址為a的n個數(shù)據(jù)的最大數(shù),并把所求的最大數(shù)作為函數(shù)的返回值。函數(shù)調用表達式Xfun(x,5)把數(shù)組

x的首地址傳遞給函數(shù)Xfun的第一個形式參數(shù)指針變量a,常數(shù)5傳遞給函數(shù)Xfun的第二個形式參數(shù)n,因此函數(shù)調用表達式Xfun(x,5)

的返回值是數(shù)組x的5個元素的最大數(shù)78。

48.請將下面的類Date的定義補充完整,使得由語句

DateFirstDay;

定義的對象FirslDay的值為2010年1月1日。

classDate{

public:

Date():year(y),month(m),day(d){}

private:

intyear,month,day;〃依次表示年、月、H

);

標準答案為:inty=2010,intm=l,intd=l考生答案為:inty,intm,intd

本題主要考杳了構造函數(shù)。

構造函數(shù)的作用是在對象被創(chuàng)建時利用特定的值構造對象,將對象初始化為一種特定的狀態(tài),無參數(shù)的構造函數(shù)稱為默認形

式的構造函數(shù),如果類中定義構造函數(shù),編譯系統(tǒng)將不會再為其生成默認構造函數(shù)。構造函數(shù)在對象被創(chuàng)建的時候由系統(tǒng)自動調

用。類Date中定義了一個構造函數(shù),由類Date的構造函數(shù)的初始化列表可知構造函數(shù)的形參應是三個整型變量y,m和d,編譯系統(tǒng)

將不會為類Dale建立無參數(shù)的默認構造函數(shù)。建立類Date的對象FirslDay時沒有給出初始值,若要正確調用有形參的構造函數(shù),

使對象FirstDay的值為2010年1月1日,則構造函數(shù)應是帶默認形參值,且默認形參值為2010、1和1。故該題應填inty=2010,int

m=l,intd=lo

49.在有理數(shù)類Rational中重載插入運算符以便按a/q形式輸出。請將"運算符函數(shù)的定義補充完整。

classRational(

public:

Rational(intaa,intqq):a(aa),q(qq){}

friendoperator<<(ostream&.out,Rational&x)

(

return(out<<x.a<<*/*?x.q);

)

private:

inta,q;

);

標準答案為:ostream&考生答案為:ostream&

本題主要考杳了插入運算符的重載。

插入運算符只能重載為非類成員函數(shù),一般重載為友元函數(shù)。聲明重載插入運算符為友元函數(shù)的函數(shù)原型為:

friendostream&,operator?(ostream&,類名);

因此該題應填ostream&。

2009年9月考試真題(第30次)

1.下列數(shù)據(jù)結構中,屬于非線性結構的是___。

A、循環(huán)隊列B、帶鏈隊列C、二叉樹D、帶鏈棧

2.對于循環(huán)隊列,下列敘述中正確的是___。

A、隊頭指針是固定不變的B、隊頭指針一定大于隊尾指針

C、隊頭指針一定小于隊尾指針I(yè))、隊頭指針可以大于隊尾指針,也可以小于隊尾指針

3.數(shù)據(jù)庫管理系統(tǒng)是。

A、操作系統(tǒng)的--部分B、在操作系統(tǒng)支持下的系統(tǒng)軟件C、一種編譯系統(tǒng)D、?種操作系統(tǒng)

4.下列選項中不屬于結構化程序設計原則的是。

A、可封裝B、自頂向下C、模塊化D、逐步求精

5.有三個關系R,S和T如下:

A、選擇B、投影C、交I)、并

6.在E-R圖中,用來表示實體聯(lián)系的圖形是。

A、橢圓形B、矩形C、菱形D、三角形

7.算法的空間復雜度是指.

A、算法在執(zhí)行過程中所需要的計算機存儲空間B、算法所處理的數(shù)據(jù)量

C、算法程序中的語句或指令條數(shù)D、算法在執(zhí)行過程中所需要的臨時工作單元數(shù)

8.軟件詳細設計產(chǎn)生的圖如下:

該圖是。

A、N-S圖B、PAD圖C、程序流程圖D、E-R圖

9.軟件設計中劃分模塊的一個準則是。

A、低內聚低耦合B、高內聚低耦合C、低內聚高耦合D高內聚高耦合

10.下列數(shù)據(jù)結構中,能夠按照“先進后出〃原則存取數(shù)據(jù)的是___。

A、循環(huán)隊列B、棧C、隊列D、二叉樹

11.有如下程序:

#include<iostream>

usingnamespacestd;

classA{

public:

A(inti):rl(i){}

voidprint(){cout?'E'}

voidprint()const{cout?*C*<<rl*rl?,;}

private:

intrl;

);

intmain(){

Aal(2);constAa2(4);

al.print();a2.print();

return0;

)

運行時的輸出結果是O

A、運行時出錯B、E2-C16-C、C4-C16-

溫馨提示

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

評論

0/150

提交評論