一、選擇題(每小題1分,共40分)
1下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中,正確的是( )。
A.內(nèi)聯(lián)函數(shù)在調(diào)用時發(fā)生控制轉(zhuǎn)移
B.內(nèi)聯(lián)函數(shù)必須通過關(guān)鍵字inline來定義
C.內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的
D.內(nèi)聯(lián)函數(shù)函數(shù)體的后一條語句必須是return語句
參考答案:C
參考解析:一般函數(shù)進(jìn)行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時,是將調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換,所以在調(diào)用時不發(fā)生控制轉(zhuǎn)移。在類內(nèi)部實現(xiàn)的函數(shù)都是內(nèi)聯(lián)函數(shù),可以不用inline定義;只有函數(shù)外部定義的內(nèi)聯(lián)函數(shù)才必須加關(guān)鍵字inline。編譯系統(tǒng)并非對內(nèi)聯(lián)函數(shù)必須使用內(nèi)聯(lián),而且根據(jù)具體情況決定。內(nèi)聯(lián)函數(shù)不是必須要有返回值的。
2語句int*P=&k;定義了指針P,與這個語句等效的語句序列是( )。
A.int* p;P=&k;B.int * P;P=k;C.int * p;* P=&k;D.int * p;* P=k;
參考答案:A
參考解析:本題考查指針和地址,題目中定義了一個指向變量k的一個指針p,那么與題目中等效的表達(dá)式A選項,即先定義一個指向整型的指針,然后指向k的地址。
3有如下程序:
#include
using namespace std;
class A
{
public:
A(){cout<<”A”;}
-A(){cout<<”-A”;}
};
class B:public A
{
A*P;
public:
B(){cout<<”B”;P=new A();}
-B(){cout<<”~B”;delete p;}
};
int main()
{
B obj;
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.BAA~A~B~AB.ABA~B~A~AC.BAA~B~A~AD.ABA~A~B~A
參考答案:B
參考解析:本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個派生類的對象時,先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù)。對象釋放時,先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。所以本題答案為B。
4有如下類定義:
class AA
{
im a:
public:
int getRef()const{return&a;}//①
int getValue()const{return a;}//②
void set(int n)const{a=n;}//③
friend void show(AA aA.const{cout<
};
其中四個函數(shù)的定義中正確的是( )。
A.①B.②C.③D.④
參考答案:B
參考解析:本題考查常成員函數(shù),常成員函數(shù)只能引用本類中的數(shù)據(jù)成員,而不能修改它。所以本題答案為B。
5若要對Data類中重載的加法運算符成員函數(shù)進(jìn)行聲明,下列選項中正確的是( )。
A.Data+(DatA.;B.Data operator+(DatA.;C.Data+operator(DatA.;D.operator+(Data,DatA.;
參考答案:B
參考解析:根據(jù)重載加法運算符的格式,只有B選項正確。
6有如下數(shù)組聲明:int num[10];,下標(biāo)值引用錯誤的是( )。
A.num[10]B.num[5]C.num[3]D.hum[o]
參考答案:A
參考解析:數(shù)組定義中的數(shù)字指的是數(shù)組的大小,而下標(biāo)是從0開始的,所以本題中數(shù)組的后一個元素是num[9]。
7將前綴運算符“--”重載為非成員函數(shù),下列原型中能正確用于類中說明的是( )。
A.DeCr&operator--(int);B.DeCr operator--(DeCr&,int);C.friend DeCr&operator--(DeCr&);D.friend DeCr operator--(DeCr&,int);
參考答案:C
參考解析:把“--”運算符重載為非成員(友元)函數(shù)格式:friend<返回類型>operator--()是前綴的格式;friend<返回類型>operator--(int)是后綴的格式。當(dāng)然也可以有參數(shù)如題中C選項所示。
8如果派生類以proteCted方式繼承基類,則原基類的proteCted成員和publiC成員在派生類中的訪問屬性分別是( )。
A.publiC和publiCB.publiC和proteCtedC.proteCted和publiCD.proteCted和proteCted
參考答案:D
參考解析:本題考查保護(hù)繼承中派生類對基類的訪問屬性,在受保護(hù)繼承中,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,其私有成員仍為基類私有,所以本題答案為D。
9在函數(shù)中,可以用aut0、extem、register和static這四個關(guān)鍵字中的一個來說明變量的存儲類型,如果不說明存儲類型,則默認(rèn)的存儲類型是( )。
A.autoB.externC.registerD.static
參考答案:A
參考解析:變量的存儲方法分為靜態(tài)存儲和動態(tài)存儲兩大類,包含4種:自動的(auto)、靜態(tài)的(static)、寄存器的(register)、外部的(extem)。變量如果沒有說明存儲類型,那么默認(rèn)就是aut0。
10下列程序的輸出結(jié)果是( )。
#include
int rain(iltl a,int B)
{
if(a
else retum b;
retum 0;
}
void main()
{
eout<
}
A.0B.1C.2D.3
參考答案:B
參考解析:本題考查的是函數(shù)的調(diào)用,第 1次調(diào)用min(2,3),因為2<3,所以返回值為2,第二次調(diào)用min(1,2),因為l<2,所以返回1。
11在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是( )。
A.程序內(nèi)部邏輯B.程序外部功能C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖
參考答案:B
參考解析:黑盒測試是對軟件已經(jīng)實現(xiàn)的功能是否滿足需求進(jìn)行測試和驗證,黑盒測試完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只根據(jù)程序的需求和功能規(guī)格說明,檢查程序的功能是否符合它的功能說明,所以本題選擇B。
12在面向?qū)ο蠓椒ㄖ校粚儆凇皩ο蟆被咎攸c的是( )。
A.一致性B.分類性C.多態(tài)性D.標(biāo)識唯一性
參考答案:A
參考解析:對象有如下一些基本特點:標(biāo)識唯一性、分類性、多態(tài)性、封裝性、模塊獨立性好。所以選擇A。
13有以下程序:
#include
void fun(int a,int b,int C.
{ a=456,b=567,c=678;}
void main()
{
int X=10,Y=20,Z=30;
fun(X,Y,z);
aout<
}
輸出結(jié)果是( )。
A.30,20,10B.10,20,30C.456,567,678D.678,567,456
參考答案:B
參考解析:本題考查函數(shù)中變量的作用范圍,在主函數(shù)中給變餐x、Y、Z賦值,然后將其作為實參傳遞給了函數(shù)fun(),雖然在函數(shù)fun()中改變了這3個變量的值,但只是同名的局部變量,不影響函數(shù)中變量的值,所以在調(diào)用函數(shù)fun()結(jié)束后,主函數(shù)3個變量的值未改變。
14對類的構(gòu)造函數(shù)和析構(gòu)函數(shù)描述正確的是( )。
A.構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)不能重載
B.構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)可以重載
C.構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)也可以重載
D.構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)也不能重裁
參考答案:A
參考解析:一個類中只能定義一個析構(gòu)函數(shù),否則會造成對同…對象的多次刪除;而構(gòu)造函數(shù)可以根據(jù)不同的參數(shù)個數(shù)和類型進(jìn)行多次重載。
15通過運算符重載,可以改變運算符原有的( )。
A.操作數(shù)類型B.操作數(shù)個數(shù)C.優(yōu)先級D.結(jié)合性
參考答案:A
參考解析:重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的C++運算符進(jìn)行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是c++的標(biāo)準(zhǔn)類型。故本題答案為A。
16下列關(guān)于c++流的描述中,錯誤的是( )。
A.cout>>’A’表達(dá)式可輸出字符A
B.eof()函數(shù)可以檢測是否到達(dá)文件尾
C.對磁盤文件進(jìn)行流操作時,必須包含頭文件fstream
D.以ios_base::0ut模式打開的文件不存在時,將自動建立一個新文件
參考答案:A
參考解析:本題考查c++流,想要輸出字符“A”,則應(yīng)該是cout<<“A”,所以本題答案為A。
17耦合性和內(nèi)聚性是對模塊獨立性度量的兩個標(biāo)準(zhǔn)。下列敘述中正確的是( )。
A.提高耦合性降低內(nèi)聚性有利于提高模塊的獨立性
B.降低耦合性提高內(nèi)聚性有利于提高模塊的獨立性
C.耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度
D.內(nèi)聚性是指模塊間互相連接的緊密程度
參考答案:B
參考解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系少且接口簡單。一般較的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性,所以A錯誤,B正確。耦合性是模塊間互相連接的緊密程度的度量而內(nèi)聚性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度,所以C與D錯誤。
18若有如下類聲明:
Class MyClass{ publiC:
MyClass( ){Cout<<1;} };
執(zhí)行下列語句
MyClass a,b[2],*p[2]; 程序的輸出結(jié)果是( )。
A.11B.111C.1111D.11111
參考答案:B
參考解析:本題考查默認(rèn)構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù),題目中定義一一個對象a以及對象數(shù)組b[2],共執(zhí)行3次構(gòu)造函數(shù),對象指針不調(diào)用構(gòu)造函數(shù)。所以本題答案為B。
19下列函數(shù)模板的定義中,合法的是( )。
A.templateT abs(T X){return x<07-x:X;}
B.template ClassT abs(T x){return x<07-X:x;}
C.template Tabs(T X){return x<07-x:X;}
D.template T abs(T x){return X<0?-X:x;}
參考答案:A
參考解析:本題考查模板函數(shù)的基本概念.根據(jù)模板函數(shù)的定義,所以答案為A。
20有如下程序:
#include
using namespace std;
class Base{
int x:
public:
Base(int n=0):x(n){cout<
int getX()const{return x;}
};
cjass Derived:public Base{
int Y:.
J;;Iublic:
Derived(int m,int n):y(m),Base(n){cout<
Derived(int m):Y(m){cout<
};
int main()
{
Derived dl(3),d2(5,7);
retum 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.375B.357C.0375D.0557
參考答案:C
參考解析:本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個派生類的對象時,先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù),對象釋放時,先執(zhí)行派生類的析構(gòu)函數(shù)。再執(zhí)行基類的析構(gòu)函數(shù)。本題中定義了一個對象d1,先執(zhí)行基類的構(gòu)造函數(shù)輸出0,再執(zhí)行派生類的構(gòu)造函數(shù)輸出3,然后定義了一個對象d2(5,7),其中需要調(diào)用基類的構(gòu)造函數(shù)輸出7.后輸出5,所以答案為c。