第 1 頁:選擇題 |
第 3 頁:基本操作題 |
第 4 頁:簡單應(yīng)用題 |
21關(guān)于在調(diào)用模板函數(shù)時模板實參的使用,下列表述中正確的是( )。
A.對于虛擬類型參數(shù)所對應(yīng)的模板實參,如果能從模板函數(shù)的實參中獲得相同的信息,則都可以省略
B.對于虛擬類型參數(shù)所對應(yīng)的模板實參,如果它們是參數(shù)表中的最后的若干個參數(shù),則都可以省略
C.對于虛擬類型參數(shù)所對應(yīng)的模板實參,若能夠省略則必須省略
D.對于常規(guī)參數(shù)所對應(yīng)的模板實參,任何情況下都不能省略
參考答案:D
參考解析:在調(diào)用一個模板函數(shù)時,編譯系統(tǒng)需要足夠的信息來判別每個虛擬類型參數(shù)所對應(yīng)的實際類型,可以從兩個不同的渠道獲得這樣的信息:從模板實參表(用“<>”括起來的參數(shù)表)或從模板函數(shù)實參表(用“()”括起來的參數(shù)表)。如果從后者獲得的信息已經(jīng)能夠判定其中部分或全部虛擬類型參數(shù)所對應(yīng)的實際參數(shù),而且它們又正好是參數(shù)表中最后的若干參數(shù),則模板實參表中的那幾個參數(shù)可以省。如果模板實參表中的實參都被省了,則空表“<>”也可以不要,因此選項D錯誤。反之,對于某個模板實參,如果從模板函數(shù)的實參表中無法獲得同樣的信息,就不能省;或者雖然能夠獲得同樣的信息,但在它后面還有其他不能省的實參,則其自身還是不能省。
22有如下程序段:
int i=0,J=1;
int&r=i;//①
r=j;//②
int*P=&i;//⑧
*P=&r;//④
其中會產(chǎn)生編譯錯誤的語句是( )。
A.④B.③C.②D.①
參考答案:A
參考解析:本題考查指針和引用。①為引用,使用正確;④中&r表示一一個地址,而* P已經(jīng)是一個值了,不能將一個指針賦值給一個值,所以編譯錯誤。
23有如下程序:
#include
using namespace std;
class Obj{
static int i;
public:
Obj(){i++;}
一Obj(){i一一;}
static int getVal(){return i;}
};
int Obj::i=0:
void f(){Obj ob2;cout<
int main(){
Obj obl;
f();
Obj}ob3=new Obj;cout delete ob3;cout< return 0; } 執(zhí)行這個程序的輸出結(jié)果是( )。 A.232B.231C.222D.221 參考答案:D 參考解析:本題考查構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序,調(diào)用順序為先構(gòu)造的后析構(gòu),后構(gòu)造的先析構(gòu)。本題中先定義了一個對象ob1,會執(zhí)行構(gòu)造函數(shù),那么i就變?yōu)榱薼;再執(zhí)行函數(shù)f后,由于又定義了一個對象ob2,所以再次執(zhí)行構(gòu)造函數(shù),i就變?yōu)榱?,輸出了2。函數(shù)執(zhí)行完后執(zhí)行析構(gòu)函數(shù),i變?yōu)榱?,然后又定義了對象指針,i變?yōu)榱?。釋放ob3后,i變?yōu)榱?,所以答案為D。 24有如下類定義: class MyBase{ int k; public: MyBase(int n=O):k(n)}} int value()eonst{return k;} }; class MyDerived:MyBase{ intj; public: MyDerived(int i):j(i)}} int getK()const{return k;} int getJ()const{return j;} }; 編譯時發(fā)現(xiàn)有一處語法錯誤,對這個錯誤最準(zhǔn)確的描述是( )。 A.函數(shù)9etK試圖訪問基類的私有成員變量k B.在類MyDerived的定義中,基類名MyBase前缺少關(guān)鍵字public、protected或private C.類MyDerived缺少一個無參的構(gòu)造函數(shù) D.類MyDerived的構(gòu)造函數(shù)沒有對基類數(shù)據(jù)成員k進行初始化 參考答案:A 參考解析:默認(rèn)繼承方式為私有繼承,私有繼承將基類的公用成員和保護成員都變?yōu)閞私有成員,基類的私有成員依然屬于基類私有,派生類不能訪問基類的私有成員。所以A選項正確。 25下列關(guān)于虛基類的描述,錯誤的是( )。 A.設(shè)置虛基類的目的是為了消除二義性 B.虛基類的構(gòu)造函數(shù)在非虛基類之后調(diào)用 C.若同一層中包含多個虛基類,這些虛基類的構(gòu)造函數(shù)按它們說明的次序調(diào)用 D.若虛基類由非虛基類派生而來,則仍然先調(diào)用基類構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù) 參考答案:B 參考解析:虛基類的引入就是為j-消除。二義性,其構(gòu)造函數(shù)的調(diào)用仍然是按照繼承的順序進行的,對于多個虛基類則按它們說明的次序調(diào)用,虛基類的構(gòu)造函數(shù)先于非虛基類的構(gòu)造函數(shù)執(zhí)行。 26在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數(shù)是( )。 A.O(n)B.O(n2)C.O(1092n)D.0(n1092n) 參考答案:C 參考解析:當(dāng)有序線性表為順序存儲時才能用:二分法查找。可以證明的是對于長度為n的有序線性表,在最壞情況下,二分法查找只需要比較l092n次,而順序查找需要比較n次。 27在軟件開發(fā)中,需求分析階段可以使用的工具是( )。 A.N—s圖B.DFD圖C.PAD圖D.程序流程圖 參考答案:B 參考解析:在需求分析階段可以使用的工具有數(shù)據(jù)流圖DFD圖,數(shù)據(jù)字典DD,判定樹與判定表,所以選擇B。 28有如下類聲明: class Base{ protected: int amount; public: Base(int n=0):amount(n){} int getAmount()const{retum amount;} }; class Derived:public Base{ protected: int value; public: Derived(int m,int n):value(m),Base(n){} int getData()const{return value+amount;} }: 已知x是一個Derived對象,則下列表達(dá)式中正確的是( )。 A.x.value+X.getAmount()B.x.getData()一x.getAmount()C.x.getData()一x.amountD.x.value+X.amount 參考答案:B 參考解析:本題考查公有繼承中派生類對象對基類的訪問屬性。在公有繼承中,派生類對象只能訪問基類的公有成員,而不能}方問基類的保護成員和私有成員。題中x是派生類的對象,只能訪問基類中公有的Base()和getAmount()成員,而不能訪問保護類型的amount成員,故選項C、D錯誤。而類對象對類成員的訪問也存在類似的情況,即類對象只能訪問類的公有成員,而value是Derived的保護成員,所以A選項也錯誤。故答案為B。 29有三個關(guān)系R、S和T如下: 則由關(guān)系R和s得到關(guān)系T的操作是( )。 A.自然連接B.交C.除D.并 參考答案:C 參考解析:如果S=T/R,則S稱為T除以R的商在除運算中s的域由T中那些不出現(xiàn)在R中的域所組成,對于s中的任一序組,由它與關(guān)系R中每個有序組所構(gòu)成的有序組均出現(xiàn)在關(guān)系T中。所以本題選擇C。 30下面描述中,不屬于軟件危機表現(xiàn)的是( )。 A.軟件過程不規(guī)范B.軟件開發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高 參考答案:A 參考解析:軟件危機主要表現(xiàn)在:軟件需求的增長得不到滿足;軟件開發(fā)成本和進度無法控制;軟件質(zhì)撼難以保證;軟件不可維護或維護程度非常低;軟件的成本不斷提高;軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。所以選擇A。 31有如下程序: #inClude using namespaCe std: Class CD{ publiC: ~CD(){Cout<<’C’:} private: Char name[80]; }; int main(){ CD a,*b,d[2]; return 0; 執(zhí)行這個程序的輸出結(jié)果是( )。 A.CCCCB.CCCC.CCD.C 參考答案:B 參考解析:本題考查類的析構(gòu)函數(shù).題目中定義了類的一個對象a,對象指針*b,對象數(shù)組d[2],當(dāng)程序執(zhí)行完后,析構(gòu)函數(shù)執(zhí)行了3次,輸出“CCC”,對象指針不會執(zhí)行析構(gòu)函數(shù)。所以本題答案為8。 32類的析構(gòu)函數(shù)是在( )調(diào)用的。 A.類創(chuàng)建時B.創(chuàng)建對象時C.刪除對象時D.不自動調(diào)用 參考答案:C 參考解析:析構(gòu)函數(shù)可以被函數(shù)調(diào)用,也可以被系統(tǒng)調(diào)用:函數(shù)體內(nèi)的對象在函數(shù)結(jié)束時調(diào)用析構(gòu)函數(shù)和使用delete釋放對象所占用的資源。 33下列關(guān)于多態(tài)性的描述,錯誤的是( )。 A.c++語言中的多態(tài)性分為編譯時的多態(tài)性和運行時的多態(tài)性 B.編譯時的多態(tài)性可通過函數(shù)重載實現(xiàn) C.運行時的多態(tài)性可通過模板和虛函數(shù)實現(xiàn) D.實現(xiàn)運行時多態(tài)性的機制稱為動態(tài)綁定 參考答案:C 參考解析:編譯時的多態(tài)性是通過函數(shù)重載和模板體實現(xiàn)的,運行時的多態(tài)性是通過虛函數(shù)體實現(xiàn)的。 34下列有關(guān)類成員的敘述中,正確的是( )。 A.友元函數(shù)是類的成員函數(shù) B.類成員的默認(rèn)訪問權(quán)限是私有的 C.類成員函數(shù)必須聲明為公有的 D.類的靜態(tài)數(shù)據(jù)成員不能是常成員 參考答案:B 參考解析:友元函數(shù)是指某些雖然不是類成員卻能訪問類的所有成員的函數(shù),故友元函數(shù)不足類的成員函數(shù)。類成員的默認(rèn)訪問權(quán)限是私有的,類的成員函數(shù)¨r以是3種權(quán)限中的一種,靜態(tài)數(shù)據(jù)成員可以為常成員。故本題答案為8。 35有如下程序: #inClude using namespaCe std; ClaSS A{ publiC: A(int i){x=i;} void dispa( ){Cout< int x; }; Class B:publiC A{ publiC: B(int i):A(i+10){x=i;} vold dispb( ){dispa( );Cout< int x; }; int main( )} B b(2); b.dispb( ); return 0; } 執(zhí)行這個程序的輸出結(jié)果是( )。 A.10,2B.12,10C.12,2D.2,2 參考答案:C 參考解析:本題考查派生類的構(gòu)造函數(shù)和基類的構(gòu)造函數(shù)。本題中類B繼承類A,定義了·個類B的對象并初始化b(2),此時會執(zhí)行類B的構(gòu)造函數(shù),執(zhí)行的結(jié)果是繼承類A中的私有成員賦值了12,給類B自身的數(shù)據(jù)成員x賦值了2,執(zhí)行b.dispb()后,輸出類A的私有成員x,輸出類B自身的數(shù)據(jù)成員,所以答案為C。 36執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是( )。 for(int i=50;i>1;i一=2) tout<<’*’: A.24B.25C.26D.50 參考答案:B 參考解析:本題考查for循環(huán)語句,題目中每執(zhí)行完循環(huán)體后,i都會減2,那么只有50到2之間的偶數(shù)才能輸出“*”,所以總共輸出25次。 37有如下類定義: Class AA{ int a: PubliC: AA(int n=O):a(n){} }; Class BB:publiC AA{ publiC: BB(int n) }; 其中橫線處的缺失部分是( )。 A.:a(n){}B.:AA(n){}C.{a(n);}D.{a=n;} 參考答案:B 參考解析:本題考查公用繼承對基類成員的訪問屬性。公用繼承中,基類的公用成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有,本題中若要給派生類繼承下來基類的私有成員賦值,那么只能調(diào)用基類的成員函數(shù)來對它賦值,成員變量默認(rèn)的訪問權(quán)限為私有,即a為私有變量。所以本題答案為B。 38判斷char型變量c是否為小寫字母的正確表達(dá)式是( )。 A.’a’<=c<=’z’B.(c>=A.&&(c<=z)C.(’a’>=C.||(’z’<=C.D.(c>=’a’)&&(c<=,z,) 參考答案:D 參考解析:字符型數(shù)據(jù)在計算機內(nèi)部是以ASCII碼存儲的,英文大寫字母和小寫字母在ASCII碼表中都是連續(xù)的。大寫字母A~z是從65~90,小寫字母a~z是從97~122。所以只要變量c大于等于a并月小于等于z就能保證其為小寫字母。 39決定c++語言中函數(shù)的返回值類型的是( )。 A.return語句中的表達(dá)式類型 B.調(diào)用該函數(shù)時系統(tǒng)隨機產(chǎn)生的類型 C.調(diào)用該函數(shù)時的主調(diào)用函數(shù)類型 D.在定義該函數(shù)時所指定的數(shù)據(jù)類型 參考答案:D 參考解析:c++語言中,在定義該函數(shù)時所指定的數(shù)據(jù)類瓔決定函數(shù)的返回值類型。 40設(shè)int a=1,b=2;,則(a++)+b和a+++b這兩個表達(dá)式的值分別為( )。 A.3,3B.3,4C.4,3D.4,4 參考答案:A 參考解析:單目的++運算優(yōu)先級高于雙目的+運算,不過++的結(jié)合性是自右向左的,而+是自左向右的,所以上面的兩個表達(dá)式都是先計算a+b的值之后,a再自加1。 相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |