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

下載本文檔

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

文檔簡介

1、面向?qū)ο蟪绦蛟O(shè)計形成性考核冊作業(yè)四一、填空題:1. 設(shè)px是指向一個類對象的指針變量,則執(zhí)行 “delete px;”語句時,將自動調(diào)用該類的( C )。 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ù)為( D )。 A. 0 B. 1 C. 9 D. 10 3. 假定AB為一個類,則執(zhí)行 “AB a(2), b3, *p4;”語句時共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為( B )。 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ù)為( C )。 A. 0 B. 1 C. n D. n+1 5. 對類中引用成員的初始化是通過構(gòu)造函數(shù)中給出的( C )實現(xiàn)的。 A. 函數(shù)體 B. 參數(shù)表 C. 初始化表 D. 初始化表或函數(shù)體 6. 一個類的靜態(tài)數(shù)據(jù)成員所表示屬性 ( C )。 A. 是類的或?qū)ο蟮膶傩?B. 只是對象的屬性 C. 只是類的屬性 D. 類和友元的屬性 7. 被非靜態(tài)成員函數(shù)訪問的類的數(shù)據(jù)成員(A )。 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、友元的主要目的是為了( C )。 A. 增強數(shù)據(jù)安全性 B. 提高程序的可靠性 C. 提高程序的效率和靈活性 D. 保證類的封裝性 9. 在重載一個運算符時,其參數(shù)表中沒有任何參數(shù),這表明該運算符是( B )。 A. 作為友元函數(shù)重載的1元運算符 B. 作為成員函數(shù)重載的1元運算符 C. 作為友元函數(shù)重載的2元運算符 D. 作為成員函數(shù)重載的2元運算符 10. 如果表達(dá)式a+b中的“+”是作為成員函數(shù)重載的運算符,若采用運算符函數(shù)調(diào)用格式,則可表示為( A )。 A. a.operator+(b) B. b.operator+(a) C. operator+(a,b) D. operator(

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

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

6、性,并允許增加新的特性或重定義基類的特性 B. 部分特性,但不允許增加新的特性或重定義基類的特性 C. 所有特性,并允許增加新的特性或重定義基類的特性 D. 所有特性,但不允許增加新的特性或重定義基類的特性 16. 對于公有繼承,基類中的私有成員在派生類中將 ( C )。 A. 能夠直接使用成員名訪問 B. 能夠通過成員運算符訪問 C. 仍然是基類的私有成員 D. 變?yōu)榕缮惖乃接谐蓡T 17. 建立包含有類對象成員的派生類對象時,自動調(diào)用構(gòu)造函數(shù)的執(zhí)行順序依次為( C )的構(gòu)造函數(shù)。 A. 自己所屬類、對象成員所屬類、基類 B. 對象成員所屬類、基類、自己所屬類 C. 基類、對象成員所屬類、自

7、己所屬類 D. 基類、自己所屬類、對象成員所屬類 18. 下列對派生類的描述中錯誤的說法是:( D )。 A. 派生類至少有一個基類 B. 派生類可作為另一個派生類的基類 C. 派生類除了包含它直接定義的成員外,還包含其基類的成員 D. 派生類所繼承的基類成員的訪問權(quán)限保持不變二、填空題1. 當(dāng)一個隊列為滿時,不能對其做_插入_元素的操作。 2在一個用鏈表實現(xiàn)的隊列類中,假定每個結(jié)點包含的值域用elem表示,包含的指針域用next表示,鏈隊的隊首指針用elemHead表示,隊尾指針用elemTail表示,當(dāng)鏈隊非空時,_ elemHead->next _指向隊首結(jié)點的后繼(即下一個)結(jié)點

8、。 3. 在一個用鏈表實現(xiàn)的隊列類中,若鏈隊為空或只含有一個結(jié)點,則隊首指針的值與隊尾指針的值_相同_。 4一個類的_析構(gòu)_函數(shù)通常用于實現(xiàn)釋放該類對象中指針成員所指向的動態(tài)存儲空間的任務(wù)。 5定義類動態(tài)對象數(shù)組時,其元素只能靠自動調(diào)用該類的_無參構(gòu)造函數(shù)_來進(jìn)行初始化。 6. 假定 AB為一個類,則執(zhí)行“AB a10;”語句時,系統(tǒng)自動調(diào)用該類構(gòu)造函數(shù)的次數(shù)為_10_。 7對類中引用成員的初始化只能通過在構(gòu)造函數(shù)中給出的_初始化表_來實現(xiàn)。 8. 假定要把aa定義為AB類中的一個引用整數(shù)型數(shù)據(jù)成員,則定義語句為_ int& aa;_。 9假定用戶為類AB定義了一個構(gòu)造函數(shù)“AB(in

9、t aa) a=aa;”,則系統(tǒng)_不會_為該類自動定義一個無參構(gòu)造函數(shù)"AB() "。 10假定用戶為類AB定義了一個構(gòu)造函數(shù)“AB(int aa=0):a(aa)”,則定義該類的對象時,可以有_2_種不同的定義格式。 11假定用戶為類AB定義了一個構(gòu)造函數(shù)“AB(int aa=0, int bb=0) a=aa; b=bb;”,則定義該類的對象時,可以有_3_種不同的定義格式。 12假定用戶只為類AB定義了一個構(gòu)造函數(shù)“AB():a(0),b(0)”,則定義該類對象x的定義語句“AB x(5);”是_錯誤_(正確/錯誤)的。 13. 靜態(tài)成員函數(shù) 只能_訪問類的靜態(tài)數(shù)據(jù)成

10、員, _不能_ 訪問類的非靜態(tài)數(shù)據(jù)成員。 14. 重載運算符時,該運算符的_優(yōu)先級_、結(jié)合性以及操作符的個數(shù)不允許改變。 15. 作為類的成員函數(shù)重載一個運算符時,參數(shù)表中只有一個參數(shù),說明該運算符有_2_個操作數(shù)。 16. 重載抽取運算符>>時,其運算符函數(shù)的返回值類型應(yīng)當(dāng)是_ istream &_。 17. 類型轉(zhuǎn)換函數(shù)沒有_返回值_類型,而且參數(shù)表為_空_。 18. 當(dāng)保護(hù)繼承時,基類的_公有和保護(hù)_成員在派生類中成為保護(hù)成員,派生類對象不能直接訪問基類的 任何 _成員。19. 引進(jìn)虛基類的根本目的是為了消除_二義性_。三、程序填空: 1. 已知一個利用數(shù)組實現(xiàn)棧的類

11、定義如下: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(); /按照后進(jìn)先出原則依次輸出棧中每個元素,直到棧空為止private:int elemARRAY_SIZE; /用于保存堆棧元素

12、的數(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) int Stack:Pop() (2) elemtop- (3) Pop()2. #include<iostream.h> #include<stdlib.h>

13、class A int *a; int n; int MaxLen; public: A(): a(0), n(0), MaxLen(0) A(int *aa, int nn, int MM) n=nn; MaxLen=MM; if(n>MaxLen) exit(1); _(1)_; /由a指向長度為MaxLen的動態(tài)數(shù)組 for(int i=0; i<n; 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,

14、10,10); int i,s=0; for(i=0; i<10; i+) _(3)_ ; /把r對象的a數(shù)據(jù)成員中的每個 /元素值依次累加到s中 cout<<"s="<<s<<endl; (1) a=new intMaxLen (2) return ai; (3) s+=r.GetValue(i) 3. 在下面一段類定義中, Derived類公有繼承了基類Base。需要填充的函數(shù)由注釋內(nèi)容給出了功能。class Base private: int mem1,mem2; /基類的數(shù)據(jù)成員 public: Base(int m1,in

15、t m2) mem1=m1; mem2=m2; void output()cout<<mem1<<' '<<mem2<<' ' /.;class Derived: public Base private: int mem3; /派生類本身的數(shù)據(jù)成員 public: /構(gòu)造函數(shù),由m1和m2分別初始化mem1和mem2,由m3初始化mem3 Derived(int m1,int m2, int m3); /輸出mem1,mem2和mem3數(shù)據(jù)成員的值 void output() _(1)_; cout<<

16、mem3<<endl;/.;Derived:Derived(int m1,int m2, int m3): _(2)_ _(3)_;(1) Base:output() (2) Base(m1,m2) (3) mem3=m3四、寫出程序運行結(jié)果: 1. #include<iostream.h> class Franction /定義分?jǐn)?shù)類 int nume; /定義分子 int deno; /定義分母 public: /把*this化簡為最簡分?jǐn)?shù),具體定義在另外文件中實現(xiàn)void FranSimp(); /返回兩個分?jǐn)?shù)*this和x之和,具體定義在另外文件中實現(xiàn)Franc

17、tion 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() cout<<nume<<'/'<<deno<<endl; ;void main() Franction a,b,c,d; a.InitFranction(6,15); b.I

18、nitFranction(3,10); c.InitFranction(); c=a.FranAdd(b); d=c.FranAdd(a);cout<<"a: " a.FranOutput(); cout<<"b: " b.FranOutput(); cout<<"c: " c.FranOutput(); cout<<"d: " d.FranOutput(); 程序運行結(jié)果為:a: 6/15 b: 3/10 c: 7/10 d: 11/102. #include<

19、;iostream.h>class 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 main() int *k;A x(2,3), *p; p=new A(4,5); cout<<x.Sum()<<' '<<*(x.Mult()<<endl; cout<<p->Sum()<<' '

20、<<*(k=p->Mult()<<endl; delete k;程序運行結(jié)果為:5 6 9 203. (此題作業(yè)本上缺漏)#include<iostream.h>class Datepublic:Date(int y=2000,int m=1,int d=1)Year=y;Month=m;Day=d;void PrintDate()cout<<Year<<'/'<<Month<<'/'<<Day<<endl;protected:int Year,Mo

21、nth,Day;class Timepublic:Time(int h=0,int m=0,int s=0)Hour=h;Minutes=m;Seconds=s;void PrintTime()cout<<Hour<<':'<<Minutes<<':'<<Seconds<<endl;protected:int Hour,Minutes,Seconds;class Date_Time : public Date, public Timepublic:Date_Time();Date_Time(

22、int y,int mo,int d,int h=0,int mi=0,int s=0):Date(y,mo,d),Time(h,mi,s);void PrintDate_Time()PrintDate();PrintTime();void main()Date_Time a,b(2002,10,1,23,59,59),c(2002,12,31);a.PrintDate_Time();b.PrintDate_Time();c.PrintDate_Time();程序運行結(jié)果為:2000/1/10:0:02002/10/123:59:592002/12/310:0:04. (此題作業(yè)本上缺漏)/*

23、 test.h */#include<iostream.h>class Pointpublic:void InitP(float x0=0,float y0=0)X=x0,Y=y0;void Move(float xf,float yf)X+=xf;Y+=yf;float GetX()return X;float GetY()return Y;private:float X,Y;class Rectangle:public Pointpublic:void InitR(float x,float y,float w,float h)InitP(x,y);W=w;H=h;void Z

24、oomR(float k)W*=k,H*=k;float GetH()return H;float GetW()return W;private:float W,H;/* test.cpp *#include”test.h”void main()Rectangle rect;rect.InitR(10,20,30,40);cout<<rect.GetX()<<','<<rect.GetY()<<','<<rect.GetW()<<','<<rect.GetH()&

25、lt;<endl;rect.Move(5,6);cout<<rect.GetX()<<','<<rect.GetY()<<','<<rect.GetW()<<','<<rect.GetH()<<endl;rect.ZoomR(7);cout<<rect.GetX()<<','<<rect.GetY()<<','<<rect.GetW()<<&#

26、39;,'<<rect.GetH()<<endl;程序運行結(jié)果為:10,20,30,4015,26,30,4015,26,210,280五、指出程序或函數(shù)的功能 1. int Count(IntNode *f) if(!f) return 0; int c=0; while(f) c+; f=f->next; return c; 假定IntNode的類型定義為: struct IntNode int data; /結(jié)點值域 IntNode* next; /結(jié)點指針域 ;函數(shù)的功能為:統(tǒng)計出以f為表頭指針的鏈表中結(jié)點的個數(shù)。 2. int f(const c

27、har *s) int i=0; while(*s+)i+; return i; ;函數(shù)的功能為:求出并返回字符指針參數(shù)s所指向的字符串長度。六、程序改錯,請根據(jù)程序段或函數(shù)模塊的功能改寫個別地方的錯誤。 1. 下面是分?jǐn)?shù)類fract的定義及測試主程序,在類定義及其友元函數(shù)定義中有兩處錯誤,更正錯誤后程序應(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+=(frac

28、t,fract&); /2行 void show() cout<<den<<'/'<<num; /3行; /4行 friend fract &operator+=(fract f1,fract f2) /5行 /7行 f1.den=f1.den*f2.num+f1.num*f2.den; /8行 f1.num*=f2.num; /9行 return f1; /10行void main() fract fr(3,4); fr+=fract(5,7); fr.show();錯誤行的行號為_2_和_5_。分別改正為_ friend

29、fract &operator+=(fract&,fract);_ 和_ fract &operator+=(fract &f1,fract f2);_。七、編程: 1. 根據(jù)下面類中構(gòu)造函數(shù)的原型和注釋寫出它的類外定義。class Strings char *s; /指向動態(tài)分配的字符串?dāng)?shù)組空間int n; /記錄字符串長度public:Strings(char*str); /構(gòu)造函數(shù),利用str字符串長度初始化n, /利用str字符串初始化s所指的字符串空間Strings(Strings& str); /拷貝構(gòu)造函數(shù)Strings& Give

30、(Strings& str); /實現(xiàn)str賦值給*this的功能 Strings Uion(Strings& str); /實現(xiàn)*this和str中的字符串合并的 /功能,把合并結(jié)果存入臨時對象并返回int Lenth() return n; /返回字符串長度void Print() cout<<s<<endl; /輸出字符串;類外定義如下:Strings:Strings(Strings& str) /拷貝構(gòu)造函數(shù)n=str.n;s=new charn+1;strcpy(s,str.s); 2. 下列程序段中,A_class的成員函數(shù)Varia

31、nce()可求出兩數(shù)的平方差,請改寫該程序段,把Variance()函數(shù)從A_class類中分離出來,用友元函數(shù)來實現(xiàn)該函數(shù)的功能。class A_class private: int x,y,t; public: A_class(int i,int j):x(i),y(j) if(y>x)t=x;x=y;y=t; int Variance()return x*x-y*y; /其它函數(shù)從略;void main() A_class A_obj(3,5); cout<<"Result:"<<A_obj.Variance()<<endl;改寫后的程序如下:class A_class private: int x,y,t; public: A_class(int i,int j):x(i),y(j) if(y>x)t=x;x=y;y=

溫馨提示

  • 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

提交評論