2022年面向?qū)ο蟪绦蛟O(shè)計形成性考核及解答作業(yè)四_第1頁
2022年面向?qū)ο蟪绦蛟O(shè)計形成性考核及解答作業(yè)四_第2頁
2022年面向?qū)ο蟪绦蛟O(shè)計形成性考核及解答作業(yè)四_第3頁
2022年面向?qū)ο蟪绦蛟O(shè)計形成性考核及解答作業(yè)四_第4頁
2022年面向?qū)ο蟪绦蛟O(shè)計形成性考核及解答作業(yè)四_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2011春面向?qū)ο蟪绦蛟O(shè)計單元復(fù)習(xí)指導(dǎo)(4)一、填空題:1. 設(shè)px是指向一個類對象的指針變量,則執(zhí)行 “delete px;”語句時,將自動調(diào)用該類的( )。 A. 無參構(gòu)造函數(shù) B. 帶參構(gòu)造函數(shù) C. 析構(gòu)函數(shù) D. 拷貝構(gòu)造函數(shù) 2. 假定AB為一個類,則執(zhí)行 “AB a10;”語句時調(diào)用該類無參構(gòu)造函數(shù)的次數(shù)為( )。 A. 0 B. 1 C. 9 D. 10 3. 假定AB為一個類,則執(zhí)行 “AB a(2), b3, *p4;”語句時共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為( )。 A. 3 B. 4 C. 5 D. 9 4. 假定AB為一個類,px為指向該類的一個含有n個對象的動態(tài)數(shù)組的指針,

2、則執(zhí)行“delete px;”語句時共調(diào)用該類析構(gòu)函數(shù)的次數(shù)為( )。 A. 0 B. 1 C. n D. n+1 5. 對類中引用成員的初始化是通過構(gòu)造函數(shù)中給出的( )實現(xiàn)的。 A. 函數(shù)體 B. 參數(shù)表 C. 初始化表 D. 初始化表或函數(shù)體 6. 一個類的靜態(tài)數(shù)據(jù)成員所表示屬性 ( )。 A. 是類的或?qū)ο蟮膶傩?B. 只是對象的屬性 C. 只是類的屬性 D. 類和友元的屬性 7. 被非靜態(tài)成員函數(shù)訪問的類的數(shù)據(jù)成員( )。 A. 可以是非靜態(tài)數(shù)據(jù)成員或靜態(tài)數(shù)據(jù)成員 B. 不可能是類的靜態(tài)數(shù)據(jù)成員 C. 只能是類的非靜態(tài)數(shù)據(jù)成員 D. 只能是類的靜態(tài)數(shù)據(jù)成員 8. 引入友元的主要目的是

3、為了( )。 A. 增強(qiáng)數(shù)據(jù)安全性 B. 提高程序的可靠性 C. 提高程序的效率和靈活性 D. 保證類的封裝性 9. 在重載一個運算符時,其參數(shù)表中沒有任何參數(shù),這表明該運算符是( )。 A. 作為友元函數(shù)重載的1元運算符 B. 作為成員函數(shù)重載的1元運算符 C. 作為友元函數(shù)重載的2元運算符 D. 作為成員函數(shù)重載的2元運算符 10. 如果表達(dá)式a+b中的“+”是作為成員函數(shù)重載的運算符,若采用運算符函數(shù)調(diào)用格式,則可表示為( )。 A. a.operator+(b) B. b.operator+(a) C. operator+(a,b) D. operator(a+b) 11如果表達(dá)式a+

4、中的“+”是作為普通函數(shù)重載的運算符,若采用運算符函數(shù)調(diào)用格式,則可表示為( )。 A. a.operator+() B. operator+(a) C. operator+(a,1) D. operator+(1,a) 12. 一個程序中數(shù)組a和變量k定義為“int a510,k;”,且程序中包含有語句“a(2,5)=+k*3;”,則此語句中肯定屬于重載操作符的是( )。 A. ( ) B. = C. + D. * 13. 下面是重載雙目運算符+的普通函數(shù)原形,其中最符合+原來含義的是( )。 A. Value operator+(Value, Value); B. Value operat

5、or+(Value,int); C. Value &operator+(Value, Value); D. Value &operator+(Value&, Value&); 14. 關(guān)于插入運算符的重載,下列說法不正確的是( )。 A. 運算符函數(shù)的返回值類型是ostream & 。 B. 重載的運算符必須定義為類的成員函數(shù)。 C. 運算符函數(shù)的第一個參數(shù)的類型是ostream & 。 D. 運算符函數(shù)有兩個參數(shù)。 15. C+的繼承性允許派生類繼承基類的( )。 A. 部分特性,并允許增加新的特性或重定義基類的特性 B. 部分特性,但不允許增加新的特性或重定義基類的特性 C. 所有特性,并

6、允許增加新的特性或重定義基類的特性 D. 所有特性,但不允許增加新的特性或重定義基類的特性二、填空題1. 當(dāng)一個隊列為滿時,不能對其做_元素的操作。 2在一個用鏈表實現(xiàn)的隊列類中,假定每個結(jié)點包含的值域用elem表示,包含的指針域用next表示,鏈隊的隊首指針用elemHead表示,隊尾指針用elemTail表示,當(dāng)鏈隊非空時,_指向隊首結(jié)點的后繼(即下一個)結(jié)點。 3. 在一個用鏈表實現(xiàn)的隊列類中,若鏈隊為空或只含有一個結(jié)點,則隊首指針的值與隊尾指針的值_。 4一個類的_函數(shù)通常用于實現(xiàn)釋放該類對象中指針成員所指向的動態(tài)存儲空間的任務(wù)。 5定義類動態(tài)對象數(shù)組時,其元素只能靠自動調(diào)用該類的_來

7、進(jìn)行初始化。 6. 假定 AB為一個類,則執(zhí)行“AB a10;”語句時,系統(tǒng)自動調(diào)用該類構(gòu)造函數(shù)的次數(shù)為_。 7對類中引用成員的初始化只能通過在構(gòu)造函數(shù)中給出的_來實現(xiàn)。 8. 假定要把aa定義為AB類中的一個引用整數(shù)型數(shù)據(jù)成員,則定義語句為_。 9假定用戶為類AB定義了一個構(gòu)造函數(shù)“AB(int aa) a=aa;”,則系統(tǒng)(會/不會)_為該類自動定義一個無參構(gòu)造函數(shù)AB() 。 10假定用戶為類AB定義了一個構(gòu)造函數(shù)“AB(int aa=0):a(aa)”,則定義該類的對象時,可以有_種不同的定義格式。 11. 派生類的成員函數(shù)能夠直接訪問所含基類的_成員函數(shù)和_成員函數(shù)。12在定義一個派

8、生類時,使用private關(guān)鍵字表示為私有繼承,使用_關(guān)鍵字表示為公有繼承。三、程序填空: 1. 已知一個利用數(shù)組實現(xiàn)棧的類定義如下:const int ARRAY_SIZE=10;class Stack public:void Init() top=-1; /初始化棧為空 void Push(int newElem); /向棧中壓入一個元素int Pop(); /從棧頂彈出一個元素bool Empty() /判???if(top=-1) return true;else return false;int Depth() return top+1; /返回棧的深度void Print(); /

9、按照后進(jìn)先出原則依次輸出棧中每個元素,直到棧空為止private:int elemARRAY_SIZE; /用于保存堆棧元素的數(shù)組int top; /指明棧頂元素位置的指針; 該類的Pop和Print函數(shù)的實現(xiàn)分別如下:_(1)_ if(top=-1) cout???endl;exit(1); /中止運行return _(2)_;void Stack:Print() while(!Empty() cout_(3)_ ;(1) (2) (3)2. #include #include class A int *a; int n; int MaxLen; public: A(): a(0), n(0

10、), MaxLen(0) A(int *aa, int nn, int MM) n=nn; MaxLen=MM; if(nMaxLen) exit(1); _(1)_; /由a指向長度為MaxLen的動態(tài)數(shù)組 for(int i=0; in; i+) ai=aai; A() delete a; int GetValue(int i) _(2)_ /函數(shù)體返回ai的值 ; void main() int b10=1,2,3,4,5,6,7,8,9,10; A r(b,10,10); int i,s=0; for(i=0; i10; i+); _(3)_ /把r對象的a數(shù)據(jù)成員中的每個 /元素值依

11、次累加到s中 couts=sendl; (1) (2) (3) 3. 在下面一段類定義中, Derived類公有繼承了基類Base。需要填充的函數(shù)由注釋內(nèi)容給出了功能。class Base private: int mem1,mem2; /基類的數(shù)據(jù)成員 public: Base(int m1,int m2) mem1=m1; mem2=m2; void output()coutmem1 mem2 ; /.;class Derived: public Base private: int mem3; /派生類本身的數(shù)據(jù)成員 public: /構(gòu)造函數(shù),由m1和m2分別初始化mem1和mem2,由

12、m3初始化mem3 Derived(int m1,int m2, int m3); /輸出mem1,mem2和mem3數(shù)據(jù)成員的值 void output() _(1)_; coutmem3endl;/.;Derived:Derived(int m1,int m2, int m3): _(2)_ _(3)_;(1) (2) (3) 四、寫出程序運行結(jié)果: 1. #include class Franction /定義分?jǐn)?shù)類 int nume; /定義分子 int deno; /定義分母 public: /把*this化簡為最簡分?jǐn)?shù),具體定義在另外文件中實現(xiàn)void FranSimp(); /返

13、回兩個分?jǐn)?shù)*this和x之和,具體定義在另外文件中實現(xiàn)Franction FranAdd(const Franction& x); /置分?jǐn)?shù)的分子和分母分別0和1 void InitFranction() nume=0; deno=1; /置分?jǐn)?shù)的分子和分母分別n和d void InitFranction(int n, int d) nume=n; deno=d; /輸出一個分?jǐn)?shù)void FranOutput() coutnume/denoendl; ;void main() Franction a,b,c,d; a.InitFranction(6,15); b.InitFranction(3

14、,10); c.InitFranction(); c=a.FranAdd(b); d=c.FranAdd(a);couta: ; a.FranOutput(); coutb: ; b.FranOutput(); coutc: ; c.FranOutput(); coutd: ; d.FranOutput(); 2. #includeclass A int a,b;public: A() a=b=0; A(int aa, int bb) a=aa; b=bb;int Sum() return a+b;int* Mult() int *p=new int(a*b);return p;void ma

15、in() int *k;A x(2,3), *p; p=new A(4,5); coutx.Sum() *(x.Mult()endl; coutSum() Mult()next; return c; 假定IntNode的類型定義為: struct IntNode int data; /結(jié)點值域 IntNode* next; /結(jié)點指針域 ; 2. int f(const char *s) int i=0; while(*s+)i+; return i; ;六、程序改錯,請根據(jù)程序段或函數(shù)模塊的功能改寫個別地方的錯誤。 1. 下面是分?jǐn)?shù)類fract的定義及測試主程序,在類定義及其友元函數(shù)定義中有

16、兩處錯誤,更正錯誤后程序應(yīng)顯示41/28,請指出錯誤所在行的行號并給出改正意見。class fract int den; /分子 int num; /分母public: fract(int d=0,int n=1):den(d),num(n) /1行 friend fract &operator+=(fract,fract&); /2行 void show() coutden/next 3. 相同 4. 析構(gòu) 5. 無參構(gòu)造函數(shù) 6. 10 7. 初始化表 8. int& aa; 9. 不會 10. 2 11. 公有 保護(hù) 12Public 三、程序填充參考解答1. (1) int Stack

17、:Pop() (2) elemtop- (3) Pop()2. 答案:(1) a=new intMaxLen (b) return ai; (c) s+=r.GetValue(i)3. (1) Base:output() (2) Base(m1,m2) (3) mem3=m3四、程序運行結(jié)果參考解答1. a: 6/15 b: 3/10 c: 7/10 d: 11/10 2. 5 6 9 20 五、指出程序或函數(shù)的功能1. 統(tǒng)計出以表頭指針為f的鏈表中結(jié)點的個數(shù)。2. 求出并返回字符指針參數(shù)s所指向的字符串長度。六、程序改錯,請根據(jù)程序段或函數(shù)模塊的功能改寫個別地方的錯誤。1. 2 5 friend fract &operator+=(fract&,fract); fract &operator+=(fract &f1,fract f2); 七、編程:1. Strings:Strings(char*str) n=strlen(str);s=new charn+1;s

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論