C++填空選擇題_第1頁
C++填空選擇題_第2頁
C++填空選擇題_第3頁
C++填空選擇題_第4頁
C++填空選擇題_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、C+程序設(shè)計模擬試卷(一)一、單項選擇題1. 編寫C+程序一般需經(jīng)過的幾個步驟依次是()A. 編輯、調(diào)試、編譯、連接B. 編輯、編譯、連接、運行C. 編譯、調(diào)試、編輯、連接D. 編譯、編輯、連接、運行答案:B解析:(P21)經(jīng)過編輯、編譯、連接和運行四個步驟。編輯是將 C+源程序輸入計算機的過程, 保存文件名為cpp。編譯是使用系統(tǒng)提供的編譯器將源程序 cpp生成機器語言的過程,目標文 件為obj,由于沒有得到系統(tǒng)分配的絕對地址,還不能直接運行。連接是將目標文件obj轉(zhuǎn)換為可執(zhí)行程序的過程,結(jié)果為exe。運行是執(zhí)行exe,在屏幕上顯示結(jié)果的過程。2. 決定C+語言中函數(shù)的返回值類型的是()A.

2、 return 語句中的表達式類型B. 調(diào)用該函數(shù)時系統(tǒng)隨機產(chǎn)生的類型C. 調(diào)用該函數(shù)時的主調(diào)用函數(shù)類型D. 在定義該函數(shù)時所指定的數(shù)據(jù)類型答案: D解析:(P51)函數(shù)的返回值類型由定義函數(shù)時的指定的數(shù)據(jù)類型決定的。A項的表達式的值要轉(zhuǎn)換成函數(shù)的定義時的返回類型。3. 下面敘述不正確的是()A. 派生類一般都用公有派生B. 對基類成員的訪問必須是無二義性的C. 賦值兼容規(guī)則也適用于多重繼承的組合D. 基類的公有成員在派生類中仍然是公有的答案: D解析:(P136)繼承方式有三種:公有、私有和保護。多繼承中,多個基類具有同名成員,在它們的子類中訪問這些成員,就產(chǎn)生了二義性,但進行訪問時,不能存

3、在二義性。賦值兼容 規(guī)則是指派生類對象可以當作基類對象使用,只要存在繼承關(guān)系,所以單繼承或多繼承都適 用?;愔械墓谐蓡T采用私有繼承時,在派生類中變成了私有成員,所以 項錯誤。4. 所謂數(shù)據(jù)封裝就是將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)操作組裝在一起, 形成一個實體, 這實體 也就是()A. 類B. 對象C. 函數(shù)體D. 數(shù)據(jù)塊答案: A解析:(P39)類即數(shù)據(jù)和操作的組合體,數(shù)據(jù)是類的靜態(tài)特征,操作是類具有的動作。5. 在公有派生類的成員函數(shù)不能直接訪問基類中繼承來的某個成員, 則該成員一定是基類中 的()A. 私有成員B. 公有成員C. 保護成員D. 保護成員或私有成員答案:A解析: (P133)

4、在派生類中基類的保護或者基類公有都可以直接訪問,基類的私有成員只能是基類的成員函數(shù)來訪問。所以選擇 A 項。6. 對基類和派生類的關(guān)系描述中,錯誤的是()A. 派生類是基類的具體化B. 基類繼承了派生類的屬性C. 派生類是基類定義的延續(xù)D. 派生類是基類的特殊化答案: B解析:(P129)派生類的成員一個是來自基類,一個來自本身,所以派生類是基類的擴展,也 是基類的具體化和特殊化,派生類是對基類擴展。B項基類不能繼承派生類成員,所以錯誤。7. 關(guān)于this指針使用說法正確的是()A. 保證每個對象擁有自己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)的代碼B. 保證基類私有成員在子類中可以被訪問。C. 保證基

5、類保護成員在子類中可以被訪問。D. 保證基類公有成員在子類中可以被訪問。答案: A解析: (P86)this 指針是隱藏的,可以使用該指針來訪問調(diào)用對象中的數(shù)據(jù)。基類的成員在派 生類中能否訪問,與繼承方式有關(guān),與this沒有關(guān)系。所以選擇A項。8. 所謂多態(tài)性是指 ()A. 不同的對象調(diào)用不同名稱的函數(shù)B. 不同的對象調(diào)用相同名稱的函數(shù)C. 一個對象調(diào)用不同名稱的函數(shù)D. 一個對象調(diào)用不同名稱的對象答案: B解析:(P167)多態(tài)性有兩種靜態(tài)多態(tài)性和動態(tài)多態(tài)性,靜態(tài)多態(tài)性是指調(diào)用同名函數(shù),由于 參數(shù)的不同調(diào)用不同的同名函數(shù);動態(tài)多態(tài)性是指不同對象調(diào)用同名函數(shù)時,由于對象不同 調(diào)用不同的同名函數(shù)

6、。 多態(tài)性肯定具有相同的函數(shù)名,所以選擇 B項。9. 一個函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,則應(yīng)把它定義為 ()A. 內(nèi)聯(lián)函數(shù)B. 重載函數(shù)C. 遞歸函數(shù)D. 嵌套函數(shù)答案: A解析:(P59)內(nèi)聯(lián)函數(shù)特征代碼少,頻繁調(diào)用,執(zhí)行效率高。重載函數(shù)解決統(tǒng)一接口的問題; 遞歸是子程序調(diào)用,程序調(diào)用要耗費很多空間和時間,循環(huán) / 迭代都比遞歸有效率得多,遞歸 只是從形式上,邏輯比較簡潔。嵌套函數(shù)即反復(fù)調(diào)用,速度較慢。所以選擇A項。10. 下面函數(shù)模板定義中不正確的是()A. AB. BC. CD. D答案: A解析:(P147)A項中F是一個返回Q類型的值,而return中用返回類型作為返回值錯誤。

7、所以選 擇A項。11. 假設(shè)ClassY:publicX,即類丫是類X的派生類,則說明一個丫類的對象時和刪除丫類對象時 ,調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的次序分別為()A. X,Y; Y,XB. X,Y; X,YC. Y,X; X,YD. Y,X; Y,X答案:A解析:(P130)派生類構(gòu)造函數(shù)必須對這三類成員進行初始化,其執(zhí)行順序:調(diào)用基類構(gòu)造函 數(shù);調(diào)用子對象的構(gòu)造函數(shù);派生類的構(gòu)造函數(shù)體。析構(gòu)函數(shù)在執(zhí)行過程中也要對基類和成 員對象進行操作,但它的執(zhí)行過程與構(gòu)造函數(shù)正好相反,即對派生類新增普通成員進行清理;調(diào)用 成員對象析構(gòu)函數(shù),對派生類新增的成員對象進行清理;調(diào)用基類析構(gòu)函數(shù),對基類進行清 理,

8、所以選擇A項。12. 適宜采用 inline 定義函數(shù)情況是()A. 函數(shù)體含有循環(huán)語句B. 函數(shù)體含有遞歸語句C. 函數(shù)代碼少、頻繁調(diào)用D. 函數(shù)代碼多、不常調(diào)用答案: C解析:(P59)內(nèi)聯(lián)函數(shù)具有程序代碼少、頻繁調(diào)用和執(zhí)行效率高的特征,所以選擇C項。13. 假定一個類的構(gòu)造函數(shù)為 A(int aa,int bb) a=aa-;b=a*bb;,則執(zhí)行A x(4,5);語句后,x.a和x.b的值分別為()A. 3和15B. 5和4C. 4和20D. 20和5答案: C解析:(P75)a=4,因為后減,b的值與a bb相關(guān),b = 4*5=20,而與aa沒有任何關(guān)系。14. 在類中說明的成員可

9、以使用關(guān)鍵字的是()A. publicB. externC. cpuD. register答案: A解析:extern用于聲明外部變量的。register聲明寄存器類型變量。無cpu類型。它們都不能 聲明類成員。public聲明為公有訪問權(quán)限,所以選擇A項。15. 下列不能作為類的成員的是()A. 自身類對象的指針B. 自身類對象C. 自身類對象的引用D. 另一個類的對象答案: B解析:類的定義,如果有自身類對象,使得循環(huán)定義,B項錯誤。在類中具有自身類的指針,可以實現(xiàn)鏈表的操作,當然也可以使用對象的引用。類中可以有另一個類的對象,即成員對 象。所以選擇B選項。16. 使用地址作為實參傳給形參

10、,下列說法正確的是()A. 實參是形參的備份B. 實參與形參無聯(lián)系C. 形參是實參的備份D. 實參與形參是同一對象答案:D解析: (P51) 地址作為實參,表示實參與形參代表同一個對象。如果實參是數(shù)值,形參也是普 通變量,此時形參是實參的備份。所以選擇 D項。17. 下列程序的輸出結(jié)果是()#include void main()int n 3=10,20,30,40,50,60;int (*p) 3;p=n;coutp00, *(p 0+1) , (*p) 2endl;A.10,30,50B.10,20,30C.20,40,60D.10,30,60答案:B解析:如果數(shù)組元素都是相同類型的指針

11、,則稱這個數(shù)組為指針數(shù)組。指針數(shù)組一般用于處 理二維數(shù)組。聲明的格式為:。p表示指向數(shù)組n的行指針。如果將指針的初始化(*p)3 =b;地址的等價形式:p+i p i *(p+i)都表示b數(shù)組第i+1行的第1個元素的首地址。*(p+i)+jpi +j &p i j 都表示b數(shù)組第i+1行、第j+1列元素的地址。值的等價形式:*(*(p+i)+j) *(p i +j) p i j 都表示b數(shù)組第i+1、第j+1列元素的值。所以題目分別訪問 p00, p01, p02。18. 在C+中,使用流進行輸入輸出,其中用于屏幕輸入()A. cinB. cerrC. coutD. clog答案: A解析:(

12、P193)(1)標準輸入流cin : istream類的對象。(2)標準輸出流cout : ostream類的對象。 非緩沖型標準出錯流cerr : ostream類的對象。緩沖型標準出錯流clog : ostream類的 對象19假定AA為一個類,a()為該類公有的函數(shù)成員,x為該類的一個對象,則訪問x對象中函數(shù) 成員 a() 的格式為()A. x.aB. x.a()C. x-aD. ( *x) .a()答案: B解析:(P41)對象訪問成員的方式為:對象名.成員。指針可以有兩種:(*對象指針).成員或 者對象指針- 成員。A選項是訪問數(shù)據(jù)成員,B項是訪問成員函數(shù)。20. 關(guān)于對象概念的描述

13、中,說法錯誤的是()A. 對象就是C語言中的結(jié)構(gòu)變量B. 對象代表著正在創(chuàng)建的系統(tǒng)中的一個實體C. 對象是類的一個變量D. 對象之間的信息傳遞是通過消息進行的答案:A解析:(P37)A對象在C+ +中才有,包括數(shù)據(jù)和操作兩項,而 C中的變量只有數(shù)據(jù),沒有操作。 所以A項錯誤。二、填空題1. C+勺流庫預(yù)定義了 4個流,它們是cin、cout、clog和。答案: (P193)cerr解析cin、cout、clog和cerr分別用于標準輸入、輸出、標準錯誤流(緩沖)和標準錯誤 流(非緩沖)。2. 每個對象都是所屬類的一個 _。答案:(P69)實例解析類是對象的抽象,對象是類的一個實例。3. 在已經(jīng)

14、定義了整型指針ip后,為了得到一個包括10個整數(shù)的數(shù)組并由ip所指向,應(yīng)使用語 句_。答案: (P78)int *ip=new int10;解析new用來動態(tài)開辟空間。常用來產(chǎn)生動態(tài)數(shù)組及對象構(gòu)造函數(shù)。4. 函數(shù)模板中緊隨 template 之后尖括號內(nèi)的類型參數(shù)都要冠以保留字 _。答案: (P145)class解析類模板的使用。 template , 也可以引入多參數(shù)的如: template 5. 定義類的動態(tài)對象數(shù)組時,系統(tǒng)只能夠自動調(diào)用該類的_構(gòu)造函數(shù)對其進行初始化。答案:(P80)無參解析使用new創(chuàng)建對象數(shù)組,調(diào)用無參構(gòu)造函數(shù)。6. 表達式 cout 解析指針使用成員有兩種方法:“

15、-”指向運算符和“ .”成員訪問運算符。8. 假如一個類的名稱為MyClass,使用這個類的一個對象初始化該類的另一個對象時,可以 調(diào)用_構(gòu)造函數(shù)來完成此功能。答案:(P80)復(fù)制或拷貝復(fù)制或拷貝構(gòu)造函數(shù)就是用對象初始化新的對象。9. 對賦值運算符進行重載時,應(yīng)聲明為 _函數(shù)。答案:(P183)類成員 解析運算符重載的方法有友元或者成員函數(shù)兩種途徑,但是賦值運算符只能使用成員函 數(shù)的方法來實現(xiàn)。10. 如果要把A類成員函數(shù)f ()且返回值為void聲明為類B的友元函數(shù),則應(yīng)在類B的定義中 加入的語句 _。答案: (P109)friend void A:f();解析成員函數(shù)作為另一個類的友元函數(shù)

16、,格式為: friend 返回類型 類名: 函數(shù)(形參) 11. 下列程序段的輸出結(jié)果是 _。 for(i=0,j=10,k=0;i=j;i+,j-=3,k=i+j);coutk; 答案:4解析 for 循環(huán)結(jié)構(gòu),三個表達式的作用,初始化、循環(huán)判斷條件和循環(huán)變量變化。循環(huán)執(zhí) 行了三次,k的作用是計算i、j的和。12. String 類的_方法返回查找到的字符串在主串的位置。 答案: (P40)find解析 string 類對象方法的 find ,查不到字符串,則返回 -1 。13. int n=0;while (n=1)n+;while 循環(huán)執(zhí)行次數(shù)是 _。答案:無限次解析=是賦值運算符,不是

17、關(guān)系運算符,且不等0,所以死循環(huán)。14. 控制格式輸入輸出的操作中, 函數(shù)_是用來設(shè)置填充字符。 要求給出函數(shù)名和參數(shù)類型 答案: (P195)setfill(char)解析格式控制方法的使用,如 setw, setfill 等等。15. C+語言支持的兩種多態(tài)性分別是編譯時的多態(tài)性和_的多態(tài)性。答案: (P1 67)運行時 解析多態(tài)性包括靜態(tài)的(編譯時)多態(tài)性和動態(tài)的(運行時)多態(tài)性。16. 設(shè)函數(shù)sum是由函數(shù)模板實現(xiàn)的,并且sum(3,6)和sum(4.6,8)都是正確的函數(shù)調(diào)用,貝U函 數(shù)模板具有 _個類型參數(shù)。答案:(P61)217. 執(zhí)行下列代碼string str(HelloC+

18、);coutstr.substr(5 , 3);程序的輸出結(jié)果是 _。答案: (P42)C+解析 substr 取子字符串,第 1個參數(shù)表示要截取子串在字符串中的位置,第 2個表示取多 少個字符。18. 在面向?qū)ο蟮某绦蛟O(shè)計中,將一組對象的共同特性抽象出來形成 _。答案:(P38)類解析類是相似特征的對象的抽象,對象是類的一個實例。19. 定義類動態(tài)對象數(shù)組時,元素只能靠自動調(diào)用該類的_來進行初始化。答案:(P77)無參構(gòu)造函數(shù)解析使用 new 創(chuàng)建動態(tài)對象數(shù)組,不能有參數(shù),所以只能調(diào)用無參的構(gòu)造函數(shù),初始化 對象20. 已知有20個元素int類型向量V1,若用V1初始化為V2向量,語句是_。

19、答案: (P151)ector V2(V1);解析采用向量初始化另一個向量的形式: vector name1(name); 一、單項選擇題1. 靜態(tài)成員函數(shù)沒有()A. 返回值B. this 指針C. 指針參數(shù)D. 返回類型答案: B解析:(P107)靜態(tài)成員函數(shù)是普通的函數(shù)前加入static,它具有函數(shù)的所有的特征:返回類型、 形參,所以使用(P107)靜態(tài)成員函數(shù),指針可以作為形參,也具有返回值。靜態(tài)成員是類具 有的屬性,不是對象的特征,而this表示的是隱藏的對象的指針,因此靜態(tài)成員函數(shù)沒有this 指針。靜態(tài)成員函數(shù)當在類外定義時,要注意不能使用 static 關(guān)鍵字作為前綴。由于靜態(tài)

20、成 員函數(shù)在類中只有一個拷貝(副本),因此它訪問對象的成員時要受到一些限制:靜態(tài)成員 函數(shù)可以直接 訪問類中說明的靜態(tài)成員, 但不能直接訪問類中說明的非靜態(tài)成員; 若要訪問非靜態(tài)成員時, 必須通過參數(shù)傳遞的方式得到相應(yīng)的對象,再通過對象來訪問。2. 假定AB為一個類,則執(zhí)行“ ABa(2), b 3 ,*p 4; ”語句時調(diào)用該類構(gòu)造函數(shù)的次數(shù) 為()A. 3B. 4C. 5D. 9答案: B解析:(P79)a(2)調(diào)用1次帶參數(shù)的構(gòu)造函數(shù),b 3調(diào)用3次無參數(shù)的構(gòu)造函數(shù),指針沒有給 它分配空間,沒有調(diào)用構(gòu)造函數(shù)。所以共調(diào)用構(gòu)造函數(shù)的次數(shù)為 4。3. 有關(guān)多態(tài)性說法不正確的是()A. C+語言

21、的多態(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)多態(tài)性答案: C解析:(P171)多態(tài)性分為靜態(tài)的和動態(tài)的。靜態(tài)通過函數(shù)的重載來實現(xiàn),動態(tài)是通過基類指 針或基類引用和虛函數(shù)來實現(xiàn)的。所以錯誤的是 C項。4. 假定一個類的構(gòu)造函數(shù)為“ A(int i=4, int j=0) a=i;b=j;” , 則執(zhí)行“ A x (1); ”語句后,x.a和x.b的值分別為()A. 1和0B. 1和4C. 4和0D. 4和1 答案: A解析:(P75)帶默認的構(gòu)造函數(shù),對應(yīng)實參沒有值時就采用形參值。調(diào)

22、用構(gòu)造函數(shù)時,i=1,不采用默認值,而只有一個參數(shù),j采用默認值0即j=0,因此a=1,b=0,選擇A項。5. 類MyA勺拷貝初始化構(gòu)造函數(shù)是()A. MyA()B. MyA(MyA*)C. MyA(MyA&)D. MyA(MyA)答案: C解析:(P80)復(fù)制即拷貝構(gòu)造函數(shù)使用對象的引用作形參,防止臨時產(chǎn)生一個對象,A無參構(gòu)造函數(shù),B是指針作為形參,D項是對象,所以選擇C項。6. 在C+中,函數(shù)原型不能標識()A. 函數(shù)的返回類型B. 函數(shù)參數(shù)的個數(shù)C. 函數(shù)參數(shù)類型D. 函數(shù)的功能答案:D 解析:函數(shù)的聲明,說明函數(shù)的參數(shù)、返回類型以及函數(shù)名,函數(shù)體即實現(xiàn)部分決定功能。 所以函數(shù)的原型不能

23、決定函數(shù)的功能。7. 友元關(guān)系不能()A. 提高程序的運行效率B. 是類與類的關(guān)系C. 是一個類的成員函數(shù)與另一個類的關(guān)系D. 繼承答案: D解析: (P111) 友元可以是函數(shù)與類的關(guān)系即友元函數(shù),也可以類與類的關(guān)系即友元類,但友 元不能繼承,是單向性,且不具有傳遞性。友元可以訪問類中所有成員,提高了訪問的方便 性。因此選擇D項。8. 實現(xiàn)兩個相同類型數(shù)加法的函數(shù)模板的聲明是()A. add(T x,T y)B. T add(x,y)C. T add(T x,y)D. T add(T x,T y)答案: D解析: (P63) 實現(xiàn)兩個相同類型數(shù)加法結(jié)果應(yīng)該和操作數(shù)具有相同類型。 進行加法運算

24、后結(jié)果 也是和參數(shù)具有相同類型,需要返回值。A無返回值時要用void,B形參無類型,C形參y沒有類型,所以選擇D項。9. 在int a=3,int *p=&a ;中,*p的值是()A. 變量a的地址值B. 無意義C. 變量p的地址值D. 3答案: D解析:*p代表引用a變量的值,p代表a的地址值。所以選擇D項。10. 下列不是描述類的成員函數(shù)的是()A. 構(gòu)造函數(shù)B. 析構(gòu)函數(shù)C. 友元函數(shù)D. 拷貝構(gòu)造函數(shù)答案: C解析:(P109)構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)都是特殊的成員函數(shù),友元則不是成員函 數(shù)。所以選擇C項。11. 如果從原有類定義新類可以實現(xiàn)的是()A. 信息隱藏B. 數(shù)據(jù)封裝

25、C. 繼承機制D. 數(shù)據(jù)抽象答案: C解析:(P129)繼承指在原有類的基礎(chǔ)上產(chǎn)生新類。數(shù)據(jù)封裝即數(shù)據(jù)和操作組合在一起,形成 類。信息的隱藏,通過訪問權(quán)限來實現(xiàn)。數(shù)據(jù)抽象,將事物的特征抽象為數(shù)據(jù)成員或服務(wù)。因此選擇C項。12. 下面有關(guān)類說法不正確的是()A. 一個類可以有多個構(gòu)造函數(shù)B. 一個類只有一個析構(gòu)函數(shù)C. 析構(gòu)函數(shù)需要指定參數(shù)D. 在一個類中可以說明具有類類型的數(shù)據(jù)成員答案:C解析:(P80)構(gòu)造函數(shù)可以有參數(shù)、可以重載、因此可以有多個,A項正確。析構(gòu)函數(shù)只有一個不能重載、不能繼承,沒有返回值,B項正確,C項錯誤。13. 在函數(shù)定義中的形參屬于()A. 全局變量B. 局部變量C.

26、靜態(tài)變量D. 寄存器變量答案: B解析:形參或函數(shù)中定義的變量都是局部變量。在函數(shù)外定義的變量是全局變量。形參只能 用局部變量, 頻繁使用的變量可以聲明為寄存器變量, 形參不能使用靜態(tài)變量或寄存器變量。14. 下列有關(guān)重載函數(shù)的說法中正確的是()A. 重載函數(shù)必須具有不同的返回值類型B. 重載函數(shù)參數(shù)個數(shù)必須相同C. 重載函數(shù)必須有不同的形參列表D. 重載函數(shù)名可以不同答案: C解析:(P59)函數(shù)的重載必須函數(shù)名相同而形參類型或個數(shù)不同,與返回值無關(guān)。15. this 指針存在的目的是()A. 保證基類私有成員在子類中可以被訪問B. 保證基類保護成員在子類中可以被訪問C. 保證每個對象擁有自

27、己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)成員的代碼D. 保證基類公有成員在子類中可以被訪問答案: C解析:(P86)C+要求函數(shù)在被調(diào)用之前,應(yīng)當讓編譯器知道該函數(shù)的原型,以便編譯器利用 函數(shù)原型提供的信息去檢查調(diào)用的合法性,強制參數(shù)轉(zhuǎn)換成為適當類型,保證參數(shù)的正確傳 遞。對于標準庫函數(shù),其聲明在頭文件中,可以用 #include 宏命令包含這些原型文件;對于 用戶自定義函數(shù),先定義、后調(diào)用的函數(shù)可以不用聲明,但后定義、先調(diào)用的函數(shù)必須聲明。 一般為增加程序的可理解性,常將主函數(shù)放在程序開頭,這樣需要在主函數(shù)前對其所調(diào)用的 函數(shù)一一進行聲明,以消除函數(shù)所在位置的影響。所以選擇C項。16. 關(guān)于new運

28、算符的下列描述中,錯誤的是()A. 它可以用來動態(tài)創(chuàng)建對象和對象數(shù)組B. 使用它創(chuàng)建的對象或?qū)ο髷?shù)組可以使用運算符 delete 刪除C. 使用它創(chuàng)建對象時要調(diào)用構(gòu)造函數(shù)D. 使用它創(chuàng)建對象數(shù)組時必須指定初始值答案: D解析:(P78)new創(chuàng)建的對象數(shù)組不能指定初始值,所以調(diào)用無參的構(gòu)造函數(shù),選擇項。17. 已知:p是一個指向類A數(shù)據(jù)成員m的指針,A1是類A的一個對象。如果要給m賦值為5,正 確的是()A. A1.p=5;B. A1-p=5;C. A1.*p=5;D. *A1.p=5;答案:C解析:(P118)A中p是指針即地址,錯誤;B選項中A1不是指針不能使用指向運算符-,錯誤 * ”比

29、級別要高,所以D選項*A1.p=5相當于(*A1).p=5;錯誤。另外涉及到指向成員 函數(shù) 時注意以下幾點:指向成員函數(shù)的指針必須于其賦值的函數(shù)類型匹配的三個方面: (1)參數(shù)類型和個數(shù); (2) 返回類型; (3) 它所屬的類類型。成員函數(shù)指針的聲明:指向short型的Screen類的成員的指針定義如下:short Screen:* ps_Screen;ps_Screen可以用_height的地址初始化如下:short Screen:*ps_Screen=&Screen:_height;類成員的指針必須總是通過特定的對象或指向改類型的對象的指針來訪問。是通過使用兩 個指向成員操作符的指針 (

30、針對類對象和引用的 .*,以及針對指向類對象的指針的 -*) 。18. 以下基類中的成員函數(shù)表示純虛函數(shù)的是()A. virtual void tt()=0B. void tt(int)=0C. virtual void tt(int)D. virtual void tt(int)答案: A解析:(P173)當在基類中不能為虛函數(shù)給出一個有意義的實現(xiàn)時,可以將其聲明為純虛函數(shù),實現(xiàn)由派生類完成。格式: virtual()=0; 。19. C+類體系中,不能被派生類繼承的有()A. 常成員函數(shù)B. 構(gòu)造函數(shù)C. 虛函數(shù)D. 靜態(tài)成員函數(shù)答案: B解析:(P132)構(gòu)造函數(shù)不能被繼承。20. 靜態(tài)

31、成員函數(shù)不能說明為()A. 整型函數(shù)B. 浮點函數(shù)C. 虛函數(shù)D. 字符型函數(shù)答案: C解析:(P108)使用關(guān)鍵字static聲明的成員函數(shù)就是靜態(tài)成員函數(shù),靜態(tài)成員函數(shù)也屬于整 個類而不屬于類中的某個對象,它是該類的所有對象共享的成員函數(shù)。 靜態(tài)成員函數(shù)可以在類體內(nèi)定義,也可以在類外定義。當在類外定義時,要注意不能使用 static 關(guān)鍵字作為前綴。由于靜態(tài)成員函數(shù)在類中只有一個拷貝(副本),因此它訪問對象的成員時要受到一些限制: 靜態(tài)成員函數(shù)可以直接訪問類中說明的靜態(tài)成員,但不能直接訪問類中說明的非靜態(tài)成員; 若要訪問非靜態(tài)成員時,必須通過參數(shù)傳遞的方式得到相應(yīng)的對象,再通過對象來訪問。

32、虛 函數(shù)是非靜態(tài)的、非內(nèi)聯(lián)的成員函數(shù)。靜態(tài)成員函數(shù)不能被說明為虛函數(shù)。 二、填空題1. 假設(shè) int a=1,b=2;則表達式(+a/b)*b-的值為 _。答案:2解析前綴+或一一表示先使變量值變化,再使用,這和后綴恰恰相反。但是編譯 cout(+a/b)*b- 時,先 +a/b值為 1,后 1*b-,先取 b = 2,結(jié)果為 2,再讓 b= 1。2. 抽象類中至少要有一個 _函數(shù)。 答案: (P1 73)純虛解析至少有一個純虛函數(shù)的類就稱為抽象類,即不能實例化。3. 一個抽象類的派生類可以實例化的必要條件是實現(xiàn)了所有的_。答案: (P1 73)純虛函數(shù)的定義解析抽象類只因有純虛函數(shù),所以不能

33、被實例化,所以派生類要實例化必須對純虛函數(shù) 進行定義。4. 下面程序的輸出結(jié)果為 _。#include iostream.hvoid main()int num=2,i=6;doi-;num+;while(-i);coutnumendl;答案:5解析 dowhile 循環(huán),前綴先使 i 減少 1 后判斷是否為零,不為零時再次執(zhí)行循環(huán),為零退 出循環(huán)。循環(huán)值執(zhí)行 3次就退出,所以結(jié)果為 5。5. 靜態(tài)成員函數(shù)、友元函數(shù)、構(gòu)造函數(shù)和析構(gòu)函數(shù)中,不屬于成員函數(shù)的是 _。 答案: (P1 09)友元函數(shù) 解析友元函數(shù)不是類成員,但可以訪問類成員。類的封裝性保證了數(shù)據(jù)的安全,但引入 友元,雖然訪問類是方

34、便了,但確實破壞類訪問的安全性。6. 在用C+進行程序設(shè)計時,最好用 代替malloc。答案: (P1 0)new解析new與delete是C+語言特有的運算符,用于動態(tài)分配和釋放內(nèi)存。new用于為各種數(shù) 據(jù)類型分配內(nèi)存,并把分配到的內(nèi)存首地址賦給相應(yīng)的指針。neW勺功能類似于malloc ()函數(shù)。使用neW勺格式為:指針變量new數(shù)據(jù)類型;其中, 數(shù)據(jù)類型可以是基本數(shù)據(jù)類型,也可以是由基本類型派生出來的類型;指針變量取得分配到的內(nèi)存首地址。new有3種使用形式。( 1 )給單個對象申請分配內(nèi)存int *ip;ip=new int;/ip指向1個未初始化的 int 型對象( 2 )給單個對象

35、申請分配內(nèi)存的同時初始化該對象int *ip;ip=new int(68);/ip指向 1 個表示為 68的 int 型對象(3)同時給多個對象申請分配內(nèi)存int *ip;ip=new int5;/ip 指向 5個未初始化的 int 型對象的首地址for(int i=0;i5;i+)ip i =5*i+1;/ 給ip 指向的 5個對象賦值用new申請分配內(nèi)存時,不一定能申請成功。若申請失敗,則返回NULL即空指針。因此,在程序中可以通過判斷new的返回值是否為0來獲知系統(tǒng)中是否有足夠的空間供用戶使用。7. 由const修飾的對象稱為 。答案:(P113)常對象解析使用con st關(guān)鍵字說明的成

36、員函數(shù)稱為常成員函數(shù),使用 const關(guān)鍵字說明的對象稱 為常對象。常成員函數(shù)的說明格式如下:返回類型說明符 成員函數(shù)名 (參數(shù)表)const;常成員函數(shù)不更新對象的數(shù)據(jù)成員,也不能調(diào)用該類中沒有用const修飾的成員函數(shù)。常對象 只能調(diào)用它的常成員函數(shù),而不能調(diào)用其他成員函數(shù)。const關(guān)鍵字可以用于參與重載函數(shù)的 區(qū)分。8. 在C+程序設(shè)計中,建立繼承關(guān)系倒掛的樹應(yīng)使用繼承。答案:(P138)單解析一個基類可以派生多個子類,一個子類可以再派生出多個子類,這樣就形成了一個 倒立的樹。9. 基類的公有成員在派生類中的訪問權(quán)限由 _決定。答案:(P132)訪問控制方式或繼承方式10. 不同對象可

37、以調(diào)用相同名稱的函數(shù),但執(zhí)行完全不同行為的現(xiàn)象稱為_。答案:(P167)多態(tài)性解析多態(tài)性的概念。 虛函數(shù)是實現(xiàn)多態(tài)的基礎(chǔ), 運行過程中的多態(tài)需要同時滿足 3個條件:(1) 類之間應(yīng)滿足子類型關(guān)系。 (2) 必須要有聲明的虛函數(shù)。 (3) 調(diào)用虛函數(shù)操作的是指向?qū)ο?的指針或者對象引用;或者是由成員函數(shù)調(diào)用虛函數(shù)(如果是在構(gòu)造函數(shù)或析構(gòu)函數(shù)中調(diào)用 虛函數(shù),則采用靜態(tài)聯(lián)編)。11. this 指針始終指向調(diào)用成員函數(shù)的 _。答案:對象this 指針是隱藏的指針,它指向調(diào)用函數(shù)的對象。12. 預(yù)處理命令以 _符號開頭。答案: (P183)operater解析文件包含、預(yù)處理和編譯都是以開頭。13.

38、類模板用來表達具有 _的模板類對象集。答案: (P 1 45)相同處理方法解析模板特點是不同的數(shù)據(jù)具有相同的處理方法的抽象。14. C+g序的源文件擴展名為_。答案: (P21)cpp解析源程序 *.cpp, 目標文件為 *.obj, 可執(zhí)行程序 *.exe 。15. 在#include命令中所包含的頭文件,可以是系統(tǒng)定義的頭文件,也可以是_的頭文件。答案:(P7)自定義解析 include 裝入文件有兩種方式 和“”,一是系統(tǒng)的,一是自定義文件。16. vector 類中向向量尾部插入一個對象的方法是 _。答案: (P157)push_back17. C+語言中如果調(diào)用函數(shù)時,需要改變實參或

39、者返回多個值,應(yīng)該采取方式。答案:(P51)傳地址或引用解析傳地址即指針,在函數(shù)中通過指針修改它指向的變量的值時,實參也就變化了。使 用引用,直接修改變量的別名即引用的值,該變量也就隨著變化。18. 語句序列ifstream infile;infile.open( “ data . dat ”);的功能可用一個語句實現(xiàn),這個語句是 _。答案: (P199)ifstream infile(“data.dat ” );解析 void ifstream:open(const char *fname,int mode=ios:in,int access=filebuf:openprot);ifstre

40、am:ifstream(const char *fname,int mode=ios:in,intaccess=filebuf:openprot);其中,第一個參數(shù)是用來傳遞文件名的;第二個參數(shù)mode勺值決定文件將如何被打開;第三個參數(shù)access的值決定文件的訪問方式,一般取缺省值filebuf:openprot,表示是普通文件。mode勺取值如下:(1)ios:in:打開一個文件進行讀操作,而且該文件必須已經(jīng)存在;(2) ios:nocreate :不建立新的文件。當文件不存在時,導(dǎo)致 open() 失??; (3)ios:noreplace :不修改原來已經(jīng)存在的文件。若文件已經(jīng)存在,導(dǎo)

41、致 open() 失??; (4)ios:binary :文件以二進制方式打開,缺省時為文本文件。19. 如果要把類B的成員函數(shù)void fun()說明為類A的友元函數(shù),貝U應(yīng)在類A中加入語句 。答案: (P111)friend void B:fun();解析聲明成員函數(shù)作為另外一個類的友元函數(shù)時,使用類作用域運算符:。20. 在編譯指令中,宏定義使用 _指令。答案: (P6、97)#define解析靜態(tài)成員是所有對象共享的特征,也就是類的特征。C+S序設(shè)計模擬試卷(三)一、單項選擇題1. 設(shè)有定義int i;double j = 5;,則10+i+j值的數(shù)據(jù)類型是()A. intB. doub

42、leC. floatD. 不確定答案: B解析:考察數(shù)據(jù)的轉(zhuǎn)換,j是double類型,運算只能作同類型的運算,所以要轉(zhuǎn)換,而int能自動轉(zhuǎn)換為double類型,所以結(jié)果是double類型。2. 要禁止修改指針p本身,又要禁止修改p所指向的數(shù)據(jù),這樣的指針應(yīng)定義為()A. const char *p= “ABCD”;B. char *const p= “ABCD”;C. char const *p= “ABCD”;D. const char * const p=“ABCD”;答案: D解析:(P12)co nst char *p 說明禁止通過p修改所指向的數(shù)據(jù)。char * con st p 則

43、說明不能修 改指針p的地址。因此con st char * con st p= “ ABCD ;它禁止修改指針p本身,又禁止修改 p所指向的數(shù)據(jù)。3. 類的構(gòu)造函數(shù)被自動調(diào)用執(zhí)行的情況是在定義該類的()A. 成員函數(shù)時B. 數(shù)據(jù)成員時C. 對象時D. 友元函數(shù)時答案: C解析: (P75) 建立對象時,自動構(gòu)造函數(shù)的初始化對象,是系統(tǒng)自動調(diào)用的。而成員函數(shù)、友 元函數(shù),需要用戶直接調(diào)用,因此選擇 C項。4. 已知類A是類B的友元,類B是類C的友元,則()A. 類A定是類C的友元B. 類C一定是類A的友元C. 類C的成員函數(shù)可以訪問類B的對象的任何成員D. 類A的成員函數(shù)可以訪問類B的對象的任何

44、成員答案:C解析: (P105) 友元說明方法如下: friend?;/ 友元類類名 使用友元可以訪問所有成員:(1) 友元關(guān)系不能被繼承。(2) 友元關(guān)系是單向的,不具有交換性。所以,B項和D項錯誤。(3) 友元關(guān)系不具有傳遞性。所以,A項錯誤。5. 假定一個類的構(gòu)造函數(shù)為“ A(int i=4, int j=0) a=i;b=j;”, 則執(zhí)行“ A x (1); ”語句后,x.a和x.b的值分別為()A. 1和0B. 1和4C. 4和0D. 4和1答案: A解析: (P75) 帶默認的構(gòu)造函數(shù),對應(yīng)實參沒有值時就采用形參值。調(diào)用構(gòu)造函數(shù)時, i=1, 不采用默認值,而只有一個參數(shù),j采用默

45、認值0即j=0,因此a=1,b=0,選擇A項。6. 關(guān)于this指針使用說法正確的是()A. 保證每個對象擁有自己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)的代碼B. 保證基類私有成員在子類中可以被訪問。C. 保證基類保護成員在子類中可以被訪問。D. 保證基類公有成員在子類中可以被訪問。答案: A解析: (P86)this 指針是隱藏的,可以使用該指針來訪問調(diào)用對象中的數(shù)據(jù)。基類的成員在派 生類中能否訪問,與繼承方式有關(guān),與this沒有關(guān)系。所以選擇A項。7. 所謂多態(tài)性是指 ()A. 不同的對象調(diào)用不同名稱的函數(shù)B. 不同的對象調(diào)用相同名稱的函數(shù)C. 一個對象調(diào)用不同名稱的函數(shù)D. 一個對象調(diào)用不同名稱

46、的對象答案: B解析:(P167)多態(tài)性有兩種靜態(tài)多態(tài)性和動態(tài)多態(tài)性,靜態(tài)多態(tài)性是指調(diào)用同名函數(shù),由于 參數(shù)的不同調(diào)用不同的同名函數(shù);動態(tài)多態(tài)性是指不同對象調(diào)用同名函數(shù)時,由于對象不同 調(diào)用不同的同名函數(shù)。 多態(tài)性肯定具有相同的函數(shù)名,所以選擇 B項。8. 友元關(guān)系不能()A. 提高程序的運行效率B. 是類與類的關(guān)系C. 是一個類的成員函數(shù)與另一個類的關(guān)系D. 繼承答案: D解析:(P111)友元可以是函數(shù)與類的關(guān)系即友元函數(shù),也可以類與類的關(guān)系即友元類,但友 元不能繼承,是單向性,且不具有傳遞性。友元可以訪問類中所有成員,提高了訪問的方便 性。因此選擇D項。9. 語句ofstream f(

47、“TEMP.DA”,ios:app | ios:binary)?的功能是建立流對象 f,試圖打開文件TEMP.DAT并與之連接,并且()A. 若文件存在,將文件寫指針定位于文件尾;若文件不存在,建立一個新文件B. 若文件存在,將其置為空文件;若文件不存在,打開失敗C. 若文件存在,將文件寫指針定位于文件首;若文件不存在,建立一個新文件D. 若文件存在,打開失敗;若文件不存在,建立一個新文件答案:A解析: (P199)ios:binary ,采用二進制形式, ios:app 定位到文件尾部。10. 構(gòu)造函數(shù)不具備的特征是()A. 構(gòu)造函數(shù)的函數(shù)名與類名相同B. 構(gòu)造函數(shù)可以重載C. 構(gòu)造函數(shù)可以

48、設(shè)置默認參數(shù)D. 構(gòu)造函數(shù)必須指定類型說明答案: D解析:(P75)構(gòu)造函數(shù)無返回類型不能繼承但可以重載,所以選擇D項。11. 在公有繼承的情況下,基類的公有或保護成員在派生類中的訪問權(quán)限()A. 受限制B. 保持不變C. 受保護D. 不受保護答案: B解析:(P132)繼承方式的不同派生類成員的權(quán)限也不同,采用公有繼承,除了私有無法訪問外,公有、保護在派生類中保持不變,所以選擇B項。12. 假定一個類的構(gòu)造函數(shù)為 A(int aa,int bb) a=aa-;b=a*bb;,則執(zhí)行A x(4,5);語句后,x.a和x.b的值分別為()A. 3和15B. 5和4C. 4和20D. 20和5答案

49、: C解析:(P75)a=4,因為后減,b的值與a、bb相關(guān),b = 4*5=20,而與aa沒有任何關(guān)系。13. C+寸C語言做了很多改進,即從面向過程變成為面向?qū)ο蟮闹饕蚴牵ǎ〢. 增加了一些新的運算符B. 允許函數(shù)重載,并允許設(shè)置缺省參數(shù)C. 規(guī)定函數(shù)說明符必須用原型D. 引進了類和對象的概念答案: D解析:(P29)C+是一面向?qū)ο蟮恼Z言,面向?qū)ο蟮奶卣鳎橄?、多態(tài)、繼承和封裝。14. 在類中說明的成員可以使用關(guān)鍵字的是()A. publicB. externC. cpuD. register答案: A解析:extern用于聲明外部變量的。register聲明寄存器類型變量。無cpu

50、類型。它們都不能 聲明類成員。public聲明為公有訪問權(quán)限,所以選擇A項。15. C+語言中所有在函數(shù)中定義的變量,連同形式參數(shù),都屬于()A. 全局變量B. 局部變量C. 靜態(tài)變量D. 函數(shù)答案:B解析:變量存儲類可分為兩類:全局變量和局部變量。(1)全局變量:在函數(shù)外部定義的變量稱為全局變量,其作用域為:從定義變量的位置開始 到源程序結(jié)束。使用全局變量降低了程序的可理解性,軟件工程學(xué)提倡盡量避免使用全局變 量。(2)局部變量:在函數(shù)內(nèi)部定義的變量稱為局部變量,其作用域為:從定義變量的位置開始 到函數(shù)結(jié)束。局部變量包含自動變量( auto )靜態(tài)變量( static )以及函數(shù)參數(shù)。形參不

51、能 是靜態(tài)的。所以選擇B項。16. 在私有繼承的情況下,基類成員在派生類中的訪問權(quán)限()A. 受限制B. 保持不變C. 受保護D. 不受保護答案: A解析:(P132)私有繼承下,基類中的公有或保護成員在派生類中也是私有的,所以選擇A選項。17. 使用地址作為實參傳給形參,下列說法正確的是()A. 實參是形參的備份B. 實參與形參無聯(lián)系C. 形參是實參的備份D. 實參與形參是同一對象答案: D解析:(P51)地址作為實參,表示實參與形參代表同一個對象。如果實參是數(shù)值,形參也是普 通變量,此時形參是實參的備份。所以選擇 D項。18. C+勺繼承性允許派生類繼承基類的()A. 部分特性,并允許增加

52、新的特性或重定義基類的特性B. 部分特性,但不允許增加新的特性或重定義基類的特性C. 所有特性,并允許增加新的特性或重定義基類的特性D. 所有特性,但不允許增加新的特性或重定義基類的特性答案: A解析:(P129)派生類有兩類成員:一是基類,二是自身類。派生類中的成員不能訪問基類中 的私有成員,可以訪問基類中的公有成員和保護成員。19. 對于int *pa 5;的描述,正確的是()A. pa是一個指向數(shù)組的指針,所指向的數(shù)組是 5個 int型元素B. pa是一個指向某個數(shù)組中第5個元素的指針,該元素是int型變量C. pa 5表示某個數(shù)組的第5個元素的值D. pa是一個具有5個元素的指針數(shù)組,

53、每個元素是一個int型指針答案: D解析:(P117)指針數(shù)組:數(shù)組元素都是相同類型的指針,相同類型的指針是說指針所指向的 對象類型是相同的。例如,語句 int *pa5 ; 定義了一個指針數(shù)組。在指針數(shù)組的定義中有 兩個運算符:*和口,運算符的優(yōu)先級高于*,所以*pa 5等價于*(pa 5 ),pa 5 表示一個數(shù)組,而*表示后面的對象為指針變量,合在一起*pa 5表示一個指針數(shù)組。該數(shù) 組包含5個元素,每個元素都是指向int型的指針。所以選擇D選項。20. 以下基類中的成員函數(shù)表示純虛函數(shù)的是()A. virtual void tt()=0B. void tt(int)=0C. virtual void tt(int)D. virtual void tt(int)答案:A解析: (P173) 當在基類中不能為虛函數(shù)給出一個有意義的實現(xiàn)時, 可以將其聲明為純虛函數(shù), 實現(xiàn)由派生類完成。格式: virtual()=0; 。 二、填空題1. 單目運算符作為類成員函數(shù)重載時,形參個數(shù)為_個。答案: (P189)0 解析

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論