為大家收集整理了《2014年全國計算機等級二級C++考前模擬題》供大家參考,希望對大家有所幫助!!!
一、選擇題(每小題1分,共40分)
1、假定int類型變量占用兩個字節(jié),其有定義int x[10]={0,2,4};,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是( )。
A.3
B.6
C.10
D.20
2、有兩個關(guān)系R,S如下:

由關(guān)系R通過運算得到關(guān)系s,則所使用的運算為( ?。?BR> A.選擇
B.投影
C.插入
D.連接
3、對于循環(huán)隊列,下列敘述中正確的是( )。
A.隊頭指針是固定不變的
B.隊頭指針一定大于隊尾指針
C.隊頭指針一定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
4、下列有關(guān)函數(shù)重載的敘述中,錯誤的是( ?。?。
A.函數(shù)重載就是用相同的函數(shù)名定義多個函數(shù)
B.重載函數(shù)的參數(shù)列表必須不同
C.重載函數(shù)的返回值類型必須不同
D.重載函數(shù)的參數(shù)可以帶有默認值
5、有三個關(guān)系R S和T如下.

則由關(guān)系R和S得到關(guān)系T的操作是( )。
A.自然連接
B.并
C.交
D.差
6、下面關(guān)于類和對象的描述中,錯誤的是( )。
A.類就是C語言中的結(jié)構(gòu)體類型,對象就是C語言中的結(jié)構(gòu)體變量
B.類和對象之間的關(guān)系是抽象和具體的關(guān)系
C.對象是類的實例,一個對象必須屬于一個已知的類
D.類是具有共同行為的若干對象的統(tǒng)一描述體
7、有如下程序:
#inClude using namespaCe std; Class test{
private: int a;
publiC:
test( ?。﹞Cout<<”ConstruCtor”< test(Const test&_test){ a=test.a(chǎn):
Cout<<”Copy ConstruCtor”< test( ?。﹞Cout<<”destruCtor”< };
int main( ?。﹞ test A(3); return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( ?。?BR> A.3
B.ConstruCtor
destruCtor
C.Copy ConstruCtor
destruCtor
D.3
destruCtor
8、有如下函數(shù)模板:
template
T east(U u)i return u;}
其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是( ?。?。
A.cast(i);
B.cast<>(i);
C.east(i);
D.east(i);
9、下面程序的運行結(jié)果是( )。
#include
void fun(int *a,int *B. {
int x=*a:
*a=*b;*b=X;
cout<<*a<<*b<<””:
void main() {
int X=1,Y=2; fun(&x,&y);
cout< }
A.12 12
B.12 21
C.21 12
D.21 21
10、在C++語言中,打開一個文件就是將這個文件與一個( )建立關(guān)聯(lián)。
A.流
B.類
C.結(jié)構(gòu)
D.對象
11、 下列語句中,錯誤的是( )。
A.const int buffer:256;
B.const int temp;
C.const double*point;
D.const double*rt=new double(5.5);
12、 下列程序的輸出結(jié)果為( )。
#include
void main()
{
char*a[]={”hell0”,”the”,”world”};
char** pa = a:
pa++;
cout<<*pa< }
A.hello
B.the
C.world
D.hellotheworld
13、 關(guān)于運算符重載,下列表述中正確的是( ?。?。
A.C++已有的任何運算符都可以重載
B.運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型
C.在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型
D.可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符
14、 可以用P.a(chǎn)的形式訪問派生類對象P的基類成員a,其中a是( )。
A.私有繼承的公有成員
B.公有繼承的私有成員
C.公有繼承的保護成員
D.公有繼承的公有成員
15、 在下列原型所示的C++函數(shù)中,按“傳值”方式傳遞參數(shù)的是( )。
A.void fl(int X);
B.void t2(int*X);
C.void f3(Const int*X);
D.void f4(int&x);
16、 以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是( ?。?BR> A.public
B.static
C.protected
D.private
17、下面程序的運行結(jié)果為( )。
#include class A
{
int hum;
public:
A(int i){nuln=i;}
A(A&A.{num=a.num十+;} void print(){eout( void main()
A a(1),b(A.; a.print();
A print();
A.11
B.12
C.21
D.22
18、 下面是重載為非成員函數(shù)的運算符的函數(shù)原型,其中錯誤的是( )。
A.Fraction operator+(Fraction,F(xiàn)raction);
B.Fraction operator一(Fraction);
C.Fraction&operator=(Fraction&,F(xiàn)raction);
D.Fraction&operator+=(Fraction&,F(xiàn)raction);
19、 下列語句中錯誤的是( )。
A.Const int a;
B.Const int a=10;
C.Const int * point=0;
D.Const int * point=new int(10);
20、 下列關(guān)于函數(shù)的描述中,錯誤的是( )。
A.函數(shù)可以沒有返回值
B.函數(shù)可以沒有參數(shù)
C.函數(shù)可以是一個類的成員
D.函數(shù)不能被定義為模板
21、 下列語句都是程序運行時的第1條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是( )。
A.cout 22、 有三個關(guān)系R、S和T如下:

則由關(guān)系R和S得到關(guān)系T的操作是( )。
A.自然連接
B.差
C.交
D.并
23、 有如下程序:
#include
using namespace std;
class VAC{
public:
intf()const{return 3;}
int f(){retum 5;}
};
int main()
{
VAC vl;
const VAC v2;
cout< return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.53
B.35
C.55
D.33
24、 一間宿舍可住多個學(xué)生,則實體宿舍和學(xué)生之間的聯(lián)系是( ?。?BR> A.一對一
B.一對多
C.多對一
D.多對多
25、 下列關(guān)于二叉樹的敘述中,正確的是( )。
A.葉子結(jié)點總是比度為2的結(jié)點少一個
B.葉子結(jié)點總是比度為2的結(jié)點多一個
C.葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍
D.度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍
26、 有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)( )。
int a[10]={0,1,2,3,4,5,6,7,8,9},*P=a;
A.a(chǎn)[P-a]
B.*(&a[i])
C.P[i]
D.*(*(a+i))
27、 下列程序的運行結(jié)果為( )。
#include
void print(double A.
{
cout<<++a:
}
void print(int atint B.
{
cout< }
void main()
{
print(1.2);
eout<<””:
print(3,4);
}
A.1.2 34
B.2.2 34
C.1.2 43
D.2.2 43
28、 存在定義int a[10],x,* pa;,若pa=&a[0],下列的( )選項和其他3個選項不是等價的。
A.x=*pa;
B.x=*(a+1);
C.x=*(pa+l)
D.x=a[1];
29、 下列敘述中正確的是( ?。?BR> A.循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)
B.在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況
C.在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況
D.循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定
30、 通??截悩?gòu)造函數(shù)的參數(shù)是( )。
A.某個對象名
B.某個對象的成員名
C.某個對象的引用名
D.某個對象的指針名
31、如果在表達式++x/y中,“++”是作為友元函數(shù)重載的,…/”是作為成員函數(shù)重載的,則該表達式還可為( )。
A.(operator++(x)).operator/(Y)
B.(operator++(0)).operator/(Y)
C.operator/((operator++(x,0)),Y)
D.operator/((operator++(0)),Y)
32、 一個函數(shù)功能不太復(fù)雜但要求被頻繁調(diào)用,應(yīng)選用( )。
A.內(nèi)聯(lián)函數(shù)
B.重載函數(shù)
C.遞歸函數(shù)
D.嵌套函數(shù)
33、 數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是( )。
A.數(shù)據(jù)庫設(shè)計
B.數(shù)據(jù)庫系統(tǒng)設(shè)計
C.數(shù)據(jù)庫維護
D.數(shù)據(jù)庫管理員培訓(xùn)
34、 有如下程序: Class Base{ publiC:
int data; };
Class Derivedl:publiC Base{};
Class Derived2:proteCted Base{};
int main( ?。?{
Derivedl dl; Derived2 d2; dl.data=0;//①
d2.data=0;//② retum 0;
}
下列關(guān)于程序編譯結(jié)果的描述中,正確的是( ?。?。
A.①②皆無編譯錯誤
B.①有編譯錯誤,②無編譯錯誤
C.①無編譯錯誤,②有編譯錯誤
D.①②皆有編譯錯誤
35、 下列關(guān)于基類和派生類關(guān)系的敘述中,正確的是( ?。?BR> A.每個類多只能有一個直接基類
B.派生類中的成員可以訪問基類中的任何成員
C.基類的構(gòu)造函數(shù)必須在派生類的構(gòu)造函數(shù)體中調(diào)用
D.派生類除了繼承基類的成員,還可以定義新的成員
36、 結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括( )。
A.順序結(jié)構(gòu)
B.GOT0跳轉(zhuǎn)
C.選擇(分支)結(jié)構(gòu)
D.重復(fù)(循環(huán))結(jié)構(gòu)
37、將E—R圖轉(zhuǎn)換為關(guān)系模式時,實體和聯(lián)系都可以表示為( )。
A.屬性
B.鍵
C.關(guān)系
D.域
38、 下面是一個模板聲明的開始部分:
templatedouble…由此可知( )。
A.這可能是一個函數(shù)模板的聲明
B.這可能是一個類模板的聲明
C.這既可能是一個函數(shù)模板的聲明,也可能是一個類模板的聲明
D.這肯定是一個錯誤的模板聲明
39、有如下程序:
#include
using namespace std;
class AA{
int k;
protected:
int n;
void setK(int k){this一>k=k;}
public:
void setN(int n){this一>n=n;}
};
class BB:public AA{/*類體略*/};
int main()
}
BB X;
A n=1;//1
B setN(2);//2
C k=3;//3
D setK(4);//4
return 0;
}
在標注號碼的四條語句中正確的是( )。
A.1
B.2
C.3
D.4
40、 有如下頭文件:
int fl();
static int f2();
class MA{
public:
int f3();
static int f4();
};
在所描述的函數(shù)中,具有隱含的this指針的是( )。
A.fl
B.f2
C.f3
D.f4
二、基本操作題(18分)
41、
請使用VC6或使用【答題】菜單打開考生文件夾projl下的工程projl,該工程中包含程序文件main.epp,其中有類Door(“門”)和主函數(shù)main的定義。程序中位于每個“//ERROR****found ****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)為:
打開503號門…門是鎖著的,打不開。
打開503號門的鎖…鎖開了。
打開503號門…門打開了。
打開503號門…門是開著的,無須再開門。
鎖上503號門…先關(guān)門...門鎖上了。
注意:只修改每個“//ERROR***********found **********”下的那一行,不要改動程序中的其他內(nèi)容。
#include
using namespace std;
class Door{
int Bum;//門號
bool closed;//true表示門關(guān)著
bool locked://true表示門鎖著
public:
Door(int nHm){
//ERROR***********found***********
nun=this一>ann:
closed=locked=true:
}
bool isClosed()const{rehlrn closed;}
//門關(guān)著時返回true,否則返回false
bool isOpened()const{return!closed;}
//門開著時返回true,否則返回false
b001 isLocked()const{retum locked;}
//門鎖著時返回true,否則返回false
bool isUnlocked()const{return!locked;}
//門未鎖時返回true,否則返回false
void open(){ //開門
cout< //ERROR***********found***********
if(closed)
cout<<”門是開著的,無須再開門?!?;
else if(10cked)
cout<<”門是鎖著的,打不開?!保?BR> else{
closed=false;
eout<<”門打開了?!?;
}
}
void close(){//關(guān)門
cout< if(closed)
cout<<”門是關(guān)著的,無須再關(guān)門。”;
else{
closed=true;
cout<<”門關(guān)上了.";
}
}
//ERROR************found************
void lock()const{//鎖門
cout< if(locked)
cout<<”門是鎖著的,無須再鎖門?!保?BR> else{
if(!closed){
cout<<”先關(guān)門...”;
closed=true;
}
locked=true:
cout<<”門鎖上了。”;
}
}
wild unlock(){//開鎖
cout< if(!locked)
cout<<”門沒有上鎖,無須再開鎖。”;
else{
locked=false;
cout<<”鎖開了?!?;
}
};
int main(){
Door door(503);
door.open();
door.unlock();
door.open();
door.open();
floor.10ck();
return 0;
}
三、簡單應(yīng)用題(24分)
42、
請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個程序文件 main.cpp,其中有類CPolygon(“多邊形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定義。請在橫線處填寫適當?shù)拇a并刪除橫線,以實現(xiàn)上述類定義。該程序的正確輸出結(jié)果應(yīng)為: 注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。 #include
{tout<<——< int area(void){return(width *height);}
class CTriangle:public CPolygon{
int length;//三角形一邊長 int height;//該邊上的高
public:
CTriangle(int l,int h):length(1),height(h){}
//*********found*********
int area(void){return(——)/2;}
};
int main(){
CRectangle rect(4,5); CTriangle trgl(4,5);
//*********found********* ______ *ppolyl,* ppoly2; ppolyl=&rect;
ppoly2=&trgl;
ppolyl->printarea(); ppoly2->printarea(); retun 0;
四、綜合應(yīng)用題(18分)
43、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明的DataList類,是一個用于表示數(shù)據(jù)表的類。s0rt成員函數(shù)的功能是將當前數(shù)據(jù)表中的元素升序排列。請編寫這個sort函數(shù)。程序的正確輸出應(yīng)為: .
排序前:7,1,3,11,6,9,12,10,8,4,5,2 排序后:l,2,3,4,5,6,7,8,9,10,11,12
要求:
補充編制的內(nèi)容寫在“//********33********”與“//********666********”兩行之問。不得修
改程序的其他部分。
注意:程序后將結(jié)果輸出到文件。ut.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為。obj文件,并且在本程序
調(diào)用。
//DataList.h
#inClude using namespaCe std; Class DataList{//數(shù)據(jù)表類
int len;
double*d: publiC:
DataList(int len,double data[]=NULL);。DataList(){delete[]d;}
int length(Constt retum len;}//數(shù)據(jù)表長度(即數(shù)據(jù)元素的個數(shù)) double getElement(int i)Const{return d[i];}
void sort();//數(shù)據(jù)表排序
void show()Const;//顯示數(shù)據(jù)表}.
void writeToFile(Char*,Const DataList&).//main.Cpp
#inClude”DataList.h”
DataList::DataList(int len,double data[]):len(1en){ d=new double[1en];
for(int i_0;i d[i]=(data==NULL?0.0:data[i]);
}
void DataList::sort(){//數(shù)據(jù)表排序//********333********
//********666********}
void DataList::show()Const{//顯示數(shù)據(jù)表
for(int i=0;i }
int main(){
double S[]={7,1,3,11,6,9,12,10,8,4,5,2}; DataList list(12,S);
Cout<<”排序前:”; list.show();
list.sort();
Cout< writeToFile(””,list); return 0;
}
一、選擇題(每小題1分,共40分)
1、假定int類型變量占用兩個字節(jié),其有定義int x[10]={0,2,4};,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是( )。
A.3
B.6
C.10
D.20
2、有兩個關(guān)系R,S如下:

由關(guān)系R通過運算得到關(guān)系s,則所使用的運算為( ?。?BR> A.選擇
B.投影
C.插入
D.連接
3、對于循環(huán)隊列,下列敘述中正確的是( )。
A.隊頭指針是固定不變的
B.隊頭指針一定大于隊尾指針
C.隊頭指針一定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
4、下列有關(guān)函數(shù)重載的敘述中,錯誤的是( ?。?。
A.函數(shù)重載就是用相同的函數(shù)名定義多個函數(shù)
B.重載函數(shù)的參數(shù)列表必須不同
C.重載函數(shù)的返回值類型必須不同
D.重載函數(shù)的參數(shù)可以帶有默認值
5、有三個關(guān)系R S和T如下.

則由關(guān)系R和S得到關(guān)系T的操作是( )。
A.自然連接
B.并
C.交
D.差
6、下面關(guān)于類和對象的描述中,錯誤的是( )。
A.類就是C語言中的結(jié)構(gòu)體類型,對象就是C語言中的結(jié)構(gòu)體變量
B.類和對象之間的關(guān)系是抽象和具體的關(guān)系
C.對象是類的實例,一個對象必須屬于一個已知的類
D.類是具有共同行為的若干對象的統(tǒng)一描述體
7、有如下程序:
#inClude using namespaCe std; Class test{
private: int a;
publiC:
test( ?。﹞Cout<<”ConstruCtor”< test(Const test&_test){ a=test.a(chǎn):
Cout<<”Copy ConstruCtor”< test( ?。﹞Cout<<”destruCtor”< };
int main( ?。﹞ test A(3); return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( ?。?BR> A.3
B.ConstruCtor
destruCtor
C.Copy ConstruCtor
destruCtor
D.3
destruCtor
8、有如下函數(shù)模板:
template
T east(U u)i return u;}
其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是( ?。?。
A.cast(i);
B.cast<>(i);
C.east(i);
D.east(i);
9、下面程序的運行結(jié)果是( )。
#include
void fun(int *a,int *B. {
int x=*a:
*a=*b;*b=X;
cout<<*a<<*b<<””:
void main() {
int X=1,Y=2; fun(&x,&y);
cout< }
A.12 12
B.12 21
C.21 12
D.21 21
10、在C++語言中,打開一個文件就是將這個文件與一個( )建立關(guān)聯(lián)。
A.流
B.類
C.結(jié)構(gòu)
D.對象
11、 下列語句中,錯誤的是( )。
A.const int buffer:256;
B.const int temp;
C.const double*point;
D.const double*rt=new double(5.5);
12、 下列程序的輸出結(jié)果為( )。
#include
void main()
{
char*a[]={”hell0”,”the”,”world”};
char** pa = a:
pa++;
cout<<*pa< }
A.hello
B.the
C.world
D.hellotheworld
13、 關(guān)于運算符重載,下列表述中正確的是( ?。?。
A.C++已有的任何運算符都可以重載
B.運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型
C.在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型
D.可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符
14、 可以用P.a(chǎn)的形式訪問派生類對象P的基類成員a,其中a是( )。
A.私有繼承的公有成員
B.公有繼承的私有成員
C.公有繼承的保護成員
D.公有繼承的公有成員
15、 在下列原型所示的C++函數(shù)中,按“傳值”方式傳遞參數(shù)的是( )。
A.void fl(int X);
B.void t2(int*X);
C.void f3(Const int*X);
D.void f4(int&x);
16、 以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是( ?。?BR> A.public
B.static
C.protected
D.private
17、下面程序的運行結(jié)果為( )。
#include class A
{
int hum;
public:
A(int i){nuln=i;}
A(A&A.{num=a.num十+;} void print(){eout( void main()
A a(1),b(A.; a.print();
A print();
A.11
B.12
C.21
D.22
18、 下面是重載為非成員函數(shù)的運算符的函數(shù)原型,其中錯誤的是( )。
A.Fraction operator+(Fraction,F(xiàn)raction);
B.Fraction operator一(Fraction);
C.Fraction&operator=(Fraction&,F(xiàn)raction);
D.Fraction&operator+=(Fraction&,F(xiàn)raction);
19、 下列語句中錯誤的是( )。
A.Const int a;
B.Const int a=10;
C.Const int * point=0;
D.Const int * point=new int(10);
20、 下列關(guān)于函數(shù)的描述中,錯誤的是( )。
A.函數(shù)可以沒有返回值
B.函數(shù)可以沒有參數(shù)
C.函數(shù)可以是一個類的成員
D.函數(shù)不能被定義為模板
21、 下列語句都是程序運行時的第1條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是( )。
A.cout 22、 有三個關(guān)系R、S和T如下:

則由關(guān)系R和S得到關(guān)系T的操作是( )。
A.自然連接
B.差
C.交
D.并
23、 有如下程序:
#include
using namespace std;
class VAC{
public:
intf()const{return 3;}
int f(){retum 5;}
};
int main()
{
VAC vl;
const VAC v2;
cout< return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.53
B.35
C.55
D.33
24、 一間宿舍可住多個學(xué)生,則實體宿舍和學(xué)生之間的聯(lián)系是( ?。?BR> A.一對一
B.一對多
C.多對一
D.多對多
25、 下列關(guān)于二叉樹的敘述中,正確的是( )。
A.葉子結(jié)點總是比度為2的結(jié)點少一個
B.葉子結(jié)點總是比度為2的結(jié)點多一個
C.葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍
D.度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍
26、 有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)( )。
int a[10]={0,1,2,3,4,5,6,7,8,9},*P=a;
A.a(chǎn)[P-a]
B.*(&a[i])
C.P[i]
D.*(*(a+i))
27、 下列程序的運行結(jié)果為( )。
#include
void print(double A.
{
cout<<++a:
}
void print(int atint B.
{
cout< }
void main()
{
print(1.2);
eout<<””:
print(3,4);
}
A.1.2 34
B.2.2 34
C.1.2 43
D.2.2 43
28、 存在定義int a[10],x,* pa;,若pa=&a[0],下列的( )選項和其他3個選項不是等價的。
A.x=*pa;
B.x=*(a+1);
C.x=*(pa+l)
D.x=a[1];
29、 下列敘述中正確的是( ?。?BR> A.循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)
B.在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況
C.在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況
D.循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定
30、 通??截悩?gòu)造函數(shù)的參數(shù)是( )。
A.某個對象名
B.某個對象的成員名
C.某個對象的引用名
D.某個對象的指針名
31、如果在表達式++x/y中,“++”是作為友元函數(shù)重載的,…/”是作為成員函數(shù)重載的,則該表達式還可為( )。
A.(operator++(x)).operator/(Y)
B.(operator++(0)).operator/(Y)
C.operator/((operator++(x,0)),Y)
D.operator/((operator++(0)),Y)
32、 一個函數(shù)功能不太復(fù)雜但要求被頻繁調(diào)用,應(yīng)選用( )。
A.內(nèi)聯(lián)函數(shù)
B.重載函數(shù)
C.遞歸函數(shù)
D.嵌套函數(shù)
33、 數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是( )。
A.數(shù)據(jù)庫設(shè)計
B.數(shù)據(jù)庫系統(tǒng)設(shè)計
C.數(shù)據(jù)庫維護
D.數(shù)據(jù)庫管理員培訓(xùn)
34、 有如下程序: Class Base{ publiC:
int data; };
Class Derivedl:publiC Base{};
Class Derived2:proteCted Base{};
int main( ?。?{
Derivedl dl; Derived2 d2; dl.data=0;//①
d2.data=0;//② retum 0;
}
下列關(guān)于程序編譯結(jié)果的描述中,正確的是( ?。?。
A.①②皆無編譯錯誤
B.①有編譯錯誤,②無編譯錯誤
C.①無編譯錯誤,②有編譯錯誤
D.①②皆有編譯錯誤
35、 下列關(guān)于基類和派生類關(guān)系的敘述中,正確的是( ?。?BR> A.每個類多只能有一個直接基類
B.派生類中的成員可以訪問基類中的任何成員
C.基類的構(gòu)造函數(shù)必須在派生類的構(gòu)造函數(shù)體中調(diào)用
D.派生類除了繼承基類的成員,還可以定義新的成員
36、 結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括( )。
A.順序結(jié)構(gòu)
B.GOT0跳轉(zhuǎn)
C.選擇(分支)結(jié)構(gòu)
D.重復(fù)(循環(huán))結(jié)構(gòu)
37、將E—R圖轉(zhuǎn)換為關(guān)系模式時,實體和聯(lián)系都可以表示為( )。
A.屬性
B.鍵
C.關(guān)系
D.域
38、 下面是一個模板聲明的開始部分:
templatedouble…由此可知( )。
A.這可能是一個函數(shù)模板的聲明
B.這可能是一個類模板的聲明
C.這既可能是一個函數(shù)模板的聲明,也可能是一個類模板的聲明
D.這肯定是一個錯誤的模板聲明
39、有如下程序:
#include
using namespace std;
class AA{
int k;
protected:
int n;
void setK(int k){this一>k=k;}
public:
void setN(int n){this一>n=n;}
};
class BB:public AA{/*類體略*/};
int main()
}
BB X;
A n=1;//1
B setN(2);//2
C k=3;//3
D setK(4);//4
return 0;
}
在標注號碼的四條語句中正確的是( )。
A.1
B.2
C.3
D.4
40、 有如下頭文件:
int fl();
static int f2();
class MA{
public:
int f3();
static int f4();
};
在所描述的函數(shù)中,具有隱含的this指針的是( )。
A.fl
B.f2
C.f3
D.f4
二、基本操作題(18分)
41、
請使用VC6或使用【答題】菜單打開考生文件夾projl下的工程projl,該工程中包含程序文件main.epp,其中有類Door(“門”)和主函數(shù)main的定義。程序中位于每個“//ERROR****found ****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)為:
打開503號門…門是鎖著的,打不開。
打開503號門的鎖…鎖開了。
打開503號門…門打開了。
打開503號門…門是開著的,無須再開門。
鎖上503號門…先關(guān)門...門鎖上了。
注意:只修改每個“//ERROR***********found **********”下的那一行,不要改動程序中的其他內(nèi)容。
#include
using namespace std;
class Door{
int Bum;//門號
bool closed;//true表示門關(guān)著
bool locked://true表示門鎖著
public:
Door(int nHm){
//ERROR***********found***********
nun=this一>ann:
closed=locked=true:
}
bool isClosed()const{rehlrn closed;}
//門關(guān)著時返回true,否則返回false
bool isOpened()const{return!closed;}
//門開著時返回true,否則返回false
b001 isLocked()const{retum locked;}
//門鎖著時返回true,否則返回false
bool isUnlocked()const{return!locked;}
//門未鎖時返回true,否則返回false
void open(){ //開門
cout< //ERROR***********found***********
if(closed)
cout<<”門是開著的,無須再開門?!?;
else if(10cked)
cout<<”門是鎖著的,打不開?!保?BR> else{
closed=false;
eout<<”門打開了?!?;
}
}
void close(){//關(guān)門
cout< if(closed)
cout<<”門是關(guān)著的,無須再關(guān)門。”;
else{
closed=true;
cout<<”門關(guān)上了.";
}
}
//ERROR************found************
void lock()const{//鎖門
cout< if(locked)
cout<<”門是鎖著的,無須再鎖門?!保?BR> else{
if(!closed){
cout<<”先關(guān)門...”;
closed=true;
}
locked=true:
cout<<”門鎖上了。”;
}
}
wild unlock(){//開鎖
cout< if(!locked)
cout<<”門沒有上鎖,無須再開鎖。”;
else{
locked=false;
cout<<”鎖開了?!?;
}
};
int main(){
Door door(503);
door.open();
door.unlock();
door.open();
door.open();
floor.10ck();
return 0;
}
三、簡單應(yīng)用題(24分)
42、
請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個程序文件 main.cpp,其中有類CPolygon(“多邊形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定義。請在橫線處填寫適當?shù)拇a并刪除橫線,以實現(xiàn)上述類定義。該程序的正確輸出結(jié)果應(yīng)為: 注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。 #include
{tout<<——< int area(void){return(width *height);}
class CTriangle:public CPolygon{
int length;//三角形一邊長 int height;//該邊上的高
public:
CTriangle(int l,int h):length(1),height(h){}
//*********found*********
int area(void){return(——)/2;}
};
int main(){
CRectangle rect(4,5); CTriangle trgl(4,5);
//*********found********* ______ *ppolyl,* ppoly2; ppolyl=&rect;
ppoly2=&trgl;
ppolyl->printarea(); ppoly2->printarea(); retun 0;
四、綜合應(yīng)用題(18分)
43、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明的DataList類,是一個用于表示數(shù)據(jù)表的類。s0rt成員函數(shù)的功能是將當前數(shù)據(jù)表中的元素升序排列。請編寫這個sort函數(shù)。程序的正確輸出應(yīng)為: .
排序前:7,1,3,11,6,9,12,10,8,4,5,2 排序后:l,2,3,4,5,6,7,8,9,10,11,12
要求:
補充編制的內(nèi)容寫在“//********33********”與“//********666********”兩行之問。不得修
改程序的其他部分。
注意:程序后將結(jié)果輸出到文件。ut.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為。obj文件,并且在本程序
調(diào)用。
//DataList.h
#inClude using namespaCe std; Class DataList{//數(shù)據(jù)表類
int len;
double*d: publiC:
DataList(int len,double data[]=NULL);。DataList(){delete[]d;}
int length(Constt retum len;}//數(shù)據(jù)表長度(即數(shù)據(jù)元素的個數(shù)) double getElement(int i)Const{return d[i];}
void sort();//數(shù)據(jù)表排序
void show()Const;//顯示數(shù)據(jù)表}.
void writeToFile(Char*,Const DataList&).//main.Cpp
#inClude”DataList.h”
DataList::DataList(int len,double data[]):len(1en){ d=new double[1en];
for(int i_0;i d[i]=(data==NULL?0.0:data[i]);
}
void DataList::sort(){//數(shù)據(jù)表排序//********333********
//********666********}
void DataList::show()Const{//顯示數(shù)據(jù)表
for(int i=0;i }
int main(){
double S[]={7,1,3,11,6,9,12,10,8,4,5,2}; DataList list(12,S);
Cout<<”排序前:”; list.show();
list.sort();
Cout< writeToFile(””,list); return 0;
}