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

下載本文檔

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

文檔簡介

1、面向?qū)ο蟪绦蛟O(shè)計(jì)形成性考核冊作業(yè)四一、填空題:1. 設(shè) px 是指向一個(gè)類對象的指針變量,則執(zhí)行 ( C ) 。A.delete px; ”語句時(shí),將自動(dòng)調(diào)用該類的無參構(gòu)造函數(shù) B. 帶參構(gòu)造函數(shù)C. 析構(gòu)函數(shù) D. 拷貝構(gòu)造函數(shù)2. 假定 AB 為一個(gè)類,則執(zhí)行 “AB a10;( D ) 。A. 0 B. 1 C. 9 D. 103. 假定 AB 為一個(gè)類,則執(zhí)行 “AB a(2), b3, *p4; 的次數(shù)為 ( B ) 。A. 3 B. 4 C. 5 D. 94. 假定 AB 為一個(gè)類, px 為指向該類的一個(gè)含有 “delete px; ”語句時(shí)共調(diào)用該類析構(gòu)函數(shù)的次數(shù)為A. 0 B

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

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

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

5、r+(Value,int);C. Value &operator+(Value, Value); D. Value &operator+(Value&, Value&);14.A.B.C.D.15. C+A.B.C.D. 16.A.關(guān)于插入運(yùn)算符 next 指向隊(duì)首結(jié)點(diǎn)的后繼(即下一個(gè))結(jié)點(diǎn)。派生類所繼承的基類成員的訪問權(quán)限保持不變3. 在一個(gè)用鏈表實(shí)現(xiàn)的隊(duì)列類中,若鏈隊(duì)為空或只含有一個(gè)結(jié)點(diǎn),則隊(duì)首指針的值與隊(duì)尾指針的值相同。4 一個(gè)類的_析構(gòu)_ 存儲(chǔ)空間的任務(wù)。5 定義類動(dòng)態(tài)對象數(shù)組時(shí),其元素只能靠自動(dòng)調(diào)用該類的 來進(jìn)行初始化。6.數(shù)為7函數(shù)通常用于實(shí)現(xiàn)釋放該類對象中指針成員所指向的動(dòng)態(tài)無參

6、構(gòu)造函數(shù)假定AB為一個(gè)類,則執(zhí)行“ ABa10; ”語句時(shí),系統(tǒng)自動(dòng)調(diào)用該類構(gòu)造函數(shù)的次_10O對類中引用成員的初始化只能通過在構(gòu)造函數(shù)中給出的初始化表來實(shí)現(xiàn)。8.假定要把a(bǔ)a定義為AB類中的一個(gè)引用整數(shù)型數(shù)據(jù)成員,則定義語句為_ int& aa; _。9為該類自動(dòng)定義一個(gè)無參構(gòu)造函數(shù)10 假定用戶為類AB定義了一個(gè)構(gòu)造函數(shù)象時(shí),可以有 2種不同的定義格式。11 假定用戶為類 AB定義了一個(gè)構(gòu)造函數(shù)則定義該類的對象時(shí),可以有3假定用戶為類AB定義了一個(gè)構(gòu)造函數(shù)AB() AB(int aa) a=aa; ” 則系統(tǒng) _不會(huì)“ AB(int aa=0):a(aa)”則定義該類的對AB(int aa

7、=0, int bb=O) a=aa; b=bb; ” 種不同的定義格式。12 .假定用戶只為類AB定義了一個(gè)構(gòu)造函數(shù)“ AB():a(O),b(O) 的定義語句“ AB x(5);13. 靜態(tài)成員函數(shù) 數(shù)據(jù)成員。14.是錯(cuò)誤(正確/錯(cuò)誤)的。只能訪問類的靜態(tài)數(shù)據(jù)成員,_不能重載運(yùn)算符時(shí),該運(yùn)算符的_優(yōu)先級”,則定義該類對象x訪問類的非靜態(tài)、結(jié)合性以及操作符的個(gè)數(shù)不允許改變。15.2.16.17.類型轉(zhuǎn)換函數(shù)沒有返回值.類型,而且參數(shù)表為空作為類的成員函數(shù)重載一個(gè)運(yùn)算符時(shí),參數(shù)表中只有一個(gè)參數(shù),說明該運(yùn)算符有 _個(gè)操作數(shù)。istream &重載抽取運(yùn)算符 時(shí),其運(yùn)算符函數(shù)的返回值類型應(yīng)當(dāng)是18

8、.當(dāng)保護(hù)繼承時(shí),基類的公有和保護(hù)成員在派生類中成為保護(hù)成員,派生類對象 不能直接訪問基類的_任何成員。二義性19.引進(jìn)虛基類的根本目的是為了消除 三、程序填空:1. 已知一個(gè)利用數(shù)組實(shí)現(xiàn)棧的類定義如下:con st int ARRAY_SIZE=10;class Stack public:初始化棧為空 向棧中壓入一個(gè)元素 從棧頂彈出一個(gè)元素void Ini t() to p=-1;/void Pu sh(i nt n ewElem); /int Pop ();/bool Emp ty() / 判??読f(top=-1) return true;else return false;int Dep

9、 th() return top +1; /返回棧的深度void Prin t();用于保存堆棧元素的數(shù)組 指明棧頂元素位置的指針/ 按照后進(jìn)先出原則依次輸出棧中每個(gè)元素,直到??諡橹?private:int elemARRAY_SIZE; /int top;/;該類的 Pop 和 Print 函數(shù)的實(shí)現(xiàn)分別如下:(1)_ if(top=-1) cout ???!endl;exit(1); / 中止運(yùn)行return _(2)_;void Stack:Print() while(!Empty() cout_(3)_ (1)int Stack:Pop()(2)elemtop-(3)Pop()2.

10、#include#include 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(nMaxLen) exit(1);_(1)_; /由 a 指向長度為for(int i=0; in; i+) ai=aai;A() delete a;int GetValue(int i) _(2)_ /;void main()int b10=1,2,3,4,5,6,7,8,9,10;A r(b,10,10);int i,s=0;for

11、(i=0; i10; i+) _(3)_MaxLen的動(dòng)態(tài)數(shù)組函數(shù)體返回 ai 的值; / 把 r 對象的 a 數(shù)據(jù)成員中的每個(gè)/元素值依次累加到 s 中couts=sendl;(1) a=new intMaxLen (2) return ai;(3) s+=r.GetValue(i)3.在下面一段類定義中,Derived類公有繼承了基類 Base。需要填充的函數(shù)由注釋內(nèi)容給出了功能。class Baseprivate:int mem1,mem2; /public:Base(int m1,int m2) mem1=m1; mem2=m2;void output()coutmem1 mem2 ;

12、/.;基類的數(shù)據(jù)成員class Derived: public Baseprivate:int mem3; / public:派生類本身的數(shù)據(jù)成員/ 構(gòu)造函數(shù),由m1和m2分別初始化 mem1和mem2由m3初始化 mem3Derived(int m1,int m2, int m3);II輸出mem1,mem2口 mem3數(shù)據(jù)成員的值 void output()_(1)_; coutmem3endl;/.;Derived:Derived(int m1,int m2, int m3): _(2)(1) Base:output() (2) 四、寫出程序運(yùn)行結(jié)果:1. #includeclass F

13、ranction /int nume; /int deno; /Base(m1,m2) (3)定義分?jǐn)?shù)類定義分子定義分母mem3=m3(3)public:/把 *this 化簡為最簡分?jǐn)?shù),具體定義在另外文件中實(shí)現(xiàn) void FranSimp();返回兩個(gè)分?jǐn)?shù) *this 和 x 之和,具體定義在另外文件中實(shí)現(xiàn)/Franction FranAdd(const Franction& x);置分?jǐn)?shù)的分子和分母分別 0和 1void InitFranction() nume=0; deno=1;置分?jǐn)?shù)的分子和分母分別n和dvoid InitFranction(int n, int d) nume=n;

14、 deno=d;/ 輸出一個(gè)分?jǐn)?shù)void FranOutput() coutnume/denoendl;void main()Franction a,b,c,d;a. InitFranction(6,15);b. InitFranction(3,10);c. InitFranction(); c=a.FranAdd(b); d=c.FranAdd(a); b.FranOutput(); c.FranOutput(); d.FranOutput();coutdcouta: ; a.FranOutput(); coutb coutc 程序運(yùn)行結(jié)果為:a: 6/15b: 3/10c: 7/10d:

15、11/10 2. #include 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);coutx.Sum() *(x.Mult()endl;coutSum() Mult()endl;delete k; 程序運(yùn)行結(jié)果為:5 69 203. (此題作業(yè)本上缺漏)#includeclass Datepublic

16、:Date(int y=2000,int m=1,int d=1)Year=y;Month=m;Day=d;void PrintDate()coutYear/Month/Dayendl; protected:int Year,Month,Day;class Timepublic:Time(int h=0,int m=0,int s=0)Hour=h;Minutes=m;Seconds=s;void PrintTime()coutHour:Minutes:Secondsendl; protected:int Hour,Minutes,Seconds; ;class Date_Time : pub

17、lic Date, public Time public:Date_Time();Date_Time(int y,ints=0):Date(y,mo,d),Time(h,mi,s);mo,intd,inth=0,intmi=0,intvoid 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(); 程序運(yùn)行結(jié)果為: 2000/1/

18、1 0:0:0 2002/10/1 23:59:59 2002/12/31 0:0:04. (此題作業(yè)本上缺漏)/* test.h */ #include 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

19、,float w,float h) InitP(x,y);W=w;H=h;void ZoomR(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);coutrect.GetX(),rect.GetY(),rect.GetW(),rect.GetH()endl;rect.Move(5,6);coutrect.GetX(),rect.

20、GetY(),rect.GetW(),rect.GetH()endl;rect.ZoomR(7);coutrect.GetX(),rect.GetY(),rect.GetW(),rect.GetH()next; return c;結(jié)點(diǎn)值域 結(jié)點(diǎn)指針域假定 IntNode 的類型定義為: struct IntNode int data; / IntNode* next; /;函數(shù)的功能為: 統(tǒng)計(jì)出以 f 為表頭指針的鏈表中結(jié)點(diǎn)的個(gè)數(shù)。2. int f(const char *s) int i=0; while(*s+)i+; return i;函數(shù)的功能為: 求出并返回字符指針參數(shù) s 所指向的

21、字符串長度。 六、程序改錯(cuò),請根據(jù)程序段或函數(shù)模塊的功能改寫個(gè)別地方的錯(cuò)誤。1. 下面是分?jǐn)?shù)類 fract 的定義及測試主程序,在類定義及其友元函數(shù)定義中有兩處錯(cuò) 誤,更正錯(cuò)誤后程序應(yīng)顯示 41/28 ,請指出錯(cuò)誤所在行的行號并給出改正意見。class fractfract(int d=0,int n=1):den(d),num(n)/1行friend fract &operator+=(fract,fract&);/2行void show() coutden/num;/3行; /4行friend fract &operator+=(fract f1,fract f2)/5行 /7行f1.de

22、n=f1.den*f2.num+f1.num*f2.den;/8行f1.num*=f2.num; /9行return f1; /10行分子分母int den; /int num; / public:void main() fract fr(3,4); fr+=fract(5,7); fr.show();錯(cuò)誤行的行號為 分別改正為 _2friend fract &operator+=(fract&,fract);和 七、編程:1. 根據(jù)下面類中構(gòu)造函數(shù)的原型和注釋寫出它的類外定義。 class Strings char *s; / int n; / public:fract &operator+

23、=(fract &f1,fract f2);指向動(dòng)態(tài)分配的字符串?dāng)?shù)組空間記錄字符串長度Strings(char*str); /構(gòu)造函數(shù),利用 str 字符串長度初始化 n,利用str字符串初始化 s 所指的字符串空間/Strings(Strings& str); Strings& Give(Strings& str); /拷貝構(gòu)造函數(shù)實(shí)現(xiàn) str 賦值給 *this 的功能Strings Uion(Strings& str);/實(shí)現(xiàn) *this 和 str 中的字符串合并的/功能,/int Lenth() return n;void Print() coutsx)t=x;x=y;y=t;int Variance()return x*x-y*y;/ 其它函數(shù)從略;void main() A_class A_obj(3,5);coutResult:A_obj.Variance()x)t=x;x=y;y=t;/ 其它函數(shù)從略參數(shù)名任意friend int Variance (A_class& ac); /;int Variance (A_class& ac)return ac.x*ac.x-ac.y*ac.y; void main() A_class A_obj(3,5); coutResult:Variance(A_obj)e

溫馨提示

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

評論

0/150

提交評論