一、單項選擇題(在每小題的四個備選答案中,選出一個正確答案,并將正確答案的序號填在題干的括號內(nèi)。每小題2分,共40分)
1.在公有繼承的情況下,基類成員在派生類中的訪問權(quán)限( )
A.受限制 B.保持不變
C.受保護(hù) D.不受保護(hù)
2.通過( )調(diào)用虛函數(shù)時,采用動態(tài)束定。
A.對象指針 B.對象名
C.成員名限定 D.派生類名
3.在int a=3,*p=&a;中,*p的值是( )
A.變量a的地址值 B.無意義
C.變量p的地址值 D. 3
4.C++類體系中,不能被派生類繼承的有( )
A.轉(zhuǎn)換函數(shù) B.構(gòu)造函數(shù)
C.虛函數(shù) D.靜態(tài)成員函數(shù)
5.假定一個類的構(gòu)造函數(shù)為A(int aa,int bb){a=aa-;b=a*bb-;},則執(zhí)行Ax(4,5);語句后,x.a和x.b的值分別為( )
A. 4和5 B. 5和4
C. 4和20 D. 20和5
6.C++對C語言作了很多改進(jìn),即從面向過程變成為面向?qū)ο蟮闹饕蚴牵?)
A.增加了一些新的運算符
B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)
C.規(guī)定函數(shù)說明符必須用原型
D.引進(jìn)了類和對象的概念
7.下列符號不能組成標(biāo)識符的是( )
A.連接符 B.下劃線
C.大小寫字母 D.數(shù)字字符
8.類型修飾符unsigned不能修飾( )
A. virtual B. int
C. long int D. float
9.一個函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,選用( )
A.內(nèi)聯(lián)函數(shù) B.重載函數(shù)
C.遞歸函數(shù) D.嵌套函數(shù)
10.下列不是描述類的成員函數(shù)的是( )
A.構(gòu)造函數(shù) B.析構(gòu)函數(shù)
C.友元函數(shù) D.拷貝構(gòu)造函數(shù)
11.C++語言中所有在函數(shù)中定義的變量,連同形式參數(shù),都屬于( )
A.全局變量 B.局部變量
C.靜態(tài)變量 D.函數(shù)
12.定義新類是通過( )實現(xiàn)的。
A.信息隱藏 B.數(shù)據(jù)封裝
C.繼承機制 D.數(shù)據(jù)抽象
13.下面有關(guān)類說法不正確的是( )
A.一個類可以有多個構(gòu)造函數(shù)
B.一個類只有一個析構(gòu)函數(shù)
C.析構(gòu)函數(shù)需要指定參數(shù)
D.在一個類中可以說明具有類類型的數(shù)據(jù)成員
14.派生類的對象只能對它的( )是可訪問的。
A.公有繼承的公有成員 B.公有繼承的私有成員
C.公有繼承的保護(hù)成員 D.私有繼承的保護(hù)成員
15.下列不能作為類的成員的是( )
A.自身類對象的指針 B.自身類對象
C.自身類對象的引用 D.另一個類的對象
16.在類中聲明轉(zhuǎn)換函數(shù)時不能指定( )
A.參數(shù) B.訪問權(quán)限
C.操作 D.標(biāo)識符
17.在派生類中重新定義虛函數(shù)時必須在( )方面與基類保持一致。
A.參數(shù)類型 B.參數(shù)名字
C.操作內(nèi)容 D.賦值
18.在私有繼承的情況下,基類成員在派生類中的訪問權(quán)限( )
A.受限制 B.保持不變
C.受保護(hù) D.不受保護(hù)
19.下面對于指針的描述不正確的是( )
A.指針是地址變量
B.指針不能用除0以外的常量賦值
C.兩個指針變量的加減法無意義
D.指針指向不同基類型的變量長度不同
20.在派生類中定義友元函數(shù)時必須在( )方面與基類保持一致。
A.參數(shù)類型 B.參數(shù)名字
C.操作內(nèi)容 D.賦值
二、填空題(每空2分,共20分)
1.在一個類中可以對一個操作符進(jìn)行_______重載。
2.在C++中有二種參數(shù)傳遞方式:______________.
3.模板對處理數(shù)據(jù)的類型的要求不同可以分為兩種類型:_______.
4.靜態(tài)聯(lián)編是在程序_______時進(jìn)行的。
5.在函數(shù)體之前加_______關(guān)鍵字可以防止覆蓋函數(shù)改變數(shù)據(jù)成員的值。
6.一個const對象只能訪問_______成員函數(shù)。
7.派生類的主要用途是可以定義其基類中_______.
8.當(dāng)建立_______,程序自動調(diào)用該類的構(gòu)造函數(shù)。
9.使用指向?qū)ο蟮闹羔榿順?biāo)識類的成員,則必須使用的運算符是_______.
10.拷貝初始化構(gòu)造函數(shù)使用_______來初始化創(chuàng)建中的對象。
三、完成程序題(每小題5分,共20分)
1.下面程序的運行結(jié)果如下所示完成填空。
#include “iostream.h”
class test{
private∶int num
float fl;
public∶ test();
int getint(){return num;}
float getfloat(){return fl;}
~test();
};
test∶∶test()
{cout《″Initializing default″《endl;
______________ }
test∶∶~test() {cout《″Desdtructor is active″《endl;}
int main()
{test array[2];
cout《array[1]。getint()《″ ″《array[1]。getfloat()《endl;}
運行結(jié)果為:
Initializing default
_____________________;∥填寫結(jié)果
0 0
Desdtructor is active
Desdtructor is active
2.定義一個日期的類來實現(xiàn)重載操作符的測試,在下面程序的底畫線處填上適當(dāng)?shù)淖志洌瓿深愔谐蓡T函數(shù)的定義。
#include
class ClassDate{
private∶
int year;
int month;
int day;
public∶ClassDate(int y=0,int d=0,int m=0){year=y,month=m,day=d;}
int getyear(){return year;}
int getmonth(){return month;}
in getday(){return day;}
____________________ (iostream & s,ClassDate &a)
{ int y,m,d;
cout《″請輸入日期:(yyyy-mm-dd)″;
s》y》m》d;
while(y>9999‖m>-1‖m<-12‖d>-1‖d<-31)
{
cout《″輸入格式有錯,請重新輸入日期:(yyyy-mm-dd)″;
s》y》m》d;
}
a.year=y;
a.month=-m;
a.day=-d;
return s;
}
_____________________∥輸出重定義
{∥輸出日期
s《″現(xiàn)在的日期是:″;
s《a.getyear()《′-′;
s《a.getmonth()《″-″《a.getday()《endl;
return s;
}
};
3.在下面程序的底畫線處填上適當(dāng)?shù)淖志洌瓿沙绦颉?BR> #include
class A{
public∶ void f(int i){cout《i《endl;}
void g(){cout《“g\n”;}
};
class ______________{
public∶void h(){cout《“h\n”;}
A∶∶f;
};
void main()
{ B d1;
d1.f(6);
______________.h();
}
4.根據(jù)運行結(jié)果,完成下面遞歸程序的填空。
#include
int f(int *x)
{
if(!(*x))
{ cout《*x《“,”;
_____________________;∥遞歸調(diào)用;
}
main()
{ int A[]={3,2,1};
int *y;
y=A;
_____________________;∥引用f;
}
運行結(jié)果是:3,2,1
四、綜合應(yīng)用題(共20分)
1.分析下列程序可能的輸出結(jié)果。(滿分8分)
#include “iostream.h”
int main()
{int i=17;
while(i>=10)
if(-i%4==3) continue;
else
cout《“i=”《i-《endl;
}
2.寫出模板函數(shù)實現(xiàn)找出三個數(shù)值中按最小值到值排序程序。(滿分12分)
1.在公有繼承的情況下,基類成員在派生類中的訪問權(quán)限( )
A.受限制 B.保持不變
C.受保護(hù) D.不受保護(hù)
2.通過( )調(diào)用虛函數(shù)時,采用動態(tài)束定。
A.對象指針 B.對象名
C.成員名限定 D.派生類名
3.在int a=3,*p=&a;中,*p的值是( )
A.變量a的地址值 B.無意義
C.變量p的地址值 D. 3
4.C++類體系中,不能被派生類繼承的有( )
A.轉(zhuǎn)換函數(shù) B.構(gòu)造函數(shù)
C.虛函數(shù) D.靜態(tài)成員函數(shù)
5.假定一個類的構(gòu)造函數(shù)為A(int aa,int bb){a=aa-;b=a*bb-;},則執(zhí)行Ax(4,5);語句后,x.a和x.b的值分別為( )
A. 4和5 B. 5和4
C. 4和20 D. 20和5
6.C++對C語言作了很多改進(jìn),即從面向過程變成為面向?qū)ο蟮闹饕蚴牵?)
A.增加了一些新的運算符
B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)
C.規(guī)定函數(shù)說明符必須用原型
D.引進(jìn)了類和對象的概念
7.下列符號不能組成標(biāo)識符的是( )
A.連接符 B.下劃線
C.大小寫字母 D.數(shù)字字符
8.類型修飾符unsigned不能修飾( )
A. virtual B. int
C. long int D. float
9.一個函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,選用( )
A.內(nèi)聯(lián)函數(shù) B.重載函數(shù)
C.遞歸函數(shù) D.嵌套函數(shù)
10.下列不是描述類的成員函數(shù)的是( )
A.構(gòu)造函數(shù) B.析構(gòu)函數(shù)
C.友元函數(shù) D.拷貝構(gòu)造函數(shù)
11.C++語言中所有在函數(shù)中定義的變量,連同形式參數(shù),都屬于( )
A.全局變量 B.局部變量
C.靜態(tài)變量 D.函數(shù)
12.定義新類是通過( )實現(xiàn)的。
A.信息隱藏 B.數(shù)據(jù)封裝
C.繼承機制 D.數(shù)據(jù)抽象
13.下面有關(guān)類說法不正確的是( )
A.一個類可以有多個構(gòu)造函數(shù)
B.一個類只有一個析構(gòu)函數(shù)
C.析構(gòu)函數(shù)需要指定參數(shù)
D.在一個類中可以說明具有類類型的數(shù)據(jù)成員
14.派生類的對象只能對它的( )是可訪問的。
A.公有繼承的公有成員 B.公有繼承的私有成員
C.公有繼承的保護(hù)成員 D.私有繼承的保護(hù)成員
15.下列不能作為類的成員的是( )
A.自身類對象的指針 B.自身類對象
C.自身類對象的引用 D.另一個類的對象
16.在類中聲明轉(zhuǎn)換函數(shù)時不能指定( )
A.參數(shù) B.訪問權(quán)限
C.操作 D.標(biāo)識符
17.在派生類中重新定義虛函數(shù)時必須在( )方面與基類保持一致。
A.參數(shù)類型 B.參數(shù)名字
C.操作內(nèi)容 D.賦值
18.在私有繼承的情況下,基類成員在派生類中的訪問權(quán)限( )
A.受限制 B.保持不變
C.受保護(hù) D.不受保護(hù)
19.下面對于指針的描述不正確的是( )
A.指針是地址變量
B.指針不能用除0以外的常量賦值
C.兩個指針變量的加減法無意義
D.指針指向不同基類型的變量長度不同
20.在派生類中定義友元函數(shù)時必須在( )方面與基類保持一致。
A.參數(shù)類型 B.參數(shù)名字
C.操作內(nèi)容 D.賦值
二、填空題(每空2分,共20分)
1.在一個類中可以對一個操作符進(jìn)行_______重載。
2.在C++中有二種參數(shù)傳遞方式:______________.
3.模板對處理數(shù)據(jù)的類型的要求不同可以分為兩種類型:_______.
4.靜態(tài)聯(lián)編是在程序_______時進(jìn)行的。
5.在函數(shù)體之前加_______關(guān)鍵字可以防止覆蓋函數(shù)改變數(shù)據(jù)成員的值。
6.一個const對象只能訪問_______成員函數(shù)。
7.派生類的主要用途是可以定義其基類中_______.
8.當(dāng)建立_______,程序自動調(diào)用該類的構(gòu)造函數(shù)。
9.使用指向?qū)ο蟮闹羔榿順?biāo)識類的成員,則必須使用的運算符是_______.
10.拷貝初始化構(gòu)造函數(shù)使用_______來初始化創(chuàng)建中的對象。
三、完成程序題(每小題5分,共20分)
1.下面程序的運行結(jié)果如下所示完成填空。
#include “iostream.h”
class test{
private∶int num
float fl;
public∶ test();
int getint(){return num;}
float getfloat(){return fl;}
~test();
};
test∶∶test()
{cout《″Initializing default″《endl;
______________ }
test∶∶~test() {cout《″Desdtructor is active″《endl;}
int main()
{test array[2];
cout《array[1]。getint()《″ ″《array[1]。getfloat()《endl;}
運行結(jié)果為:
Initializing default
_____________________;∥填寫結(jié)果
0 0
Desdtructor is active
Desdtructor is active
2.定義一個日期的類來實現(xiàn)重載操作符的測試,在下面程序的底畫線處填上適當(dāng)?shù)淖志洌瓿深愔谐蓡T函數(shù)的定義。
#include
class ClassDate{
private∶
int year;
int month;
int day;
public∶ClassDate(int y=0,int d=0,int m=0){year=y,month=m,day=d;}
int getyear(){return year;}
int getmonth(){return month;}
in getday(){return day;}
____________________ (iostream & s,ClassDate &a)
{ int y,m,d;
cout《″請輸入日期:(yyyy-mm-dd)″;
s》y》m》d;
while(y>9999‖m>-1‖m<-12‖d>-1‖d<-31)
{
cout《″輸入格式有錯,請重新輸入日期:(yyyy-mm-dd)″;
s》y》m》d;
}
a.year=y;
a.month=-m;
a.day=-d;
return s;
}
_____________________∥輸出重定義
{∥輸出日期
s《″現(xiàn)在的日期是:″;
s《a.getyear()《′-′;
s《a.getmonth()《″-″《a.getday()《endl;
return s;
}
};
3.在下面程序的底畫線處填上適當(dāng)?shù)淖志洌瓿沙绦颉?BR> #include
class A{
public∶ void f(int i){cout《i《endl;}
void g(){cout《“g\n”;}
};
class ______________{
public∶void h(){cout《“h\n”;}
A∶∶f;
};
void main()
{ B d1;
d1.f(6);
______________.h();
}
4.根據(jù)運行結(jié)果,完成下面遞歸程序的填空。
#include
int f(int *x)
{
if(!(*x))
{ cout《*x《“,”;
_____________________;∥遞歸調(diào)用;
}
main()
{ int A[]={3,2,1};
int *y;
y=A;
_____________________;∥引用f;
}
運行結(jié)果是:3,2,1
四、綜合應(yīng)用題(共20分)
1.分析下列程序可能的輸出結(jié)果。(滿分8分)
#include “iostream.h”
int main()
{int i=17;
while(i>=10)
if(-i%4==3) continue;
else
cout《“i=”《i-《endl;
}
2.寫出模板函數(shù)實現(xiàn)找出三個數(shù)值中按最小值到值排序程序。(滿分12分)