一、選擇題(每小題1分,共40分)
1、有如下程序:
#include
using namespace std;
class Base{
protected:
Base(){cout<<’A’;}
Base(char C){cout< };
class Derived:public Base{
public:
Derived(char C){tout< };
int main(){
Derived dl(’B’);
retum 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.B
B.BA
C.AB
D.BB
2、下列符號中能夠作為C++標(biāo)識符的是( )。
A.Coflst
B.2a
C._shape
D..Count
3、有如下程序:
#include
using namespace std;
class Base
{
private:
void funl()const{tout<<”funl”;}
protected:
void fun2()const{tout<<”fun2”;}
public:
void fun3()const{cout<<”fhll3”;}
};
class Derived:protected Base
{
public:
void fhn4()const{cout<<”filn4”;}
};
int main()
{
Derived obj;
obj.funl();//①
obj.fun2();//②
obj.furd();//③
obj.fun4();//④
return U:
}
其中有語法錯誤的語句是( )。
A.①②③④
B.①②③
C.②③④
D.①④
4、有如下程序:
#include
using namespace std;
class Instrument{
public:
virtual void Display()=0;
};
class Pian0:public Instrument}
public:
void Display(){/*函數(shù)體略*/}
};
intmain(){
Instrument S;
Instrument*P=0:
//…;
return 0;
}
下列敘述中正確的是( )。
A.語句“Insturment*P=0;”編譯時出錯
B.語句“Instnunent s;”編譯時出錯
C.類Pian0中的Display函數(shù)不是虛函數(shù)
D.類Instrument是一個虛基類
5、如下函數(shù)模板:
templateT square(T x){return x*x;} 其中T是( ?。?。
A.函數(shù)形參
B.函數(shù)實參
C.模板形參
D.模板實參
6、為了提高函數(shù)調(diào)用的實際運行速度,可以將較簡單的函數(shù)定義為( )。
A.內(nèi)聯(lián)函數(shù)
B.重載函數(shù)
C.遞歸函數(shù)
D.函數(shù)模板
7、有如下程序:
#inClude using namespaCe std; Class Point{
publiC:
statiC int number;
publiC:
Point( ?。﹖.number++;} ~Point( ?。﹞number--;}
}; , int P0int::number=0;
int main( ?。﹞
Point *ptr:
Point A,B; Point*ptr_point=new Point[3]; ptr=ptr_point;’
}
Point C;
Cout< return 0; }
執(zhí)行這個程序的輸出結(jié)果是( ?。?。
A.3
B.4
C.6
D.7
8、有三個關(guān)系R、S和T如下.
由關(guān)系R和s通過運算得到關(guān)系T,則所使用的運算為( )。
A.并
B.自然連接
C.笛卡爾積
D.交
9、下列符號中,正確的c++標(biāo)識符是( )。
A.enum
B.2b
C.f00一9
D._32
10、下列關(guān)于C++預(yù)定義流對象的敘述中,正確的是( )。
A.Cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對象
B.Cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流類
C.Cout是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對象
D.Cout是C++預(yù)定義的標(biāo)準(zhǔn)輸入流類
11、 下列情況中,不會調(diào)用拷貝構(gòu)造函數(shù)的是( ?。?。
A.用一個對象去初始化同一類的另一個新對象時
B.將類的一個對象賦值給該類的另一個對象時
C.函數(shù)的形參是類的對象,調(diào)用函數(shù)進行形參和實參結(jié)合時
D.函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時
12、 下列敘述中正確的是( )。
A.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的
B.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)
C.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)
D.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)與順序存儲結(jié)構(gòu)在存儲空間的需求上沒有可比性
13、 類的析構(gòu)函數(shù)的作用是( )。
A.一般成員函數(shù)的初始化
B.類的初始化
C.對象的初始化
D.刪除類創(chuàng)建的對象
14、 下列運算符不能重載為友元函數(shù)的是( )。
A.=()( )->
B. + - ++ --
C.> < >= <=
D.+= -= *=/=
15、 下面關(guān)于運算符重載的描述錯誤的是( )。
A.運算符重載不能改變操作數(shù)的個數(shù)、運算符的優(yōu)先級、運算符的結(jié)合性和運算符的語法結(jié)構(gòu)
B.不是所有的運算符都可以進行重載
C.運算符函數(shù)的調(diào)用必須使用關(guān)鍵字operat。
D.在C+十語言中不可通過運算符重載創(chuàng)造出新的運算符
16、 當(dāng)使用fstream流類定義一個流對象并打開一個磁盤文件時,文件的隱含打開方式為( )。
A.ios::in
B.ios::0ut
C.ios::in I ios::0ut
D.以上都不對
17、 由于常對象不能被更新,因此( )。
A.通過常對象只能調(diào)用它的常成員函數(shù)
B.通過常對象只能調(diào)用靜態(tài)成員函數(shù)
C.常對象的成員都是常成員
D.通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)
18、 支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是( )。
A.棧
B.樹
C.隊列
D.二叉樹
19、 有如下類定義:
class B
{
public:void funl(){}
private:void fun2(){}
protected:void fun3(){}
};
class D:public B
j
protected:void fun4(){}
};
若obj是類D的對象,則下列語句中不違反訪問控制權(quán)限的是( ?。?BR> A.obj.fun1();
B.obj.fun2();
C.obj.tim3();
D.ohj.fun4();
20、 有如下語句序列:
Char str[10];Cin>>str;
當(dāng)從鍵盤輸入“I love this game”時,str中的字符串是( )。
A.”I love this game”
B.”I love thi”
C.”I love”
D.”I”
21、 繼承機制的作用是( )。
A.信息隱藏
B.?dāng)?shù)據(jù)封裝
C.定義新類
D.?dāng)?shù)據(jù)抽象
22、 模板對類型的參數(shù)化提供了很好的支持,因此( ?。?。
A.類模板的主要作用是生成抽象類
B.類模板實例化時,編譯器將根據(jù)給出的模板實參生成一個類
C.在類模板中的數(shù)據(jù)成員都具有同樣類型
D.類模板中的成員函數(shù)都沒有返回值
23、if語句的語法格式可描述為:
格式l:if(<條件>)<語句>
或
格式2:if(<條件>)<語句l>
else<語句2>
關(guān)于上面的語法格式,下列表述中錯誤的是( ?。?。
A.<條件>部分可以是一個if語句,例如if(if(a==0)…)…
B.<語句>部分可以是一個if語句,例如if(…)if(…)…
C.如果在<條件>前加上邏輯非運算符!并交換<語句l>和<語句2>的位置,語句功能不變
D.<語句>部分可以是一個循環(huán)語句,例如if(…)while(…)…
24、 下面的程序中,錯誤的語句是( ?。?。
①#inClude
②void main()
③{
④ int *p=new int[1];
⑧P=9;
⑥cout<<.*P< ⑦delete[]p;
⑧}
A.④
B.⑤
C.⑥
D.⑦
25、 下面有關(guān)for循環(huán)的正確描述是( )。
A.for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況
B.for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷表達式
C.在for循環(huán)中,不能用break語句跳出循環(huán)體
D.在for循環(huán)的循環(huán)體語句中,可以包含多條語句,但必須用花括號括起來
26、 下列敘述中正確的是( )。
A.算法就是程序
B.設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計
C.設(shè)計算法時只需要考慮結(jié)果的可靠性
D.以上三種說法都不對
27、 由于常對象不能被更新,因此( )。
A.通過常對象只能調(diào)用它的常成員函數(shù)
B.通過常對象只能調(diào)用靜態(tài)成員函數(shù)
C.常對象的成員都是常成員
D.通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)
28、 有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(){cout<<’A’;}
MyClass(char C.{cout< ~MyClass(){cout<<’B’;}
};
int main(){
MyClass pl,+p2;
p2=new MyClass(’X’);
delete p2;
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( ?。?。
A.ABX
B.ABXB
C.AXB
D.AXBB
29、有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get(){return m;}
int get()const{return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
tout< return U:
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.33
B.38
C.83
D.88
30、 執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是( ?。?。
for(int i=50;i>1;--i) Cout<<'*':
A.48
B.49
C.50
D.51
31、 有三個關(guān)系R、S和T如下:
則由關(guān)系R和S得到關(guān)系T的操作是( )。
A.自然連接
B.交
C.投影
D.并
32、 軟件測試的目的是( )。
A.評估軟件可靠性
B.發(fā)現(xiàn)并改正程序中的錯誤
C.改正程序中的錯誤
D.發(fā)現(xiàn)程序中的錯誤
33、 軟件設(shè)計中劃分模塊的一個準(zhǔn)則是( )。
A.低內(nèi)聚低耦合
B.高內(nèi)聚低耦合
C.低內(nèi)聚高耦合
D.高內(nèi)聚高耦合
34、 下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進后出”原則存取數(shù)據(jù)的是( )。
A.循環(huán)隊列
B.棧
C.隊列
D.二叉樹
35、 有如下程序:
#inClude using namespaCe std; Class Base{
publiC:
Base(int x=0){Cout< Class Derived:publiC Base{ publiC:
Derived(int X=0){Cout< Base val; };
int main() {
Derived d(1); return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.0
B.1
C.01
D.001
36、 已知Value是一個類,value是Value的一個對象。下列以非成員函數(shù)形式重載的運算符函數(shù)原型中,正確的是( )。
A.Value operator+(Value v,int i);
B.Value operator+(Value v=value,int i);
C.Value operator+(Value v,inl:i=0):
D.Value operator+(Value v=vallle,int i=0);
37、 有如下程序段:
int i=0,J=1;
nt&r=i;//④ ’ r=j;//②
int * P=&i;//③ * P=&r;//④
其中會產(chǎn)生編譯錯誤的語句是( ?。?。
A.④
B.③
C.②
D.①
38、 有如下程序:
﹟nclude
using namespace std;
int main()
{
int*P;
*P=9:
cout<<”The value at p:”<< *p;
return 0;
}
編譯運行程序?qū)⒊霈F(xiàn)的情況是( )。
A.編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件
B.運行時一定輸出:l'lle value at P:9
C.運行時一定輸出:llle value at P:*9
D.運行時有可能出錯
39、 在軟件設(shè)計中不使用的工具是( )。
A.系統(tǒng)結(jié)構(gòu)圖
B.PAD圖
C.?dāng)?shù)據(jù)流圖(DFD圖)
D.程序流程圖
40、 C++中的模板包括( ?。?。
A.對象模板和函數(shù)模板
B.對象模板和類模板
C.函數(shù)模板和類模板
D.變量模板和對象模板
1、有如下程序:
#include
using namespace std;
class Base{
protected:
Base(){cout<<’A’;}
Base(char C){cout< };
class Derived:public Base{
public:
Derived(char C){tout< };
int main(){
Derived dl(’B’);
retum 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.B
B.BA
C.AB
D.BB
2、下列符號中能夠作為C++標(biāo)識符的是( )。
A.Coflst
B.2a
C._shape
D..Count
3、有如下程序:
#include
using namespace std;
class Base
{
private:
void funl()const{tout<<”funl”;}
protected:
void fun2()const{tout<<”fun2”;}
public:
void fun3()const{cout<<”fhll3”;}
};
class Derived:protected Base
{
public:
void fhn4()const{cout<<”filn4”;}
};
int main()
{
Derived obj;
obj.funl();//①
obj.fun2();//②
obj.furd();//③
obj.fun4();//④
return U:
}
其中有語法錯誤的語句是( )。
A.①②③④
B.①②③
C.②③④
D.①④
4、有如下程序:
#include
using namespace std;
class Instrument{
public:
virtual void Display()=0;
};
class Pian0:public Instrument}
public:
void Display(){/*函數(shù)體略*/}
};
intmain(){
Instrument S;
Instrument*P=0:
//…;
return 0;
}
下列敘述中正確的是( )。
A.語句“Insturment*P=0;”編譯時出錯
B.語句“Instnunent s;”編譯時出錯
C.類Pian0中的Display函數(shù)不是虛函數(shù)
D.類Instrument是一個虛基類
5、如下函數(shù)模板:
templateT square(T x){return x*x;} 其中T是( ?。?。
A.函數(shù)形參
B.函數(shù)實參
C.模板形參
D.模板實參
6、為了提高函數(shù)調(diào)用的實際運行速度,可以將較簡單的函數(shù)定義為( )。
A.內(nèi)聯(lián)函數(shù)
B.重載函數(shù)
C.遞歸函數(shù)
D.函數(shù)模板
7、有如下程序:
#inClude using namespaCe std; Class Point{
publiC:
statiC int number;
publiC:
Point( ?。﹖.number++;} ~Point( ?。﹞number--;}
}; , int P0int::number=0;
int main( ?。﹞
Point *ptr:
Point A,B; Point*ptr_point=new Point[3]; ptr=ptr_point;’
}
Point C;
Cout< return 0; }
執(zhí)行這個程序的輸出結(jié)果是( ?。?。
A.3
B.4
C.6
D.7
8、有三個關(guān)系R、S和T如下.
由關(guān)系R和s通過運算得到關(guān)系T,則所使用的運算為( )。
A.并
B.自然連接
C.笛卡爾積
D.交
9、下列符號中,正確的c++標(biāo)識符是( )。
A.enum
B.2b
C.f00一9
D._32
10、下列關(guān)于C++預(yù)定義流對象的敘述中,正確的是( )。
A.Cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對象
B.Cin是C++預(yù)定義的標(biāo)準(zhǔn)輸入流類
C.Cout是C++預(yù)定義的標(biāo)準(zhǔn)輸入流對象
D.Cout是C++預(yù)定義的標(biāo)準(zhǔn)輸入流類
11、 下列情況中,不會調(diào)用拷貝構(gòu)造函數(shù)的是( ?。?。
A.用一個對象去初始化同一類的另一個新對象時
B.將類的一個對象賦值給該類的另一個對象時
C.函數(shù)的形參是類的對象,調(diào)用函數(shù)進行形參和實參結(jié)合時
D.函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時
12、 下列敘述中正確的是( )。
A.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的
B.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)
C.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)
D.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)與順序存儲結(jié)構(gòu)在存儲空間的需求上沒有可比性
13、 類的析構(gòu)函數(shù)的作用是( )。
A.一般成員函數(shù)的初始化
B.類的初始化
C.對象的初始化
D.刪除類創(chuàng)建的對象
14、 下列運算符不能重載為友元函數(shù)的是( )。
A.=()( )->
B. + - ++ --
C.> < >= <=
D.+= -= *=/=
15、 下面關(guān)于運算符重載的描述錯誤的是( )。
A.運算符重載不能改變操作數(shù)的個數(shù)、運算符的優(yōu)先級、運算符的結(jié)合性和運算符的語法結(jié)構(gòu)
B.不是所有的運算符都可以進行重載
C.運算符函數(shù)的調(diào)用必須使用關(guān)鍵字operat。
D.在C+十語言中不可通過運算符重載創(chuàng)造出新的運算符
16、 當(dāng)使用fstream流類定義一個流對象并打開一個磁盤文件時,文件的隱含打開方式為( )。
A.ios::in
B.ios::0ut
C.ios::in I ios::0ut
D.以上都不對
17、 由于常對象不能被更新,因此( )。
A.通過常對象只能調(diào)用它的常成員函數(shù)
B.通過常對象只能調(diào)用靜態(tài)成員函數(shù)
C.常對象的成員都是常成員
D.通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)
18、 支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是( )。
A.棧
B.樹
C.隊列
D.二叉樹
19、 有如下類定義:
class B
{
public:void funl(){}
private:void fun2(){}
protected:void fun3(){}
};
class D:public B
j
protected:void fun4(){}
};
若obj是類D的對象,則下列語句中不違反訪問控制權(quán)限的是( ?。?BR> A.obj.fun1();
B.obj.fun2();
C.obj.tim3();
D.ohj.fun4();
20、 有如下語句序列:
Char str[10];Cin>>str;
當(dāng)從鍵盤輸入“I love this game”時,str中的字符串是( )。
A.”I love this game”
B.”I love thi”
C.”I love”
D.”I”
21、 繼承機制的作用是( )。
A.信息隱藏
B.?dāng)?shù)據(jù)封裝
C.定義新類
D.?dāng)?shù)據(jù)抽象
22、 模板對類型的參數(shù)化提供了很好的支持,因此( ?。?。
A.類模板的主要作用是生成抽象類
B.類模板實例化時,編譯器將根據(jù)給出的模板實參生成一個類
C.在類模板中的數(shù)據(jù)成員都具有同樣類型
D.類模板中的成員函數(shù)都沒有返回值
23、if語句的語法格式可描述為:
格式l:if(<條件>)<語句>
或
格式2:if(<條件>)<語句l>
else<語句2>
關(guān)于上面的語法格式,下列表述中錯誤的是( ?。?。
A.<條件>部分可以是一個if語句,例如if(if(a==0)…)…
B.<語句>部分可以是一個if語句,例如if(…)if(…)…
C.如果在<條件>前加上邏輯非運算符!并交換<語句l>和<語句2>的位置,語句功能不變
D.<語句>部分可以是一個循環(huán)語句,例如if(…)while(…)…
24、 下面的程序中,錯誤的語句是( ?。?。
①#inClude
②void main()
③{
④ int *p=new int[1];
⑧P=9;
⑥cout<<.*P< ⑦delete[]p;
⑧}
A.④
B.⑤
C.⑥
D.⑦
25、 下面有關(guān)for循環(huán)的正確描述是( )。
A.for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況
B.for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷表達式
C.在for循環(huán)中,不能用break語句跳出循環(huán)體
D.在for循環(huán)的循環(huán)體語句中,可以包含多條語句,但必須用花括號括起來
26、 下列敘述中正確的是( )。
A.算法就是程序
B.設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計
C.設(shè)計算法時只需要考慮結(jié)果的可靠性
D.以上三種說法都不對
27、 由于常對象不能被更新,因此( )。
A.通過常對象只能調(diào)用它的常成員函數(shù)
B.通過常對象只能調(diào)用靜態(tài)成員函數(shù)
C.常對象的成員都是常成員
D.通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)
28、 有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(){cout<<’A’;}
MyClass(char C.{cout< ~MyClass(){cout<<’B’;}
};
int main(){
MyClass pl,+p2;
p2=new MyClass(’X’);
delete p2;
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( ?。?。
A.ABX
B.ABXB
C.AXB
D.AXBB
29、有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get(){return m;}
int get()const{return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
tout< return U:
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.33
B.38
C.83
D.88
30、 執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是( ?。?。
for(int i=50;i>1;--i) Cout<<'*':
A.48
B.49
C.50
D.51
31、 有三個關(guān)系R、S和T如下:
則由關(guān)系R和S得到關(guān)系T的操作是( )。
A.自然連接
B.交
C.投影
D.并
32、 軟件測試的目的是( )。
A.評估軟件可靠性
B.發(fā)現(xiàn)并改正程序中的錯誤
C.改正程序中的錯誤
D.發(fā)現(xiàn)程序中的錯誤
33、 軟件設(shè)計中劃分模塊的一個準(zhǔn)則是( )。
A.低內(nèi)聚低耦合
B.高內(nèi)聚低耦合
C.低內(nèi)聚高耦合
D.高內(nèi)聚高耦合
34、 下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進后出”原則存取數(shù)據(jù)的是( )。
A.循環(huán)隊列
B.棧
C.隊列
D.二叉樹
35、 有如下程序:
#inClude using namespaCe std; Class Base{
publiC:
Base(int x=0){Cout< Class Derived:publiC Base{ publiC:
Derived(int X=0){Cout< Base val; };
int main() {
Derived d(1); return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.0
B.1
C.01
D.001
36、 已知Value是一個類,value是Value的一個對象。下列以非成員函數(shù)形式重載的運算符函數(shù)原型中,正確的是( )。
A.Value operator+(Value v,int i);
B.Value operator+(Value v=value,int i);
C.Value operator+(Value v,inl:i=0):
D.Value operator+(Value v=vallle,int i=0);
37、 有如下程序段:
int i=0,J=1;
nt&r=i;//④ ’ r=j;//②
int * P=&i;//③ * P=&r;//④
其中會產(chǎn)生編譯錯誤的語句是( ?。?。
A.④
B.③
C.②
D.①
38、 有如下程序:
﹟nclude
using namespace std;
int main()
{
int*P;
*P=9:
cout<<”The value at p:”<< *p;
return 0;
}
編譯運行程序?qū)⒊霈F(xiàn)的情況是( )。
A.編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件
B.運行時一定輸出:l'lle value at P:9
C.運行時一定輸出:llle value at P:*9
D.運行時有可能出錯
39、 在軟件設(shè)計中不使用的工具是( )。
A.系統(tǒng)結(jié)構(gòu)圖
B.PAD圖
C.?dāng)?shù)據(jù)流圖(DFD圖)
D.程序流程圖
40、 C++中的模板包括( ?。?。
A.對象模板和函數(shù)模板
B.對象模板和類模板
C.函數(shù)模板和類模板
D.變量模板和對象模板