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

下載本文檔

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

文檔簡介

公共基礎知識及C++語言程序設計

(考試時間90分鐘,滿分100)分)

一、選擇題(⑴?(35)每小題2分,共70分)

下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在

答題卡相應位置上,答在試卷上不得分。

(1)下面敘述正確的是

A)算法的執(zhí)行效率與數(shù)據(jù)的存儲結構無關

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

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

D)以上三種描述都不對

(2)以下數(shù)據(jù)結構中不屬于線性數(shù)據(jù)結構的是

A)隊列B)線性表C)二叉樹D)棧

(3)在一棵二叉樹上第5層的結點數(shù)最多是

A)8B)I6C)32D)15

(4)下面描述中,符合結構化程序設計風格的是

A)使用順序、選擇和重復(循環(huán))三種基本控制結構表示程序的控制邏輯

B)模塊只有一個入口,可以有多個出口

C)注重提高程序的執(zhí)行效率

D)不使用goto語句

(5)下面概念中,不屬于面向對象方法的是

A)對象B)繼承。類D)過程調用

(6)在結構化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是

A)可行性分析B)需求分析C)詳細設計D)程序編碼

(7)在軟件開發(fā)中,下面任務不屬于設計階段的是

A)數(shù)據(jù)結構設計B)給出系統(tǒng)模塊結構

C)定義模塊算法D)定義需求并建立系統(tǒng)模型

(8)數(shù)據(jù)庫系統(tǒng)的核心是

A)數(shù)據(jù)模型C)軟件工具

B)數(shù)據(jù)庫管理系統(tǒng)D)數(shù)據(jù)庫

(9)下列敘述中正確的是

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

B)數(shù)據(jù)庫設計是指設計數(shù)據(jù)庫管理系統(tǒng)

C)數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)共享的問題

D)數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結構必須與邏輯結構一致

(10)下列模式中,能夠給出數(shù)據(jù)庫物理存儲結構與物理存取方法的是

A)內模式B)外模式C)概念模式D)邏輯模式

(11)關于面向對象的程序設計方法,下列說法正確的是

A)“封裝性”指的是將不同類型的相關數(shù)據(jù)組合在一起,作為一個整體進行處理

B)“多態(tài)性”指的是對象的狀態(tài)會根據(jù)運行時要求自動變化

C)基類的私有成員在派生類的對象中不可訪問,也不占內存空間

D)在面向對象的程序設計中,結構化程序設計方法仍有著重要作用

(12)判斷字符型變量ch是否為大寫英文字母,應使用表達式

A)ch>='A'&ch<=,Z'B)ch<='A'||ch>='Z'

C),A'<=ch<='Z,D)ch>='A,&&ch<='Z'

(13)已知下列語句中的x和y都是int型變量,其中錯誤的語句

A)x=y++;B)x=++y;C)(x+y)++;D)++x=y;

(14)執(zhí)行語句序列

intn;

cin?n;

switch(n)

{case1:

case2:cout?

case3:

case4:cout?'2';break;

default:cout?'3';

}

時,若鍵盤輸入I,則屏幕顯示

A)1B)2C)3D)12

(15)下列程序的輸出結果是

#include<iostream>

usingnamespacestd;

intmain()

(

chara[]="Hello,World";

char*ptr=a;

while(*ptr)

(

if(*ptr>='a'&&*ptr<='z')

cout?char(*ptr+'A'-'a');

elsecout?*ptr;

ptr++;

}

return0;

)

A)HELLO,WORLDB)Hello,World

C)hELLO,WORLDD)hello,world

(16)已知:intm=10;在下列定義引用的語句中,正確的是

A)int&x=m;B)inty=&m;

C)int&z;D)int&t=&m;

(17)下列函數(shù)原型聲明中錯誤的是

A)voidFun(intx=0,inty=0);

B)voidFun(intx,inty);

C)voidFun(intx,inty=0);

D)voidFun(intx=0,inty):

(18)已知程序中已經(jīng)定義了函數(shù)test,其原型是inttesKint,int,ini);,則下列重載形式中正確

的是

A)chartest(in(.int,int);

B)doubletest(Jouble);

C)inttesl(int,int,int=O);

D)floattest(int,int,float=);

(19)有以下程序

#include<iostream>

inti=0;

voidfun()

{{

staticinti=1;

std::couyi"v<';

)

std::cou(?i?',';

}

intmain()

|

fun();fun();

return0;

)

程序執(zhí)行后的輸出結果是

A)1,2,1,2,B)1,2,2,3,C)2,0,3,0,D)1,0,2,0,

(20)已知函數(shù)f的原型是:voidf(ini*a,long&b);變量vl、v2的定義是:inivl;longv2;,正

確的調用語句是

A)f(vl,&v2);B)f(vl,v2);

C)f(&vl,v2);D)f(&vl.&v2);

(21)有以下類定義

classMyClass

(

public:

MyClass(){cout?1;}

);

則執(zhí)行語句MyClassa,b[2],*p[2];后,程序的輸出結果是

A)llB)lllC)1I11

(22)關于友元,下列說法錯誤的是

A)如果類A是類B的友元,那么類B也是類A的友元

B)如果函數(shù)fun。被說明為類A的友元,那么在fun()中可以訪問類A的私有成員

C)友元關系不能被繼承

D)如果類A是類B的友元,那么類A的所有成員函數(shù)都是類B的友元

(23)關于動態(tài)存儲分配,二列說法正確的是

A)new和delete是C++語言中專門用于動態(tài)內存分配和釋放的函數(shù)

B)動態(tài)分配的內存空間也可以被初始化

C)當系統(tǒng)內存不夠時,會自動回收不再使用的內存單元,因此程序中不必用delete釋放內存

空間

D)當動態(tài)分配內存失敗時,系統(tǒng)會立刻崩潰,因此?定要慎用new

(24)有以下程序

#include<iostream>

usingnamespacestd;

classMyClass

(

public:

MyClass(intn){number=n;}

〃拷?貝構造函數(shù)

~MyClass(){}

private:

intnumber;

};

MyClassfun(MyClassp)

(

MyClasstemp(p);

returntemp;

)

intmain()

(

MyClassobj1(10),obj2(0);

MyClassobj3(objl);

obj2=fun(obj3);

return0;

)

程序執(zhí)行時,MyClass類的拷貝構造函數(shù)被調用的次數(shù)是

A)5B)4C)3D)2

(25)在公有派生的情況下,派生類中定義的成員函數(shù)只能訪問原基類的

A)公有成員和私有成員B)私有成員和保護成員

C)公有成員和保護成員D)私有成員、保護成員和公有成員

(26)在C++中用來實現(xiàn)運行時多態(tài)性的是

A)重載函數(shù)B)析構函數(shù)

。構造函數(shù)D)虛函數(shù)

(27)一個類可以同時繼承多個類,稱為多繼承。下列關于多繼承和虛基類的表述中,錯誤的

A)每個派生類的構造函數(shù)都要為虛基類構造函數(shù)提供實參

B)多繼承時有可能出現(xiàn)對基類成員訪問的二義性問題

C)使用虛基類可以解決二義性問題并實現(xiàn)運行時的多態(tài)性

D)建立最派生類對象時,虛基類的構造函數(shù)會首先被調用

(28)在一個類體的下列聲明中,正確的純虛函數(shù)聲明是

A)virtualvoidvf()=0;B)voidvf(int)=0;

C)virtualintvf(int);D)virtualvoidvf(int){}

(29)在下面的運算符重載函數(shù)的原型中,錯誤的是

A)Volumeoperator-(double,double);

B)doubleVolume::operator-(double);

C)VolumeVolume::operator-(Volume);

D)Volumeoperator-(Volume,Volume);

(30)下列是模板聲明的開始部分,其中正確的是

A)template<T>

B)tcniplatc<classT1,T2>

C)template<classTl,classT2>

D)template<classTkclassT2>

(31)執(zhí)行語句序列

if(...)cout?"OK";elsecout?"FAIL";

后,如果文件打開成功顯示“O示,,否則就顯示“FZxn。由此可知,上面if語句的...

處的表達式應是

(32)C++流中重載的運算符》是一個()

A)用于輸出操作的非成員函數(shù)B)用于輸入操作的非成員函數(shù)

C)用于輸出操作的成員函數(shù)D)用于輸入操作的成員函數(shù)

(33)有以下類定義

classPoint{

public:

voidMove(inlxOff.intyOff)

voidPrint()const

{cout?'('?_x??_y?')'?cndl;}

private:

int_x,_y;

);

下列語句中會發(fā)生編譯錯誤的是

(34)有以下類定義

classMyClass

(

private:

in(id;

chargender,

char*phone;

public:

MyClass():id(0),gender('#'),phone(NULL){}

MyClass(intno,charge='#\char*ph=NULL)

{id=no;gende=ge;phone=ph;}

);

下列類對象定義語句中錯誤的是

A)MyClassmyObj;

B)MyClassmyObj(l1,);

C)MyClassmyObj(12,'m');

D)MyClassmyObj(12);

(35)有以下程序

#include<iostream>

usingnamespacestd;

classComplex

public:

Complex(doubler=0,doublei=0):re(r),im(i){}

doublercal()const{returnre;}

doubleimagOconst{returnim;}

Complexoperator+(Complexc)const

private:

doublere,im;

);

intmain()

(

Complexa=Complex。,1)+Complex(5);

return0;

I

程序執(zhí)行后的輸出結果是

A)6+6iB)6+liC)l+6iD)1+li

二、填空題(每空2分,共30分)

請將每一個空的正確答案寫在答題卡[1卜[15]序號的橫線上,答在試卷上不得分。注意:

以命令關鍵字填空的必須拼寫完整。

(1)算法的復雜度主要包括[1]復雜度和空間復雜度。

(2)數(shù)據(jù)的邏輯結構在計算機存儲空間中的存放形式稱為數(shù)據(jù)的[2]。

(3)若按功能劃分,軟件測試的方法通常分為白盒測試方法和[3]測試方法。

(4)如果一個工人可管理多個設備,而一個設備只被一個工人管理,則實體“工人”與實體“設

備”之間存在[41的聯(lián)系。

(5)關系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關系運算包括選擇、連接和[5]。

⑹設有定義語句:inta=12;,則表達式a*=2+3的運算結果是[6]。

⑺從實現(xiàn)的角度劃分,C++所支持的兩種多態(tài)性分別是[7]時的多態(tài)性和運行時的多態(tài)

性。

(8)將一個函數(shù)聲明為一個類的友元函數(shù)必須使用關鍵字[8]。

(9)請按下面注釋的提示,將類B的構造函數(shù)定義補充完整。

classA

(

inta;

public:

A(in(aa=0){a=aa;}

};

classB:publicA{

intb;

Ac;

public:

〃用aa初始化基類A,用aa+1初始化類對象成員c

B(inlaa):[9]{b=aa+2;}

};

(10)下列程序的輸出結果是[10]。

#inchide<iostream>

usingnamespacestd;

intmain()

in(i=5;

int&r=i;r=7;

cout?i?endl;

return0;

)

(11)下列程序的輸出結果是rm.

#includc<iostrcam>

usingnamespacestd;

classTest{

public:

Test(){cnt++;}

~Test(){ent—;}

staticintCount(){re:ument;}

private:

staticintent;

};

inlTest::cnt=0;

intmain()

(

cout?Test::CountO?'

Testtl,t2;

Test*pT3=newTest;

Test*pT4=newTest;

coul?Test::CountO?'

deletepT4;

deletepT3;

cout?Test::Count()?endl;

return0;

}

(12)下面是用來計算n的階乘的遞歸函數(shù),請將該函數(shù)的定義補充完整。(注:階乘的定義是

n!=n*(n-l)*...*2*l)

unsignedfact(unsignedn)

(

if(n<=1)

returnI;

return[121;

}

(13)下列程序的輸出結果是[13]。

#include<iostream>

usingnamespacestd;

template<tytenameT>

Tfun(Ta,Tb){return(a<=b)?:b;)

intmain()

(

cout?fun(3,6)??fun(,)?endl;

return0;

)

(14)與成員訪問表達式p->name等價的表達式是[141。

(15)下列程序的輸出結果是[15J。

#include々iostream、

usingnamespacestd;

classbase{

public:

intn;

base(intx){n=x;}

virtualvoidset(intm;{n=m;cout?n?'}

};

classdcrivcA:publicbase{

public:

derivcA(intx):base(x){}

voidset(mtm){n+=m;cout?n?'\}

);

classderiveB:publicbase[

public:

dcrivcB(intx):base(x){}

voidset(intm){n+=m;cout?n?'*;}

};

intmain()

(

deriveAdl(l);

deriveB(12(3);

base*pbase;

phase=&dl;

pbase->aet(1);

phase=&d2;

pbase->set(2);

return0;

)

2(M)4年9月

全國計算機等級考試二級筆試試卷

公共基礎知識及C++語言程序設計

答案及評分標準

選擇題(⑴T35海小題2分,共70分)

(DC(2)C(3)B(4)A(5)D

(6)B(7)D(8)B(9)C(10)A

(U)D(⑵D(13)C(14)D(15)A

(16)A(17)D(18)B(I9)D(20)C

(21)B(22)A(23)B(24)8(25)C

(26)D(27)C(28)A(29)A(30)C

(31)C(32)B(33)D(34)B(35)B

、填空題(每空2分,共30分)

(Dfl]時間

⑵⑵存儲結構或物理結構或物理存儲結構

⑶⑶黑盒或黑箱

⑷⑷一對多或1對多或I:M或I:N(其中M、N大小寫均可)

⑸⑸投影

⑹⑹60

⑺⑺編譯

⑻[8]friend

(9)19]A(aa),c(aa+1)或c(aa+1),A(aa)

(10)[10]7

(1!)[11]042

(12)[121n*fact(n-l)

(14)[14](*p).name

(15)[15]25

2010年3月計算機等級考試二級C++筆試試題

一、選擇題(每小題2分,共70分)

下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填涂在

答題卡相應位置上,答在試卷上不得分。

(1)下列敘述中正確的是

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

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

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

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

(2)算法的時間復雜度是指

A)算法的執(zhí)行時間

B)算法所處理的數(shù)據(jù)量

。算法程序中的語句或指令條數(shù)

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

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

軟件的是

A)編輯軟件

B)操作系統(tǒng)

C)教務管理系統(tǒng)

D)瀏覽器

(4)軟件(程序)調試的任務是

A)診斷和改正程序中的錯誤

B)盡可能多地發(fā)現(xiàn)程序中的錯誤

C)發(fā)現(xiàn)并改正程序中的所有錯誤

D)確定程序中錯誤的性質

⑸數(shù)據(jù)流程圖(DFD圖)是

A)軟件概要設計的工具

B)軟件詳細設計的工具

C)結構化方法的需求分析工具

D)面向對象方法的需求分析工具

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

A)定義階段

B)開發(fā)階段

C)維護階段

D)上述三個階段

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

A)數(shù)據(jù)定義語言

B)數(shù)據(jù)管理語言

C)數(shù)據(jù)操縱語言

D)數(shù)據(jù)控制語言

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

A)文件

B)數(shù)據(jù)庫

C)字段

D)記錄

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

數(shù)據(jù)庫設計的

A)需求分析階段

B)邏輯設計階段

C)概念設計階段

D)物理設計階段

(10)有兩個關系R和T如下:

則由關系R得到關系T的操作是

A)選擇

B)投影

C)交

D)并

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

A)函數(shù)可以沒有返回值

B)函數(shù)可以沒有參數(shù)

C)函數(shù)可以是一個類的成員

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

(12)若MyClass是一個類名,且有如下語句序列

MyClassc1,*c2;

MyClass*c3=newMyClass;

MyClass&c4=c1;

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

A)1

B)2

C)3

D)4

(13)下列關于繼承方式的描述中,錯誤的是

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

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

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

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

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

A)Dccr&operator-(int);

B)Decroperator—(Decr&,int);

C)friendDecr&operator-①ecr&);

D)frlendDeeroperator—(Decr&,int);

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

MyTempp2;

MyTempp3[2];

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

A)1

B)2

C)3

D)0

(16)在C++中,cin是個

A)類

B)對象

。模板

D)函數(shù)

(17)在下列字符中,不允許作為C++標識符的是

A)b

B)B

C).

D)2

(18)下列敘述中,錯誤的是

A)false是一個邏輯型常量

B)“b”是一個字符型常量

C)365是一個int常量

(19)若x和y是程序內的兩個整型變量,則下列if語句中正確的是

A)if(x==O)y=l;elsey=2;

B)if(x==O)theny=lelsey=2;

C)if(x==O)y=lelsey=2;

D)ifx==0y=l;elsey=2;

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

A)intx[3]={0,0,0};

B)intx[]={0};

C)staticintx[3]={0};

D)intx[J={0,0,0);

(21)關于函數(shù)中的v返回類型>,下列表述中錯誤的是

A)〈返回類型〉中有可能包含關鍵字int

B)〈返回類型)中有可能包含自定義標識符

C)〈返回類型,中有可能包含字符*

D)〈返回類型〉中可能包含口

(22)要定義一個引用變量p,使之引用類MyQass的一個對象,正確的定義語句是

A)MyClassp=MyClass;

B)MyClassp=newMyClass;

C)MyClass&p=ncwMyClass;

D)MyQassa,&p=a;

(23)有如下兩個類定義

classXX{

private:

doublexI;

protected:

doublex2;

public:

doublex3;

};

classYY:protectedXX{

private:

doubleyl;

protected:

doubley2;

public:

doubley3;

I;

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

A)1

B)2

C)3

D)4

(24)下列關于運算符重載的描述中,錯誤的是

A)可以通過運算符重載在C++中創(chuàng)建新的運算符

B)賦值運算符只能重載為成員函數(shù)

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

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

(25)下列關于類模板的描述中,錯誤的是

A)類模板的成員函數(shù)都是模板函數(shù)

B)可以為類模板參數(shù)設置默認值

C)類模板描述了一組類

D)類模板中只允許有一個類型參數(shù)

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

A)setprccision

B)setw

C)sctfill

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

intfunl();

classTest!

public:

intfun2();

friendintfun3();

staticintfun4();

);

A)funl

B)fun2

C)fun3

D)fun4

(28)有如下程序

#include

usingnamespacestd;

classTest{

public:

Test(){}

Test(constTest&t){cout?I;}

I;

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

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

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

A)無輸出

B)1

C)ll

D)lll

(29)有如下程序

#include

usingnamespacestd;

classA{

public:

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

voidprint(){cout?,E'?R1p>

voidprint()const{cout?'C"?R1*R1?'-';}<p>

voidprint(intx){cout?'P'?R1*RI*R!?*-';}<p>

private:

intrl;

};

intmain(){

Aal;

constAa2(4);

return0;

I

運行時的輸出結果是

A)P8-E4

B)P8-CI6-

OP0-E4-

D)P0-C16-

(30)下列代碼聲明了3個類

classPerson{};

classStudenCpublicPerson{};

classUndergraduate:Student{};

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

A)類Person是類Undergraduate的基類

B)類Undergraduate從類Student公有繼承

C)類Student是類Person的派牛.類

D)類Undergraduate是類Person的派生類

(31)有如下程序

#include

usingnamespacestd;

ClassBase{

public:

Base(intx=0):valB(x){cout?VALB;}<p>

~Basc(){cout?VALB;}<p>

private:

intvalB:

);

classDerived:publicBase{

public:

Derived(intx=0,inty=D):Base(x),valD(y){cout?VALD;}<p>

~Derived(){cout?VALD;}<p>

private:

intvalD;

);

intmain(){

Derivedobjl2(2,3);

retuen0;

I

運行時的輸出結果是

A)2332

B)2323

C)3232

D)3223

(32)下面是類Shape的定義:

classShape{

public:

virtualvoidDraw()=0;

);

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

A)類Shape是虛基類

B)類Shape是抽象類

C)類Shape中的Draw函數(shù)聲明有誤

D)語句“Shapes;”能夠建立Shape的一個對象s

(33)將運算符重載為非成員函數(shù),卜列原型聲明中,錯誤的是

A)MyClockoperator+(MyClockJong);

B)MyClockoperator+(MyClock,MyClock);

OMyClockoperator+(long,long);

D)MyClockoperator+(long,MyClock);

(34)打開文件時可單獨或組合使用下列文件打開模式

?ios_base::app?ios_base::binary

@ios_base::in?ios_basc::out

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

A)@@

B)①④

C)??

D)??

(35)有如下程序:

#includc

usingnamespacestd;

ClassB{

public:

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

virtualvoidshow()const

{coutvvCOUNTvv'_'<vXv〈ENDL;}vp>

protected:

staticintcount;

private:

intx;

I;

classD:publicB(

public:

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

virtualvoidshovv()const

{coiit<<COUNT?'_'<<Y<〈ENDL;}<p>

private:

inty;

);

intB::count=0;

intmain(){

B*ptr=newD(10,20);

ptr->show();

deleteptr;

return0:

)

運行時的輸出結果是

A)l_120

B)2_120

C)l_20

D)2_20

二、填空題(每空2分,共30分)

請將每一個空的正確答案寫在答題卡【1】~(151序號的橫線上,答在試卷上不得分。

(1)一個隊列的初始狀態(tài)為空?,F(xiàn)將元素A,B,C.D,E,F,5,4,3,2.1依次入隊,然后再依次退

隊,則元素退隊的順序為【1】o

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

rear=10(指向隊尾元素),則該循環(huán)隊列中共有【2】個元素。

(3)設二叉樹如下:

對該二叉樹進行后序遍歷的結果為【3】。

(4)軟件是[4]、數(shù)據(jù)和文檔的集合。

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

課程的關系模式為:課程(課號,課程名,學時),其中兩個關系模式的鍵分別是學號和課號,

則關系模式選課可定義為:選課(學號,【5】,成績)。

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

x=5;y=6;y+=x—;

后,x+y的值為【6】o

(7)在執(zhí)行語句序列

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

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

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

intXfun(int*a,intn){

intx=*a;

fbr(int*pa=a+l;pa<>

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

returnx;

)

若執(zhí)行了語句

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

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

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

intXfun(intx){

inty=x;

{intx=10;y+=x;}

returnx+y;

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

(10)假定Xcs是一個類,該類中一個成員函數(shù)的原型為“Xcs*abc();",則在類外定義時

對應的函數(shù)頭為【10】,

(11)請將下面的類Date的定義補充完整,使得由語句

DateFirstDay;

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

classDate{

public:

Datc([11]):year(y),month(m),day(d)(}

private:

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

};

(12)請將下面的程序補充完整,使得程序輸出“飄是張娜的書”。

#include

usingnamespacestd;

classBook{

public:

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

[12]voidPrintlnfb(){cout?TITLE?ENDL;}<p>

protected:

chartitle[50];

I;

classMyBookpublicBook{

public:

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

113]{strcpy(owner,s2);|

virtualvoidPrintlnfo(){cout<<TITLE<v"是“OWNER?”的書"<<ENDL;}<p>

private:

charownerflO];

};

inimain(){

Book*prt=newMyBonk("飄");

prt->PrintInfo();

return0:

)

(13)在有理數(shù)類Rational中重載插入運算符vv,以便按a/q形式輸出。請將<<運算符函

數(shù)的定義補充完整。

classRational{

public:

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

friend[14]operator?(ostream&out,Rational

1

private:

inta,q;

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

intsquare(intn){returnn*n:}

doublesquare(doublen){returnn*n;|

由此可知,該函數(shù)模板的定義是【15】o

2007年4月計算機等級考試C++考試及答案

一、選擇題(每小題2分,共70分)

下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項涂寫在答

題卡相應位置上,答在試卷上不得分。

(1)下列敘述中正確的是。

A)算法的效率只與問題的規(guī)模有關,而與數(shù)據(jù)的存儲結構無關.

B)算法的時間復雜度是指執(zhí)行算法所需要的計算工作量

C)數(shù)據(jù)的邏輯結構與存儲結構是一一對應的.

D)算法的時間復雜度與空間復雜度一定相關.

(2)在結構化程序設計中,模塊劃分的原則是。

A)各模塊應包括盡量多的功能

B)各模塊的規(guī)模應盡量大

C)各模塊之間的聯(lián)系應盡量緊密

D)模塊內具有高內聚度,模塊間具有低耦合度

(3)下列敘述中正確的是。

A)軟件測試的主要FI的是發(fā)現(xiàn)程序中的錯誤.

B)軟件測試的主要目的是確定程序中錯誤的位置.

C)為了提高軟件測試的效率,最好由程序編制者自己來完成軟件測試的工作

D)軟件測試是證明軟件沒有錯誤

(4)下面選項中不屬于面向對象程序設計特征的是。

A)繼承性B)多態(tài)性C)類比性D)封裝性

(5)下列對列的敘述正確的是。

A)隊列屬于非線性表

B)隊列按“先進后出”的原則組織數(shù)據(jù)

C)隊列在隊尾刪除數(shù)據(jù)

D)隊列按“先進先出”原則組織數(shù)據(jù)

(6)對下列二叉樹

A)DYBEAFCZXB)YDEBFZXCAC)ABDYECFXZD)ABCDEFXYZ

(7)某二叉樹中有n個度為2的結點則該二叉樹中的葉子結點數(shù)為

A)n+1B)n-1C)2nD)n/2

(8)在下列關系運算中,不改變關系表中的屬性個數(shù)但能減少元組個數(shù)的是。

A)井B)交C)投影D)笛卡兒乘積

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

A)矩形B)橢圓形C)菱形D)平行四邊形

(10)下列敘述中錯誤的是。

A)在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結構必須與邏輯結構一致.

B)數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)的共享問題

C)數(shù)據(jù)庫設計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎上建立數(shù)據(jù)庫

D)數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持

(11)為了取代C中帶參數(shù)的宏,在C++中使用

A)重載函數(shù)B)內聯(lián)函數(shù)C)遞歸函數(shù)D)友元函數(shù)

(12)下列關于類定義的說法中,正確的是

A)類定義中包括數(shù)據(jù)成員和函數(shù)成員的聲明

B)類成員的缺省訪問權限是保護的

C)數(shù)據(jù)成員必須被聲明為私有的

D)成員函數(shù)只能在類體外進行定義

(13)卜.列關于派生類構造函數(shù)和析構函數(shù)的說法中,錯誤的是

A)派生類的構造函數(shù)會隱含調用基類的構造函數(shù)

B)如果基類中沒有缺省構造函數(shù),那么派生類必須定義構造函數(shù)

C)在建立派生類對象時,先調用基類的構造函數(shù),再調用派生類的構造函數(shù)

D)在銷毀派生類對象時,先調用基類的析構函數(shù),再調用派生類的析構函數(shù)

(14)通過運算符重載,可以改變運算符原有的

A)操作數(shù)類型B)操作數(shù)個數(shù)C)優(yōu)先級D)結合性

(15)有如下函數(shù)模板:

template<classT>Tsouarc(Tx)(rctumx*x;)

基中T是

A)函數(shù)形參B)函數(shù)實參C)模板形參D)模板實參

(16)使用輸入輸出操作符setw,可以控制

A)輸出精度B)輸出寬度C)對齊方式D)填充字符

(17)下列字符串中,不可以用作C++標識符的是

A)y_2006B)TEST_HC)ReturnD)switch

A)longsdoubleintB)leng、float、int

C)ini、double>longD)int>floatslong

(19)執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是

for(inti=50;I>l;—i)cout?^^*^^

A)48B)49050D)51

(20)有如下程序段

inti=0,j=l;

int&r=i;//①

r=j;〃②

int*p=&i;〃③

*p=&r;〃④

基中會產(chǎn)生編譯錯誤的語句是

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

(21)有如下函數(shù)定義:

voidfunc(inta,int&b){a++;b++;}

若執(zhí)行代碼段:

intx=O,y=l

func(x,y);

則變量x和y值分別是

A)0和1B)1和1C)。和2D)1和2

(22)有如下程序:

#includc<iostrcam>

usingnamespacestd;

classA{

public

staticinta;

voidinit(){a=1;}

A(inta=2){init();a+-+-;}

};

intA:;a=0

Aobj;

In(main()

|

retumO;

)

運行時輸出的結果是

A)OB)1C)2D)3

(23)下列有關繼承和派生的敘述中,正確的是

A)派生類不能訪問基類的保護成員

B)作為虛基類的類不能被實例化

C)派生類應當向基類的構造函數(shù)傳遞參數(shù)

D)虛函數(shù)必須在派生類中重新實現(xiàn)

(24)下列運算符中,不能被重載的是

A)&&B)!=C).D)++

(25)下列函數(shù)模板的定義中,合法的是

A)template<typenameT>Tabs(Tx){returnx<0-x:x;}

B)templateclass<T>Tabs(Tx){retumx<0-x;x;)

C)templateT<classT.>abs(Tx){returnx<0-x;x;}

D)templateTabs(Tx)(returnix<0-x;x;}

(26)在語句cin?dala;中,cin是

A)C++的關鍵字B)類名

C)對象名D)函數(shù)名

(27)有如下程序:

#include<ioslream>

usingnamespacestd;

classtest{

private:

inta;

public:

test(){cout〈v'*constructor“vvendl;}

test(inta){cout?a?en(ll;}

test(consttest&test)

a=_testa;

cout?*'copyconstructor"?cndl;

)

test(){cout?,'destructor,,?endI;}

};

intmain()

)

testA(3)

rcturnO;

運行時輸出的結果是

A)3

B)constructor

destruclor

C)copyconstructor

D)3

dstructordestruclor

(28)若有如下類聲明

classMyClass{

public:

MyClass(){cout?l;}

);

執(zhí)行下列語句

MyClassa,b[2],*P|2];

以后,程序的輸出結果是

A)11B)111C)1111DH111

(29)有如下程序:

#include<iostream>

usingnamespacestd;

classpoint{

public:

staticintnumber;

public:

point(){number++;

?point(){number";}

);

imtpoint::nuniber=0;

voidmain(){

poinl*ptr;

printA,B;

(

point*ptr_point=newpoint{3};

plr=plr_point;

)

pointC;

cout?point::number?endl;

dclctc[Jptr;

)

運行時輸出的結果是

A)3B)406D)7

(30)如果不使用多態(tài)機制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問

從基類繼承的成員,有如下程序,沒有使用多態(tài)機制。

#includevioslream、

usingnamespacestd;

classBase{

inta.b;

public:

Bace(intxJnty){a=x;b=y;}

Voidshow(){cout?a?,/?b?cndl;}

}

clsaaDcrivcd:publicBase{

intc,d;

public:

Derived(intx,inly,intzjmm):Base(x,y){c=z;d=m;}

Voidshow(){cout?c<<\,d?endl;}

);

intmain()

|

BaseBl(50,50),*pb;

DerivedDI(10,20,30,40);

Pb=&DI;

Pb->show();

Return0;

)

運行時輸出的結果是

A)10,20B)30,40020,30D)50,50

(31)有如下程序:

#include<iostream>

usingnamespacestd;

classA

|

public;

A(inti){x=i;}

Voidsispa(){coutwxvv',';}

Private:

intx;

I;

classBipublicA

public;

B(inti):A(i+10){x=i;}

vouddispb(){dispa();cout?x<,endl;}

Private:

Inix;

);

intmain()

(

Bb(2);

return0:

I

運行時輸出的結果是

A)10,2B)12,IOC)12,2D)2,2

(32)虛函數(shù)支持多態(tài)調用,一個基類的指針可以指向派生類的對象,而且通過這樣的指針

調用虛函數(shù)時,,被調用的是指針所指的實際對象的虛函數(shù),而非虛函數(shù)不支持多態(tài)調用。

有如下程序:

#include<iostrcam>

usingnamespacestd;

classBase

(

public:

virtualvoidf(){cout<v''R)+'';}

voidg(){coutv<”gO+”;}

};

classDerived:publicBase

(

public:

voidf(){cout?"f+”;}

voidg(){cout?,,g+,,;}

};

intmain()

{

Derivedd;

Base*p=&d;

p->f();p->g();

return0:

}

運行時輸出的結果是

A)f+g+B)fO+g+C)f+gO+D)fO+gO+

(33)下面程序中對一維坐標點類Point進行運算符重載

#include<ioslream>

usingnamespacestd;

classpoint{

public:

point(intval){x=val;}

point&operator++(){x+-+;retum*lhis;}

printoperator++(int){pointold=*this,++(*this);retumold;}

intGetX()const{returnx;}

private:

intx;

};

intmain()

(

pointa(10);

cout?(++a).GetX();

cout?a++.GetX();

return();

}

編譯和運行情況是

A)運行時輸出Wil

B)運行時輸出1111

C)運行時輸出1112

D)編譯有錯

(34)有如下程序:

#include<iostream>

usingnamespacestd;

intmain()

(

charstr[100],*p;

coutvv“pleaseinputastring:'';

cin?str;

p=str;

for(inti=0;*p!=^\0,,;p++,i++);

cout?i?endl;

return0;

)

運行這個程序時,若輸入字符串為

abedefgabed

則輸出結果是

A)7B)12013D)100

(35)有如下程序::

#include<iostream>

usingnamespaceski:

classSample

friendlongfun(Samples);

public:

Sample(longa){x=a;}

Private:

longx;

};

longfun(Samples)

intmain()

(

intsum=0

for(inti=0;i<6;i++){sum+=fun(Sample(i);)}

cout?sum;

return0;

)

運行時輸出的結果是

A)120B)160154D)34

二、填空題(每空2分,共30分)

請將每一個空的正確答案寫在答題卡【1】?【15】序號的橫線上,答在試卷上不得分。

(1)在深度為7的滿二叉樹中,度為2的結點個數(shù)為【I】o

(2)軟件測試分為白箱1盒)測試和黑箱(盒)測試,等價類劃分法屬于【2】測試。

(3)在數(shù)據(jù)庫系統(tǒng)中,實現(xiàn)各種數(shù)據(jù)管理體制功能的核心軟件稱為[3]。

(4)軟件生命周期可分為多個階段,一般分為定義階段、開發(fā)和維護階段。編碼和測試屬

于【4】階段。

(5)在結構化分析使用的數(shù)據(jù)流圖(DFD)中,利用【5】對其中的圖形元素進行確切解

釋。

(6)C++中只有兩個邏輯常量:true和16】。

(7)若要訪問指針變量p所指向的數(shù)據(jù),應使用表達式【7】。

(8)已知一個函數(shù)的原型是:

intfn(doublex);

(9)有如下定義:

classMA{

intvalue;

public:

MA(intn=0):valut(n){}

};

MA*ta,tb;

其中MA類的對象名標識符是【9】o

(10)如下類定義中包含了構造函數(shù)和拷貝數(shù)的原型聲明請在橫線處寫正確的內容,使拷貝

構造函數(shù)的聲明完整。

ClassmyClass{

Private:

Intdata:

Public:

MyClass(intvalue);〃構造函數(shù)

MyClass(const[10]anotherObject);〃拷貝構造函數(shù)

)

(11)用來派生新類的稱為[11],而派生出的新類稱為它的子類或派生類。

(12)有如下程序:

#includevioslream、

usingnamespacestd;

clsaaCA{

public:

CAD{cout?A,;}

};

classCB;privateCA{

public;

CB(){cout?B,;)

};

intmain(){cout?B,;}

);

intmain(){

CAa;

CBb;

rctuniO;

}

這個程序的輸出結果是[12]o

(13)若將一個一元運算符重載為類的成員函數(shù),其形參個數(shù)應該是[13]個。

(14)有如下程序:

#include<iostream>

usingnamespacestd;

classDA{

intk;

public:

DA(intx=l):k(x){]

?DA(){cout?k;)

);

intmain(){

DAd[]={DA(3),DA(3),DA(3)};

DA*p=newDA[2];

dclete[]p;

returnO;

}

這個程序的輸出結果是【14】o

(15)C++語言中的多態(tài)性分為編譯時的多態(tài)性和[15]時的多態(tài)性。

2007年4月計算機等級考試C++考試答案

選擇題:

1-5BDACD

6-10CABCA

11-15BADAC

I6-20BCDBA

21-25CCCCA

26-30CDBDA

30-35CBBBC

填空:

1、63

2、黑盒

3、DBMS

4、開發(fā)

5、數(shù)據(jù)字典

6、false

7、*P

9、tb

10、myclassA,

11、基類

12、AAB

13、1個

14、11333

15、運行

2007年9全國計算機等級考試二級筆試試卷C++語言程序設計

(考試時間90分鐘,滿分100分)

一、選擇題(每小題2分,共70分)

下列個體A、B、C、D四個選項重,只有一個選項是正確的,請將正確選項涂寫在答題

卡相應位置上,答在試卷上不得分。

(1)軟件是指

A程序B程序和文檔

C算法加數(shù)據(jù)結構D程序、數(shù)據(jù)與相關文檔的完整集合

(2)軟件調試的目的是

A發(fā)現(xiàn)錯誤B改正錯誤

C改善軟件的性能D驗證軟件的正確性

(3)在面對對象方法中,實現(xiàn)信息隱蔽是依靠

A對象的繼承B對象的多態(tài)

C對象的封裝D對象的分類

(4)下列敘述重,不符合良好程序設計風格要求是

A程序的效率第一,清晰第二B程序的可讀性好

C程序中要有必要的注釋

溫馨提示

  • 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

提交評論