c復習題答案分解_第1頁
c復習題答案分解_第2頁
c復習題答案分解_第3頁
c復習題答案分解_第4頁
c復習題答案分解_第5頁
免費預覽已結束,剩余6頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、重慶交通大學電信類15級C+面向對象程序設計課程復習題(2016年 5月)一、選擇題1 .以下說法中正確的是(B )。A. C+程序總是從第一個定義的函數開始執行B. C+程序總是從main函數開始執行C. C+函數必須有返回值,否則不能使用函數D. C+程序中有調用關系的所有函數必須放在同一個程序文件中2 .下面有關構造函數的描述中,正確的是( B )。A.構造函數可以帶有返回值B.構造函數的名字與類名完全相同C.構造函數必須帶有參數D.構造函數必須定義,不能缺省3 .在聲明類時,下面的說法正確的是(C )。A.可以在類的聲明中給數據成員賦初值B.數據成員的數據類型可以是registerC.

2、 private , public , protected可以按任意順序出現D.沒有用private , public , protected定義的數據成員是公有成員4 .在下面有關析構函數特征的描述中,正確的是(A. 一個類可以有多個析構函數C.析構函數不能指定返回類型5 .構造函數是在(B )時被執行的。A.程序編譯B.創建對象6 .下面有關靜態成員函數的描述中,正確的是(C )。B.析構函數與類名完全相同D.析構函數可以有一個或多個參數C.創建類D.程序裝入內存B)A.在靜態成員函數中可以使用this指針B.在建立對象前,就可以為靜態數據成員賦值C.靜態成員函數在類外定義是,要用 sta

3、tic前綴D.靜態成員函數只能在類外定義7.下面有關友員函數的描述中,真確的說法是( A )A.友員函數是獨立于當前類的外部函數B. 一個友員函數不可以同時定義為兩個類的友員函數C.友員函數必須在類的外部進行定義D.在類的外部定義友員函數時必須加上friend關鍵字8 .友員的作用之一(A)A.提高程序的運行效率C.實現數據的隱蔽性9 .使用派生類的主要原因是(A ) A.提高代碼的可重用性C.加強類的封裝性10 .在C+中繼承方式有幾中(CA. 1B. 211 .派生類的對象對它的基類成員中( A.公有繼承的公有成員; C.公有繼承的保護成員;B.加強類的封裝D.增加成員函數的種類B.提高程

4、序的運行效率D.實現數據的隱藏C. 3D.4A)是可以訪問的。B.公有繼承的私有成員;D.私有繼承的公有成員。12 .類中定義的成員默認為(B )訪問屬性。A. publicB. privateC. protected D. friend13 .下列存儲類標識符中,要求通過函數來實現一種不太復雜的功能,并且要求加快執行速 度,選用(A )合適。A.內聯函數; B.重載函數;C.遞歸調用; D.嵌套調用。14.C+C語言作了很多改進,下列描述中( 了面向對象。A.增加了一些新的運算符;C.規定函數說明必須用原型;D )使得C語言發生了質變,從面向過程變成B.允許函數重載,并允許設置缺省參數;D.

5、引進了類和對象的概念;15.按照標識符的要求,(A )符號不能組成標識符。A.連接符B.下劃線C.大小寫字母D.數字字符16.下列變量名中,(A )是合法的。A CHINA B byte-size c doubleD A+a17.下列各種函數中,(C )不是類的成員函數。A構造函數B析構函數C友元函數 D拷貝構造函數18.下列(A )是正確的語句。B a=17C x+yD cout<<"n"19.不能作為函數重載判斷的依據的是(B)A.返回類型B. constC.參數個數D.參數類型20 .通常,拷貝構造函數的參數是(C )B.某個對象的成員名D.某個對象的指針

6、名A.某個對象名C.某個對象的引用名21 .下面對靜態數據成員的描述中,正確的是(C)A類的不同對象有不同的靜態數據成員值B類的每個對象都有自己的靜態數據成員 C靜態數據成員是類的所有對象共享的數據D靜態數據成員不能通過類的對象調用22 .假定AB為一個類,則執行AB x;語句時將自動調用該類的(B )A.有參構造函數B.無參構造函數 C.拷貝構造函數D.賦值構造函數23 .C+程序從上機到得到結果的幾個操作步驟依次是(B )。A.編譯、編輯、連接、運行B.編輯、編譯、連接、運行C.編譯、運行、編輯、連接D.編輯、運行、編輯、連接24 .假定一條定義語句為“int a10, x, *p=a;,

7、若要把數組a中下標為3的元素值賦給x,則不正確的語句為( D)。A. x=p3;B. x=*(a+3);C. x=a3;D. x=*p+3;25 .關于封裝,下列說法中不正確的是( D )。A.通過封裝,對象的全部屬性和操作結合在一起,形成一個整體B.通過封裝,一個對象的實現細節被盡可能地隱藏起來(不可見)C.通過封裝,每個對象都成為相對獨立的實體D.通過封裝,對象的屬性都是不可見的26 .預處理命令在程序中都是以(B)符號開頭的。A. *B. # C. & D. 27 .存儲以下數據,占用存儲字節最少的是( B )。A. 0 B. 0' C. "0"D.

8、0.0(D)符號作為分隔28 .程序運行中需要從鍵盤上輸入多于一個數據時,各數據之間應使用符。A.空格或逗號B.逗號或回車C.逗號或分號D.空格或回車29 .假定變量m定義為“int m=7;,則定義變量A. int p=&m;B. int *p=&m;30 .下面的哪個保留字不能作為函數的返回類型?A. voidB. int31 .采用重載函數的目的是(D )。A.實現共享B.減少空間p的正確語句為(B )。D. int *p=m;C. int &p=*m;(C)C. newD.longC.提高速度D.使用方便,提高可讀性32.假定AB為一個類,則(C)為該類的拷貝構

9、造函數的原型說明。A. AB(AB x); B. AB(int x);C. AB(AB& x);D. void AB(AB& x);33、C+C語言作了很多改進,下列描述中( D )使得C語言發生了質變,從面向過程變 成了面向對象。A、增加了一些新的運算符;B、允許函數重載,并允許設置缺省參數;C、規定函數說明必須用原型;D、引進了類和對象的概念;34、所謂數據封裝就是將一組數據和與這組數據有關操作組裝在一起,形成一個實體,這 實體也就是(A)。A.類 B.對象 C.函數體 D.數據塊35、關于new運算符的下列描述中,( C )是錯誤的。A、它可以用來動態創建對象和對象數組;

10、B、使用它創建的對象或對象數組可以使用運算符delete刪除;C、使用它創建對象時要調用構造函數;D、使用它創建對象數組時必須指定初始值;36、( D)不是構造函數的特征。A、構造函數的函數名與類名相同;B、構造函數可以重載;C、構造函數可以設置缺省參數;D、構造函數必須指定類型說明。37、假定一個類的卞造函數為B(int x,int y)a=x-;b=a*y-;, 則執行B x(3,5);語句后,x.a和x.b的值分別為(C)A、3和 5B、5和 3C、3和 15D、20和538、關于成員函數特征的下列描述中,( A )是錯誤的。A、成員函數一定是內聯函數;B、成員函數可以重載;C、成員函數

11、可以設置缺省參數值;D、成員函數可以是靜態的;39、在公有繼承的情況下,基類成員在派生類中的訪問權限( B )。A、受限制B、保持不變C、受保護 D、不受保護40、友元的作用是(A )。A、提高程序的運用效率;B、加強類的封裝性;C、實現數據的隱藏性;D、增加成員函數的種類;41、在C+中,關于下列設置缺省參數值的描述中,( B )是正確的。A、不允許設置缺省參數值;B、在指定了缺省值的參數右邊,不能出現沒有指定缺省值的參數;C、只能在函數的定義性聲明中指定參數的缺省值;D、設置缺省參數值時,必須全部都設置;42、關于delete運算符的下列描述中,( C )是錯誤的。A、它必須用于new返回

12、的指針;B、使用它刪除對象時要調用析構函數;C、對一個指針可以使用多次該運算符;D、指針名前只有一對方括號符號,不管所刪除數組的維數。43、const int *p說明不能修改(C )。A、p指針;B、p指針指向的變量;C、p指針指向的數據類型;D、上述A、B、C三者;44、當需要打開A盤上白以xxk.dat文件用于輸入時,則定義文件流對象的語句為(B)。A、fstream fin("A:xxk.dat "、,1ifstBeam fin( "A:xxk.dat " ,ios:nocreate)C、 ofstream fin( "A:xxk.da

13、t > )fstrfeam fin( "A:xxk.dat " ,ios:app)45、派生類的對象對它的基類成員中( A )是可以訪問的。A、公有繼承的公有成員;B、公有繼承的私有成員;C、公有繼承的保護成員;D、私有繼承的公有成員; 46、在 int a=3; *p=&a;中,*p 的值是(D )。A、變量a的地址值B、無意義C、變量p的地址值D、 347.下述靜態數據成員的特征中,( D )是錯誤的。A.說明靜態數據成員時前邊要加修飾符static;B.靜態數據成員要在類體外進行初始化;C.引用靜態數據成員時,要在靜態數據成員名前加< 類名和作用域

14、運算符;D.靜態數據成員不是所有對象所共用的。48. ( A)是析構函數的特征。A. 一個類中只能定義一個析構函數; B.析構函數與類名沒有關系;Jm賦值為C.析構函數的定義只能在類體內; D.析構函數可以有各個或多個參數。49.已知:p是一個指向類A數據成員m的指針,A1是類A的一個對象。如果要給5, ( C )是正確的。A. A1.p=5;B. A1->p=5;C. A.*p=5;D. *A1.p=5;50.派生類的構造函數的成員初始化列中,不能包含( C )。A.基類的構造函數;B.派生類中子對象的初始化;C.基類的子對象初始化;D.派生類中一般數據成員的初始化51.派生類的對象對

15、它的基類成員中( A)是可以訪問的。A.公有繼承的公有成員;B.公有繼承的私有成員;C.公有繼承的保護成員;D.私有繼承的公有成員。52 . C+類體系中,不能被派生類繼承的有( A )。A.構造函數B.虛函數C.靜態成員函數D.賦值操作函數53 .下面標識符中正確的是( A )。A. _abc B . 3ab C . intD . +ab54 .下列哪項(D )不是面向對象程序設計的主要特征?a.封裝b.繼承c.多態d.結構、填空題1 . C+語言的頭文件與源程序文件擴展名分別是( .h )和(.cpp)。2 .在C+程序中使用基本輸入與輸出流時需要包含的頭文件名是(<iostream

16、.h> )3 .在C+語言中,惟一的一個三目運算運算符是(?:)。4 . C+中當一個函數無返回值時,則函數的類型是( void )。5 . 一個類中可以有(多)個構造函數,只能有 (一 )個析構函數。6 .一般情況下,按照面向對象的要求,把類中的數據成員(屬性)定義為(私有 )權限, 而把成員函數(方法)定義為(公有 )權限.7 .在定義類白對象時,C+程序將自動調用該對象的( 構造)函數初始化對象自身.在撤銷 類的對象時,C+程序將自動調用該對象的( 析構)函數.8 .類繼承中,缺省的繼承方式是(私有繼承 ).9 .在C+語言中,用轉義字符序列('n')或操縱符(en

17、dl )表示輸出一個換行符。10 .表達式a=a + l表不成增量表達式為(+a )。11 .當不需要函數返回任何值時,則應把該函數類型定義為( void )。12.用于輸出表達式值的標準輸出流對象是( cout )。,用于從鍵盤上為變量輸人值的標 準輸人流對象是(cin )。13、變量分為全局和局部兩種,(全局變量默認初始化為0)。變量沒有賦初值時,其值是不確定的。14、假定類AB中有一個公用屬性的靜態數據成員bb,在類外不通過對象名訪問該成員bb的寫法為(AB:bb )。15、類的成員分為 數據成員 和 成員函數。16、一個 類 和 對象 的關系,正如基本數據類型與該類型的變量一樣,如 i

18、nt x;。17、對一個類中的數據成員的初始化可以通過構造函數中的賦值 實現,也可以通過構造函數中的初始化列表實現。18、類有兩種用法:一種是定義對象,即生成類的對象;另一種是通過 派生,派生出新的類。19、C+語言提供的 多態 機制允許一個派生類繼承多個基類,即使這些基類是相互無關I20、聲明虛函數的方法是在基類中的成員函數原型前加上關鍵字virtual 。21、如果一個類中有一個或多個純虛函數,則這個類稱為虛基類 。22、靜態數據成員在定義或說明時,前面要加上關鍵字static 。23、如果成員函數不需要訪問類的非靜態 成員,則可以把它聲明為靜態成員函數。24、友元可以是全局函數.也可以是

19、其他成員函數 。25、若需要把一個函數“void fun();定義'為一個類A的友元函數,則應在類 A的定義中加入一條語句:friend void fun()。26、運算符函數中的關鍵字是operator 它和運算符 一起組成該運算符函數的函數名。27、類中運算符重載一般采用兩種形式: 成員函數和友元函數。28、面向對象程序設計的3大機制為:封裝性、繼承性和多態性。2、類的訪問權限有 private > protected 和 public 三種。29、構造函數是 對象 被創建時自動執行,對象消失時自動執行的成員函數稱為析構函數.30、如果類A繼承了類B,則類A稱為 派生類,類B

20、稱為基類。31、如果一個特定的類型 S當且僅當它提供了類型 T的行為時,則稱類型 S是類型T的子類。32、在類定義中,將 =0 置于虛函數的函數原型的末尾可以聲明該函數為純虛函數。33、類的靜態成員分為 靜態數據成員 和靜態成員函數。34、友元函數的聲明可以放在類的私有部分,也可以放在類的 公有部分,它們是沒有區別的。35、如果說類B是類A的友元類,則類B的所有成員函數都是類 A的成員函數。36、設a和b是兩個整型變量,我們用 a+b的形式求這兩個變量的和;設c和d為浮點型變量,我們用c+d的形式求這兩個變量的和。顯然運算符“+具有不同的用途,這是 運算符重載 的例子。37、當建立 新的對象

21、時,程序自動調用該類的構造函數。38、在C+中有二種參數傳遞方式:傳值和引用。39、模板對處理數據的類型的要求不同可以分為兩種類型:函數模板和類模板。40、異常是通過 檢查(try) 拋出(throw ) 和捕捉 (catch ) 來實現的。41、虛函數實現了 C+的多態機制,類實現了 C+的封裝機制。42、面向對象程序設計的 繼承機制 提供了重復利用程序資源的一種途徑。三、問答題(請以譚浩強版教材為重點,理解和掌握下列基本概念,做出簡明 扼要的回答,內容自行翻書)1 .在C+中,結構(struct)和類(class)的區別是什么?答:在c里結構體只能定義數據成員,不能有函數成員,但可以定義函

22、數指針來模擬函數。在 C+中,結構體和類除了默認的訪問方式和默認的繼承方式不同外,其它都一樣。結構體默認是公 有,類默認是私有。2 .構造函數和析構函數的主要作用是什么?答:構造函數只是起初始化值的作用,但實例化一個對象的時候,可以通過實例去傳遞參數,從主函數傳遞到其他的函數里面,這樣就使其他的函數里面有值了。析構函數與構造函數的作用相反,用于撤銷對象的一些特殊任務處理,可以是釋放對象分配的內存空間。四、讀程序題,寫出程序運行輸出的結果1. #include <iostream>using namespace std;class Student private :char Name

23、8;float Math;float Chinese;public :float average;void SetName(char *name);void SetMath(float math);void SetChinese(float ch);float GetAverage(void);class Student1 char ID12;public :float total; / 標記 1"“void SetTotal(float sum) ; /標記 2"“;void main() Student S1,S2;Student1 S3;cout<<&qu

24、ot;the size of object S1 is:" <<sizeof(S1)<<endl;cout<<"the size of object S3 is:" <<sizeof(S3)<<endl; (a)該程序運行后,輸出結果是:the size of object S1 is: 20the size of object S3 is:16(b)如果修改程序:在 標記1”代碼行前面加入static ,在 標記2”代碼行前加入virtual ,那么輸出結果是:the size of object S1

25、 is: 20the size of object S3 is:16(注:sizeof ()對類體的計算如下:1 .空類的大小為1字節。 3. c+規定任何類型的指針大小為4個字節。5.靜態變量在計算時是不做考慮的。92.int占4字節,char型占1字節,float型占4字節。4. 一個虛函數也占4個字節的指針內存。6.其他成員函數(如構造,析構函數)不納入計算,因為成員函數是針對類體的;而sizeof ()只針對實例。2. #include <iostream>using namespace std;class Afloat x,y;public:A(float a, float b)x=a;y=b;cout<<"初始化自動局部對象 n"A()x=0; y

溫馨提示

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

評論

0/150

提交評論