習(xí)題二C++練習(xí)(含有答案).doc_第1頁
習(xí)題二C++練習(xí)(含有答案).doc_第2頁
習(xí)題二C++練習(xí)(含有答案).doc_第3頁
習(xí)題二C++練習(xí)(含有答案).doc_第4頁
習(xí)題二C++練習(xí)(含有答案).doc_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

精品文檔習(xí) 題 二 一、填空題 1. 對運(yùn)算符進(jìn)行重載時,不能 改變結(jié)合性 ,不能 改變操作數(shù)個數(shù) ,不能 改變優(yōu)先級 。 2. 當(dāng)+被重載為后置成員函數(shù)時需要 0 個參數(shù)。 3. 當(dāng)+被重載為前置成員函數(shù)時需要 1 個參數(shù)。 4. 在C+中,運(yùn)算符重載函數(shù)可以是 成員函數(shù) ,也可以是 友元函數(shù) ,還可以是 普通函數(shù) 。5. 友元破壞了類的 封裝性 特性。 6. 類的友元能夠訪問這個類的 所有 成員。 7. 類的靜態(tài)數(shù)據(jù)成員的初始化是在 類外 進(jìn)行的。 8. 類的靜態(tài)成員函數(shù) 沒有 this指針。 9. 類的靜態(tài)成員函數(shù)訪問該類的非靜態(tài)成員可以通過 參數(shù)傳遞對象 來實(shí)現(xiàn)。 10. 不能被重載的類成員函數(shù)是 構(gòu)造和析構(gòu)函數(shù) 。 二、選擇題 1. 已知類A有一個帶double型參數(shù)的構(gòu)造函數(shù),且將運(yùn)算符“+”重載為該類友元函數(shù),若如下語句:A x(2.5),y(3.6),z(0); z=x+y; 能夠正常運(yùn)行,運(yùn)算符重載函數(shù)operator+ 應(yīng)在類中聲明為( D )。A. friend A operator+ (double , double) ; B. friend A operator+ ( double , A &);C. friend A operator+ ( A &, double); D. friend A operator+ ( A & , A &);2. 下列關(guān)于運(yùn)算符重載的描述中,正確的是( D )。 A. 運(yùn)算符重載可以改變操作數(shù)的個數(shù) B. 運(yùn)算符重載可以改變優(yōu)先級 C. 運(yùn)算符重載可以改變結(jié)合性 D. 運(yùn)算符重載不可以改變語法結(jié)構(gòu) 3. 友元運(yùn)算符表達(dá)式obj1obj2被C+編譯器解釋為( A )。A. operator(obj1,obj2) B. (obj1,obj2) C. obj2.operator(obj1) D. obj1.operator(obj2) 4. 下列關(guān)于C+運(yùn)算符函數(shù)的返回類型的描述中,錯誤的是( C )。A. 可以是類類型 B. 可以是int類型 C. 可以是void類型 D. 可以是float類型 5. 為了區(qū)別單目運(yùn)算符的前置和后置運(yùn)算,在后置運(yùn)算符進(jìn)行重載時,額外添加一個參數(shù),其類型是( D )。A. void B. char C. float D. int6. 以下運(yùn)算符中,不能在C+中重載的是( A )。A. ?: B. + C. - D. =7. 在一個類中可以對一個操作符進(jìn)行( D )重載。 A. 1種 B. 2種以下 C. 3種以下 D. 多種 8. 若類A被說明成類B的友元,則( D )。A. 類A的成員即類B的成員 B. 類B的成員即類A的成員 C. 類A的成員函數(shù)不能訪問類B的成員 D. 類B不一定是類A的友元 9. 友元的作用是( A )。A. 提高成員的運(yùn)行效率 B. 加強(qiáng)類的封裝性C. 實(shí)現(xiàn)數(shù)據(jù)的隱藏性 D. 增加成員函數(shù)的種類 10. 下列關(guān)于靜態(tài)數(shù)據(jù)成員的特性描述中錯誤的是( D )。A. 說明靜態(tài)數(shù)據(jù)成員時前邊要加static B. 靜態(tài)數(shù)據(jù)成員要在類體外進(jìn)行初始化 C. 引用靜態(tài)數(shù)據(jù)成員時,要在靜態(tài)數(shù)據(jù)成員名前加“類名”和作用域運(yùn)算符 D. 靜態(tài)數(shù)據(jù)成員不是所有對象所共用的 11. 關(guān)于友元的描述中,正確的是( C )。A. 友元函數(shù)是成員函數(shù)的一種,它可以訪問類的私有成員 B. 友元函數(shù)不能提高程序的運(yùn)行效率 C. 友元函數(shù)要在類體內(nèi)說明 D. 友元函數(shù)增強(qiáng)了類的封裝性和隱藏性 12. 用來說明類的友元的是( D )。A. private B. protected C. public D. friend 13. 已知f1和f2是同一個類的兩個成員函數(shù),但f1不能調(diào)用f2,下列選項(xiàng)中符合要求的是( B )。A. f1和f2都是靜態(tài)函數(shù) B. f1是靜態(tài)函數(shù),f2不是靜態(tài)函數(shù) C. f1不是靜態(tài)函數(shù),f2是靜態(tài)函數(shù) D. f1和f2都不是靜態(tài)函數(shù) 14. 下面對于友元函數(shù)描述正確的是( C )。A. 友元函數(shù)的實(shí)現(xiàn)必須在類的內(nèi)部定義 B. 友元函數(shù)是類的成員函數(shù) C. 友元函數(shù)破壞了類的封裝性和隱藏性 D. 友元函數(shù)不能訪問類的保護(hù)成員 15. 一個類的友元函數(shù)或友元類能夠通過成員操作符訪問該類的( D ) A. 私有成員 B. 保護(hù)成員 C. 公有成員 D. 所有成員16. 下面對靜態(tài)數(shù)據(jù)成員的描述中,正確的是( D ) A. 靜態(tài)數(shù)據(jù)成員可以在類體內(nèi)進(jìn)行初始化 B. 靜態(tài)數(shù)據(jù)成員不可以被類的對象調(diào)用 C. 靜態(tài)數(shù)據(jù)成員不受private控制符的限制 D. 靜態(tài)數(shù)據(jù)成員可以直接用類名調(diào)用 17. C+語言中提供的( B )不是類的成員,但具有類成員的特權(quán)。 A. 構(gòu)造函數(shù) B. 友元函數(shù) C. 虛函數(shù) D. 重載函數(shù)18. 下列關(guān)于靜態(tài)成員函數(shù)的說法中不正確的是( C ) A. 靜態(tài)成員函數(shù)不屬于對象成員 B. 對靜態(tài)成員函數(shù)的引用不需要使用對象名 C. 靜態(tài)成員函數(shù)中可以直接引用類的非靜態(tài)成員 D. 靜態(tài)成員函數(shù)中可以直接引用類的靜態(tài)成員 19. 下面對友元的錯誤描述是( D )。A. 關(guān)鍵字friend用于聲明友元 B. 一個類中的成員函數(shù)可以是另一個類的友元函數(shù)C. 友元函數(shù)訪問對象的成員不受訪問特性影響D. 友元函數(shù)通過this指針訪問對象成員20.下列有關(guān)一個類的友元函數(shù)的敘述中,正確的( B ) A. 允許在類外訪問類中除私有成員以外的所有成員 B. 允許在類外訪問類中的任何成員C. 友元也是該類的成員D. 友元的聲明必須被放在該類的公有部分三、判斷題1、靜態(tài)數(shù)據(jù)成員可以通過類名或?qū)ο竺谩?、靜態(tài)數(shù)據(jù)成員可以在類內(nèi)或類外進(jìn)行初始化。3、在靜態(tài)成員函數(shù)中可以訪問本類中非靜態(tài)的數(shù)據(jù)成員。4、類的靜態(tài)成員函數(shù)的初始化工作要放在類外進(jìn)行。5、若A是B的友元類,B是C的友元類,則A是C的友元類。6、通過運(yùn)算符重載,可以定義新的運(yùn)算符。7、C+中的所有運(yùn)算符都能被重載。8、運(yùn)算符重載不能改變操作數(shù)的個數(shù)。9、運(yùn)算符重載不能改變其優(yōu)先級與結(jié)合性。10、在運(yùn)算符重載函數(shù)中不能使用缺省的參數(shù)值。答案:1、2、3、4、5、6、7、8、9、10、四、程序分析題(寫程序運(yùn)行結(jié)果) 1. #include class A int x,y,z; public: A(int vx,int vy,int vz) x=vx;y=vy;z=vz; A() x=0;y=0;z=0; A operator+(A t) A te; te.x=x+t.z; te.y=y+t.y; te.z=z+t.z; return te; A operator-(A t) A te; te.x=x-t.z; te.y=y-t.y; te.z=z-t.z; return te; A operator=(A t) x=t.x; y=t.y; z=t.z; return *this; void print() coutx y endl; ; void main() A t1(10,10,10),t2(20,20,20),t3; t3=t1+t2; t3.print(); t3=t2=t1; t1.print(); t2.print(); t3.print(); 答案:30 3010 1010 1010 102. #include class A public: A(int r,int c) row=r;col=c; elem=new introw*col; int& operator()(int x,int y) return elemcol*x+y; int operator()(int x,int y)const return elemcol*x+y; A() delete elem; private: int *elem; int row,col; ; void main() A m(5,8); int i; for( i=0;i5;i+) m(i,1)=i+5; for( i=0;i5;i+) coutm(i,1),; coutendl; 答案:5,6,7,8,9,3. #include using namespace std; class goods private: static int totalweight; int weight; public: goods(int w) weight=w; totalweight+=weight; goods(goods &gd) weight=gd.weight; totalweight+=weight; goods() totalweight-=weight; static int gettotal() return totalweight; ; int goods:totalweight=0; void main() goods g1(50); coutgoods:gettotal()endl; goods g2(100); coutg2.gettotal()endl; 答案:501504. #include using namespace std; class A int i,j; static int c; public: A(int a=0,int b=0) i=a; j=b; c+; A() c-; static void f() coutc=cendl; ; int A:c=0; void main() A a(4,8),b,d; A z(3,6), f; A:f(); A:f(); 答案:c=5c=35. #include using namespace std; class point public: void poi(int px=10,int py=10) x=px; y=py; friend int getpx(point a); friend int getpy(point b); private: int x,y; ; int getpx(point a) return a.x; int getpy(point a) return a.y; void main() point p,q; p.poi();q.poi(15,15); coutgetpx(p); coutgetpy(p)endl; coutgetpx(q); coutgetpy(q)endl; 答案:101015156. #include class B; class A int data; A *prev; public: A(int d,A *n)data=d;prev=n; friend class B; ; class B A *top; public: B()top=0; void push(int i)A *n=new A(i,top);top=n; int pop() A *t=top; if(top) top=top-prev; int c=t-data; delete t; return c; return 0; ; void main() int c10=23,34,56,87,67,876,42,657,55,66; B s; for(int i=0; i10;i+)s.push(ci); for(i=0; i10; i+)couts.pop(),; coutendl; 答案:66,55,657,42,876,67,87,56,34,23,7. #includeusing namespace std;class TIME;class DATEpublic:DATE(int a=2004,int m=9,int b=23)year=a;month=m;day=b;void DateTime(TIME &t);private:int year,month,day;class TIMEpublic:TIME(int h=0,int m=0,int s=0)hour=h;minute=m;second=s;friend void DATE:DateTime(TIME&t);private:int hour,minute,second;void DATE:DateTime(TIME&t)coutNow isyear.month.dayt.hour:t.minute:t.second.endl;int main()DATE b(2004,9,23);TIME t(10,20,50);b.DateTime(t);return 0;答案:Now is2004.9.2310:20:50.四、編程題 1. 定義一個處理日期的類TDate,它有3個私有數(shù)據(jù)成員:Month,Day,Year和若干個公有成員函數(shù),并實(shí)現(xiàn)如下要求:(1)成員函數(shù)設(shè)置缺省參數(shù);(2)定義一個友元函數(shù)來打印日期。參考程序:#include using namespace std;class TDatepublic:TDate(int m=0,int d=0,int y=0):Month(m),Day(d),Year(y)TDate()friend void Show(TDate);private:int Month,Day,Year;void Show(TDate d)coutd.Year年d.Month月d.Day日endl;int main()TDate d1,d2(4,8,2014);Show(d1);Show(d2);return 0;2. 設(shè)計(jì)一個類CTimeInfo,要求其滿足下述要求。 (1)要求有一個無參數(shù)的構(gòu)造函數(shù),其初始的小時和分鐘分別為:0,0; (2)要求有一個帶參數(shù)的構(gòu)造函數(shù),其參數(shù)分別對應(yīng)小時和分鐘; (3)要求用一個成員函數(shù)實(shí)現(xiàn)時間的設(shè)置; (4)要求用一個友元函數(shù)實(shí)現(xiàn)以12小時的方式輸出時間; (5)要求用一個友元函數(shù)實(shí)現(xiàn)以24小時的方式輸出時間; 參考程序:#include using namespace std;class CTimeInfopublic: CTimeInfo():Hour(0),Minute(0)CTimeInfo(int h,int m):Hour(h),Minute(m)CTimeInfo()void Set(int h,int m)Hour=h; Minute=m;friend void Show_12(CTimeInfo);friend void Show_24(CTimeInfo);private:int Hour,Minute;void Show_12(CTimeInfo d)if(d.Hour=12)coutam d.Hour:d.Minuteendl;elsed.Hour-=12; coutpm d.Hour:d.Minuteendl;void Show_24(CTimeInfo d)coutd.Hour:d.Minuteendl;int main()CTimeInfo d1,d2(21,8);Show_12(d1);Show_12(d2);Show_24(d2);return 0;3. 定義一個Student類,在該類定義中包括:一個數(shù)據(jù)成員score(分?jǐn)?shù))及兩個靜態(tài)數(shù)據(jù)成員total(總分)和count(學(xué)生人數(shù)) 。成員函數(shù):scoretotalcount(float s)用于設(shè)置分?jǐn)?shù)、求總分和累計(jì)學(xué)生人數(shù);靜態(tài)成員函數(shù)sum用于返回總分;靜態(tài)成員函數(shù)average用于求平均分。在main函數(shù)中,創(chuàng)建三名學(xué)生,并調(diào)用上述函數(shù)求這三名學(xué)生的總分和平均分。參考程序:#include class Studentpublic: void scoretotalcount(float s) score=s; total+=score; count+; static float sum() return total; static float average() return total/count; private: float score; static float total; static int count;float Student:total=0;int Student:count=0;void main() Student s1,s2,s3; s1.scoretotalcount(70); s2.scoretotalcount(80); s3.scoretotalcount(90); couttotal:Student:sum()endl; coutaverage:Student:average()endl;4. 編寫程序?qū)崿F(xiàn)賓館住宿客人管理。定義客人類Guest,包含客人編號Num(按先后順序自動生成)、姓名Name、住宿房號Room、房費(fèi)fee,并定義靜態(tài)成員Count,用于記錄客人總數(shù);提供構(gòu)造函數(shù),顯示信息函數(shù)Display,以及返回客人總數(shù)函數(shù)GetCount等。在主函數(shù)中創(chuàng)建3個客人對象進(jìn)行測試。參考程序:#include #include using namespace std;class Guestpublic:Guest(string n,string r,double f)Num=+Count;Name=n;Room=r;fee=f;void display()coutNum Name Room feeendl;static int GetCount()return Count;private:int Num;string Name;string Room;double fee;static int Count;int Guest:Count=0;int main()Guest g1(zhang,101,200);Guest g2(li,201,300);Guest g3(wang,301,500);g1.display();g2.display();g3.display();coutTotal=Guest:GetCount()endl;return 0;5. 生成一個復(fù)數(shù)類Complex。復(fù)數(shù)的實(shí)部和虛部分別為double 型x和y。重載運(yùn)算符加、減、乘、除為類的成員函數(shù),用來計(jì)算兩個復(fù)數(shù)的加、減、乘、除運(yùn)算。參考程序:#include class complex private:double x,y; public:complex(double xx=0,double yy=0)x=xx;y=yy;void display() cout(x,yi)endl;complex operator +(complex &c1);complex operator -(complex &c1); complex operator *(complex &c1); complex operator /(complex &c1);complex complex:operator +(complex &c1)complex c;c.x=x+c1.x;c.y=y+c1.y;return c;complex complex:operator -(complex &c1)complex c;c.x=x-c1.x;c.y=y-c1.y;return c;complex complex:operato

溫馨提示

  • 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

提交評論