一、選擇題(每小題1分,共40分)
1、關(guān)于運(yùn)算符重載,下列表述中正確的是( )。
A.c++已有的任何運(yùn)算符都可以重載
B.運(yùn)算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型
C.在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型
D.可以通過運(yùn)算符重載來創(chuàng)建c++中原來沒有的運(yùn)算符
2、在類的定義中,用于為對象分配內(nèi)存空間,對類的數(shù)據(jù)成員進(jìn)行初始化并執(zhí)行其他內(nèi)部管理操作的函數(shù)是( )。
A.友元函數(shù)
B.虛函數(shù)
C.構(gòu)造函數(shù)
D.析構(gòu)函數(shù)
3、軟件設(shè)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是( )。
A.低內(nèi)聚低耦合
B.高內(nèi)聚低耦合
C.低內(nèi)聚高耦合
D.高內(nèi)聚高耦合
4、如果類A被說明成類B的友元,則( )。
A.類A的成員即類B的成員
B.類B的成員即類A的成員
C.類A的成員函數(shù)不得訪問類B的成員
D.類B不一定是類A的友元
5、有如下類定義:
class Foo
{
public:
Foo(int v):value(V){}//①
~Foo(){}//②
private:
Foo(){}//③
int value=0://④
};
其中存在語法錯誤的行是( ?。?。
A.①
B.②
C.③
D.④
6、下面關(guān)于數(shù)組的描述錯誤的是( )。
A.在C++語言中數(shù)組的名字就是指向該數(shù)組第一個元素的指針
B.長度為n的數(shù)組,下標(biāo)的范圍是0~n-1
C.?dāng)?shù)組的大小必須在編譯時確定
D.?dāng)?shù)組只能通過值參數(shù)和引用參數(shù)兩種方式傳遞給函數(shù)
7、運(yùn)算符重載是對已有的運(yùn)算符賦予多重含義,因此( )。
A.可以對基本類型(如int類型)的數(shù)據(jù),重新定義“+”運(yùn)算符的含義
B.可以改變一個已有運(yùn)算符的優(yōu)先級和操作數(shù)個數(shù)
C.只能重載c++中已經(jīng)有的運(yùn)算符,不能定義新運(yùn)算符
D.C++中已經(jīng)有的所有運(yùn)算符都可以重載
8、有如下類和對象的定義:
class Constants{
public:
static double getPI(){return 3.1416;}
};
Constants constants:
下列各組語句中,能輸出3.1416的是( )。
A.cout D.cout<
9、 程序流程圖中帶有箭頭的線段表示的是( )。
A.圖元關(guān)系
B.?dāng)?shù)據(jù)流
C.控制流
D.調(diào)用關(guān)系
10、下列程序的執(zhí)行結(jié)果為( )。
#include
void main()
{
int a=3,b=0;
int*P =&a;
b=+a++;
cout<<*P<<”,”< }
A.3,4
B.4,3
C.3,4
D.4,4
11、 對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(rt一1)/2的排序方法是( )。
A.快速排序
B.冒泡排序
C.直接插入排序
D.堆排序
12、 字面常量42、4.2、42L的數(shù)據(jù)類型分別是( )。
A.long,double、int
B.lon9、float、int
C.int、double、long
D.int、float、long
13、 下列敘述中正確的是( ?。?。
A.棧是“先進(jìn)先出”的線性表
B.隊(duì)列是“先進(jìn)后出”的線性表
C.循環(huán)隊(duì)列是非線性結(jié)構(gòu)
D.有序線性表既可以采用順序存儲結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)
14、 不能作為重載函數(shù)的調(diào)用的依據(jù)是( ?。?BR> A.參數(shù)個數(shù)
B.參數(shù)類型
C.函數(shù)類型
D.函數(shù)名稱
15、 下列語句中,錯誤的是( ?。?。
A.const int buffer=256;
B.const double*point;
C.int const buffer=256;
D.double*eonst point:
16、 下列運(yùn)算符中,在c++語言中不能重載的是( )。
A.*
B.>=
C.::
D./
17、 有如下說明:
int a[10]={1,2,3,4,5,6,7,8,9,10},* P=a; 則數(shù)值為9的表達(dá)式是( )。
A.*P+9
B.木(P+8)
C.*P+=9
D.P+8
18、 執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是( )。
for(int i=50;i>1;i-=2)Cout<<'*':
A.24
B.25
C.26
D.50
19、 算法的有窮性是指( )。
A.算法程序的運(yùn)行時間是有限的
B.算法程序所處理的數(shù)據(jù)量是有限的
C.算法程序的長度是有限的
D.算法只能被有限的用戶使用
20、 下面關(guān)于break語句的描述中,不正確的是( )。
A.break可以用于循環(huán)體內(nèi)
B.break語句可以在for循環(huán)語句中出現(xiàn)多次
C.break語句可以在switch語句中出現(xiàn)多次
D.break語句可用于if條件判斷語句內(nèi)
21、 有如下類定義:
class Point
{
int xx.yy;
public:
Point():xx(0),yy(0){}
Point(int x,int Y=0):xx(X),YY(Y){}
};
若執(zhí)行語句
Point a(2),b[3],幸c[4];
則Point類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是( ?。?。
A.2次
B.3次
C.4次
D.5次
22、 有如下程序:
#include
using namespace std;
class Basel
{
public:
BaseI(int D.{cout< 一Basel(){}
};
class Base2
{
public:
Base2(int D.{tout< ~Base2(){}
};
class Derived:public Basel,Base2
{
public:
Derived(int a,int b,int c,int D.:Basel(B.,Base2(A.,bl(D.,b2(C.{}
private:
int bl:
int b2:
};
int main()
{
Derived d(1,2,3,4);
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( ?。?。
A.1234
B.2134
C.12
D.21
23、 以下敘述正確的是( )。
A.函數(shù)可以嵌套定義但不能嵌套調(diào)用
B.函數(shù)既可以嵌套調(diào)用也可以嵌套定義
C.函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用
D.函數(shù)可以嵌套調(diào)用但不可以嵌套定義
24、 必須用一對大括號括起來的程序段是( )。
A.switCh語句中的Case標(biāo)號語句
B.if語句的分支
C.循環(huán)語句的循環(huán)體
D.函數(shù)的函數(shù)體
25、 軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是( )。
A.學(xué)生成績管理系統(tǒng)
B.C語言編譯程序
C.UNIX操作系統(tǒng)
D.?dāng)?shù)據(jù)庫管理系統(tǒng)
26、 下面程序的運(yùn)行結(jié)果為( )。
#include
void main()
{
for(int a=0,x=0;!x&&a<=10;a++)
{
a++:
}
cout< }
A.10
B.1l
C.12
D.0
27、 有如下程序:
#include
using namespace std;
int i=1;
class Fun{
public:
static int i;
int value(){return i—l;}
int value()const{return i+1;}
};
int Fun::i=2;
int main(){
int i=3;
Fun funl;
const Fun fun2:
__________________
return 0;
}
若程序的輸出結(jié)果是:
123
則程序中下畫線處遺漏的語句是( ?。?。
A.cout 28、 下列有關(guān)模板的敘述中,正確的是( )。
A.函數(shù)模板不能含有常規(guī)形參
B.函數(shù)模板的一個實(shí)例就是一個函數(shù)定義
C.類模板的成員函數(shù)不能是模板函數(shù)
D.用類模板定義對象時,絕對不能省略模板實(shí)參
29、 運(yùn)算符重載時不需要保持的性質(zhì)是( )。
A.操作數(shù)個數(shù)
B.操作數(shù)類型
C.優(yōu)先級
D.結(jié)合性
30、 下列程序的輸出結(jié)果為( )。
#include {
if(n<1)return l;
else return n+time(n一1); return 0;
}
void main() {
cout< }
A.0
B.10
C.15
D.16
31、 有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(int i=0){cout<<1;}
MyClass(const MyClass&x){cout<<2;}
MyClass&operator=(const MyClass&x){cout<<3;retum$this;}
~MyClass()}cout<<4;}
};
int main()
{
MyClass objl(1),obj2(2),obj3(objl);
retum 0;
{
執(zhí)行這個程序的輸出結(jié)果是( )。
A.112444
B.11114444
C.121444
D.11314444
32、 在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是( )。
A.外模式
B.內(nèi)模式
C.概念模式
D.邏輯模式
33、 有如下程序:
#inClude using namespaCe std; Class Base{
publiC:
void output(){Cout<<1;}
virtual void Print(){Cout<<'B’;} };
Class Derived:publiC Base{ publiC:
void output(){Cout<<2;} void Print(){Cout<<’D ';} };
int main() {
Base * ptr=new Derived; ptr一>output();
ptr一>Print(); delete ptr;
retum0; }
執(zhí)行這個程序的輸出結(jié)果是( )。
A.1B
B.lD
C.2B
D.2D
34、以下程序中,錯誤的行為是( )。
①#include
②class A
③{
④public:
⑤ int n=2;
⑥ A(int val){cout< ⑦ -A(){};
⑧};
⑨void main() ⑩{
? A a(0);
?}
A.⑤
B.⑥
C.⑦
D.?
35、 下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是( )。
A.循環(huán)隊(duì)列
B.帶鏈隊(duì)列
C.二叉樹
D.帶鏈棧
36、 有如下程序:
#inClude using namespaCe std; Class A{
publiC:
statiC int a;
void init( ?。﹞。a=1;}
A(int a=2){init( ?。?;a++;} };
int A::a:0: A obj;
int main( ?。?{
Cout< }
運(yùn)行時輸出的結(jié)果是( ?。?BR> A.0
B.1
C.2
D.3
38、 秘序調(diào)試的任務(wù)是( )。
A.設(shè)計(jì)測試用例
B.驗(yàn)證程序的正確性
C.發(fā)現(xiàn)程序中的錯誤
D.診斷和改正程序中的錯誤
39、 有如下程序:
#include
using namespace std;
class A{
public:
virtual void fancl(){cout<<”Al”;}
void func2(){cout<<”A2”;}
};
class B:public A{
public:
void funcI(){tout<<”Bl”;}
void func2(){tout<<”B2”;}
};
intmain()}
A*P=new B:
P—>funcl();
P—>func2();
delete p;
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( ?。?。
A.B182
B.A1A2
C.B1A2
D.AIB2
40、 下列字符串中。不可以用做c++標(biāo)識符的是( ?。?。
A.y_2006
B._EST_H
C.Return
D.switch
1、關(guān)于運(yùn)算符重載,下列表述中正確的是( )。
A.c++已有的任何運(yùn)算符都可以重載
B.運(yùn)算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型
C.在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型
D.可以通過運(yùn)算符重載來創(chuàng)建c++中原來沒有的運(yùn)算符
2、在類的定義中,用于為對象分配內(nèi)存空間,對類的數(shù)據(jù)成員進(jìn)行初始化并執(zhí)行其他內(nèi)部管理操作的函數(shù)是( )。
A.友元函數(shù)
B.虛函數(shù)
C.構(gòu)造函數(shù)
D.析構(gòu)函數(shù)
3、軟件設(shè)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是( )。
A.低內(nèi)聚低耦合
B.高內(nèi)聚低耦合
C.低內(nèi)聚高耦合
D.高內(nèi)聚高耦合
4、如果類A被說明成類B的友元,則( )。
A.類A的成員即類B的成員
B.類B的成員即類A的成員
C.類A的成員函數(shù)不得訪問類B的成員
D.類B不一定是類A的友元
5、有如下類定義:
class Foo
{
public:
Foo(int v):value(V){}//①
~Foo(){}//②
private:
Foo(){}//③
int value=0://④
};
其中存在語法錯誤的行是( ?。?。
A.①
B.②
C.③
D.④
6、下面關(guān)于數(shù)組的描述錯誤的是( )。
A.在C++語言中數(shù)組的名字就是指向該數(shù)組第一個元素的指針
B.長度為n的數(shù)組,下標(biāo)的范圍是0~n-1
C.?dāng)?shù)組的大小必須在編譯時確定
D.?dāng)?shù)組只能通過值參數(shù)和引用參數(shù)兩種方式傳遞給函數(shù)
7、運(yùn)算符重載是對已有的運(yùn)算符賦予多重含義,因此( )。
A.可以對基本類型(如int類型)的數(shù)據(jù),重新定義“+”運(yùn)算符的含義
B.可以改變一個已有運(yùn)算符的優(yōu)先級和操作數(shù)個數(shù)
C.只能重載c++中已經(jīng)有的運(yùn)算符,不能定義新運(yùn)算符
D.C++中已經(jīng)有的所有運(yùn)算符都可以重載
8、有如下類和對象的定義:
class Constants{
public:
static double getPI(){return 3.1416;}
};
Constants constants:
下列各組語句中,能輸出3.1416的是( )。
A.cout
9、 程序流程圖中帶有箭頭的線段表示的是( )。
A.圖元關(guān)系
B.?dāng)?shù)據(jù)流
C.控制流
D.調(diào)用關(guān)系
10、下列程序的執(zhí)行結(jié)果為( )。
#include
void main()
{
int a=3,b=0;
int*P =&a;
b=+a++;
cout<<*P<<”,”< }
A.3,4
B.4,3
C.3,4
D.4,4
11、 對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(rt一1)/2的排序方法是( )。
A.快速排序
B.冒泡排序
C.直接插入排序
D.堆排序
12、 字面常量42、4.2、42L的數(shù)據(jù)類型分別是( )。
A.long,double、int
B.lon9、float、int
C.int、double、long
D.int、float、long
13、 下列敘述中正確的是( ?。?。
A.棧是“先進(jìn)先出”的線性表
B.隊(duì)列是“先進(jìn)后出”的線性表
C.循環(huán)隊(duì)列是非線性結(jié)構(gòu)
D.有序線性表既可以采用順序存儲結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)
14、 不能作為重載函數(shù)的調(diào)用的依據(jù)是( ?。?BR> A.參數(shù)個數(shù)
B.參數(shù)類型
C.函數(shù)類型
D.函數(shù)名稱
15、 下列語句中,錯誤的是( ?。?。
A.const int buffer=256;
B.const double*point;
C.int const buffer=256;
D.double*eonst point:
16、 下列運(yùn)算符中,在c++語言中不能重載的是( )。
A.*
B.>=
C.::
D./
17、 有如下說明:
int a[10]={1,2,3,4,5,6,7,8,9,10},* P=a; 則數(shù)值為9的表達(dá)式是( )。
A.*P+9
B.木(P+8)
C.*P+=9
D.P+8
18、 執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是( )。
for(int i=50;i>1;i-=2)Cout<<'*':
A.24
B.25
C.26
D.50
19、 算法的有窮性是指( )。
A.算法程序的運(yùn)行時間是有限的
B.算法程序所處理的數(shù)據(jù)量是有限的
C.算法程序的長度是有限的
D.算法只能被有限的用戶使用
20、 下面關(guān)于break語句的描述中,不正確的是( )。
A.break可以用于循環(huán)體內(nèi)
B.break語句可以在for循環(huán)語句中出現(xiàn)多次
C.break語句可以在switch語句中出現(xiàn)多次
D.break語句可用于if條件判斷語句內(nèi)
21、 有如下類定義:
class Point
{
int xx.yy;
public:
Point():xx(0),yy(0){}
Point(int x,int Y=0):xx(X),YY(Y){}
};
若執(zhí)行語句
Point a(2),b[3],幸c[4];
則Point類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是( ?。?。
A.2次
B.3次
C.4次
D.5次
22、 有如下程序:
#include
using namespace std;
class Basel
{
public:
BaseI(int D.{cout< 一Basel(){}
};
class Base2
{
public:
Base2(int D.{tout< ~Base2(){}
};
class Derived:public Basel,Base2
{
public:
Derived(int a,int b,int c,int D.:Basel(B.,Base2(A.,bl(D.,b2(C.{}
private:
int bl:
int b2:
};
int main()
{
Derived d(1,2,3,4);
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( ?。?。
A.1234
B.2134
C.12
D.21
23、 以下敘述正確的是( )。
A.函數(shù)可以嵌套定義但不能嵌套調(diào)用
B.函數(shù)既可以嵌套調(diào)用也可以嵌套定義
C.函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用
D.函數(shù)可以嵌套調(diào)用但不可以嵌套定義
24、 必須用一對大括號括起來的程序段是( )。
A.switCh語句中的Case標(biāo)號語句
B.if語句的分支
C.循環(huán)語句的循環(huán)體
D.函數(shù)的函數(shù)體
25、 軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是( )。
A.學(xué)生成績管理系統(tǒng)
B.C語言編譯程序
C.UNIX操作系統(tǒng)
D.?dāng)?shù)據(jù)庫管理系統(tǒng)
26、 下面程序的運(yùn)行結(jié)果為( )。
#include
void main()
{
for(int a=0,x=0;!x&&a<=10;a++)
{
a++:
}
cout< }
A.10
B.1l
C.12
D.0
27、 有如下程序:
#include
using namespace std;
int i=1;
class Fun{
public:
static int i;
int value(){return i—l;}
int value()const{return i+1;}
};
int Fun::i=2;
int main(){
int i=3;
Fun funl;
const Fun fun2:
__________________
return 0;
}
若程序的輸出結(jié)果是:
123
則程序中下畫線處遺漏的語句是( ?。?。
A.cout 28、 下列有關(guān)模板的敘述中,正確的是( )。
A.函數(shù)模板不能含有常規(guī)形參
B.函數(shù)模板的一個實(shí)例就是一個函數(shù)定義
C.類模板的成員函數(shù)不能是模板函數(shù)
D.用類模板定義對象時,絕對不能省略模板實(shí)參
29、 運(yùn)算符重載時不需要保持的性質(zhì)是( )。
A.操作數(shù)個數(shù)
B.操作數(shù)類型
C.優(yōu)先級
D.結(jié)合性
30、 下列程序的輸出結(jié)果為( )。
#include {
if(n<1)return l;
else return n+time(n一1); return 0;
}
void main() {
cout< }
A.0
B.10
C.15
D.16
31、 有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(int i=0){cout<<1;}
MyClass(const MyClass&x){cout<<2;}
MyClass&operator=(const MyClass&x){cout<<3;retum$this;}
~MyClass()}cout<<4;}
};
int main()
{
MyClass objl(1),obj2(2),obj3(objl);
retum 0;
{
執(zhí)行這個程序的輸出結(jié)果是( )。
A.112444
B.11114444
C.121444
D.11314444
32、 在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是( )。
A.外模式
B.內(nèi)模式
C.概念模式
D.邏輯模式
33、 有如下程序:
#inClude using namespaCe std; Class Base{
publiC:
void output(){Cout<<1;}
virtual void Print(){Cout<<'B’;} };
Class Derived:publiC Base{ publiC:
void output(){Cout<<2;} void Print(){Cout<<’D ';} };
int main() {
Base * ptr=new Derived; ptr一>output();
ptr一>Print(); delete ptr;
retum0; }
執(zhí)行這個程序的輸出結(jié)果是( )。
A.1B
B.lD
C.2B
D.2D
34、以下程序中,錯誤的行為是( )。
①#include
②class A
③{
④public:
⑤ int n=2;
⑥ A(int val){cout< ⑦ -A(){};
⑧};
⑨void main() ⑩{
? A a(0);
?}
A.⑤
B.⑥
C.⑦
D.?
35、 下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是( )。
A.循環(huán)隊(duì)列
B.帶鏈隊(duì)列
C.二叉樹
D.帶鏈棧
36、 有如下程序:
#inClude using namespaCe std; Class A{
publiC:
statiC int a;
void init( ?。﹞。a=1;}
A(int a=2){init( ?。?;a++;} };
int A::a:0: A obj;
int main( ?。?{
Cout< }
運(yùn)行時輸出的結(jié)果是( ?。?BR> A.0
B.1
C.2
D.3
38、 秘序調(diào)試的任務(wù)是( )。
A.設(shè)計(jì)測試用例
B.驗(yàn)證程序的正確性
C.發(fā)現(xiàn)程序中的錯誤
D.診斷和改正程序中的錯誤
39、 有如下程序:
#include
using namespace std;
class A{
public:
virtual void fancl(){cout<<”Al”;}
void func2(){cout<<”A2”;}
};
class B:public A{
public:
void funcI(){tout<<”Bl”;}
void func2(){tout<<”B2”;}
};
intmain()}
A*P=new B:
P—>funcl();
P—>func2();
delete p;
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( ?。?。
A.B182
B.A1A2
C.B1A2
D.AIB2
40、 下列字符串中。不可以用做c++標(biāo)識符的是( ?。?。
A.y_2006
B._EST_H
C.Return
D.switch

