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

下載本文檔

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

文檔簡(jiǎn)介

1、椿選范木,供參考!習(xí)題二一、填空題1. 對(duì)運(yùn)算符進(jìn)行重載時(shí),不能 改變結(jié)合性,不能 改變操作數(shù)個(gè)數(shù),不能_改變優(yōu)先級(jí)。2. 當(dāng)+被重栽為后置成員函數(shù)時(shí)需要0 個(gè)參數(shù)。3. 當(dāng)+被重載為前置成員函數(shù)時(shí)需要1 個(gè)參數(shù)。4. 在 C卄中,運(yùn)算符重載函數(shù)可以是成員函數(shù),也可以是友元函數(shù),還可以是普通函數(shù)。5. 友元破壞了類(lèi)的封裝性特性。6. 類(lèi)的友元能夠訪問(wèn)這個(gè)類(lèi)的所有 成員。7. 類(lèi)的靜態(tài)數(shù)據(jù)成員的初始化是在類(lèi)外進(jìn)行的。8. 類(lèi)的靜態(tài)成員函數(shù)沒(méi)有 this指針。9. 類(lèi)的靜態(tài)成員函數(shù)訪問(wèn)該類(lèi)的非靜態(tài)成員可以通過(guò) 參數(shù)傳遞對(duì)象來(lái)實(shí)現(xiàn)。10. 不能被重載的類(lèi)成員函數(shù)是構(gòu)造和析構(gòu)函數(shù)。二、選擇題1.已知類(lèi)

2、 A 有一個(gè)帶 double 型參數(shù)的構(gòu)造函數(shù),且將運(yùn)算符“ + ”重載為該類(lèi)友元函數(shù),3.友元運(yùn)算符表達(dá)式 objlobj2被 C+編譯器解釋為(A )oA. operator(obj 1 ,obj2)C. obj2.operator(obj 1)D. obj 1 .operator(obj2)4下列關(guān)于 C+運(yùn)算符函數(shù)的返回類(lèi)型的描述中,錯(cuò)誤的是(C )o若如下語(yǔ)句:A x(2 5),y(3 6),z(0); z=x+y; 應(yīng)在類(lèi)中聲明為(D )。A. friend A operator+ (double , double);C friend A operator+ (A &, d

3、ouble);2.卞列關(guān)于運(yùn)算符重載的描述中,正確的是(A.運(yùn)算符重載可以改變操作數(shù)的個(gè)數(shù)C.運(yùn)算符重載可以改變結(jié)合性能夠正常運(yùn)行,運(yùn)算符重載函數(shù) opeiator+E. friend A operator+ ( double , A &);D friend A operator+ (A &,A &);D )oB.運(yùn)算符重載可以改變優(yōu)先級(jí)D.運(yùn)算符重載不可以改變語(yǔ)法結(jié)構(gòu)B. (objl,obj2)椿選范木,供參考!B.可以是 int類(lèi)型A 可以是類(lèi)類(lèi)型椿選范木,供參考!C.可以是 void類(lèi)型 D.可以是 float類(lèi)型5.為了區(qū)別單目運(yùn)算符的前置和后置運(yùn)算,在后置運(yùn)算

4、符進(jìn)行重載時(shí),額外添加一個(gè)參數(shù), 其類(lèi)型是(D )。6.以下運(yùn)算符中,不能在 C卄中重載的是(8.若類(lèi) A 被說(shuō)明成類(lèi) E 的友元,則(D9.友元的作用是(A )oio.卜列關(guān)于靜態(tài)數(shù)據(jù)成員的特性描述中錯(cuò)誤的是C.引用靜態(tài)數(shù)據(jù)成員時(shí),要在靜態(tài)數(shù)據(jù)成員名前加“類(lèi)名”和作用域運(yùn)算符D.靜態(tài)數(shù)據(jù)成員不是所有對(duì)象所共用的11關(guān)于友元的描述中,正確的是(C )。12.用來(lái)說(shuō)明類(lèi)的友元的是(D )o13.已知 fl和衛(wèi)是同一個(gè)類(lèi)的兩個(gè)成員函數(shù),但 fl 不能調(diào)用下列選項(xiàng)中符合要求的是(B )。A. voidB. charC. floatD. mtA. ?:B.+C.-D. =7.在一個(gè)類(lèi)中可以對(duì)一個(gè)操作符

5、進(jìn)行(D )重載。A. 1 種E.2 種以下C.3 種以下D.多種A.類(lèi) A 的成員即類(lèi) E的成員B. 類(lèi) E 的成員即類(lèi) A 的成員C.類(lèi) A 的成員函數(shù)不能訪問(wèn)類(lèi) E 的成員D. 類(lèi) E 不一定是類(lèi) A 的友元A.提高成員的運(yùn)行效率B. 加強(qiáng)類(lèi)的対裝性C.實(shí)現(xiàn)數(shù)據(jù)的隱藏性D. 增加成員函數(shù)的種類(lèi)A.說(shuō)明靜態(tài)數(shù)據(jù)成員時(shí)前邊要加 staticB. 靜態(tài)數(shù)據(jù)成員要在類(lèi)體外進(jìn)行初始化A. 友元函數(shù)是成員函數(shù)的一種,它可以訪問(wèn)類(lèi)的私有成員B. 友元函數(shù)不能提高程序的運(yùn)行效率C. 友元函數(shù)要在類(lèi)體內(nèi)說(shuō)明D. 友元函數(shù)增強(qiáng)了類(lèi)的封裝性和隱藏性A. privateE. protectedC publicD

6、. fiiend椿選范木,供參考!A. fl和 f2都是靜態(tài)函數(shù)B. fl是靜態(tài)函數(shù),2不是靜態(tài)函數(shù)C. fl 不是靜態(tài)函數(shù),2是靜態(tài)函數(shù)D. fl和2 都不是靜態(tài)函數(shù)14.下面對(duì)于友元函數(shù)描述正確的是(C )。A.友元函數(shù)的實(shí)現(xiàn)必須在類(lèi)的內(nèi)部定義B.友元函數(shù)是類(lèi)的成員函數(shù)C.友元函數(shù)破壞了類(lèi)的封裝性和隱藏性D.友元函數(shù)不能訪問(wèn)類(lèi)的保護(hù)成員15. 一個(gè)類(lèi)的友元函數(shù)或友元類(lèi)能夠通過(guò)成員操作符訪問(wèn)該類(lèi)的(D )A.私有成員B保護(hù)成員C.公有成員D.所有成員16下面對(duì)靜態(tài)數(shù)據(jù)成員的描述中,正確的是(D )A.靜態(tài)數(shù)據(jù)成員可以在類(lèi)體內(nèi)進(jìn)行初始化 B.靜態(tài)數(shù)據(jù)成員不可以被類(lèi)的對(duì)彖調(diào)用C.靜態(tài)數(shù)據(jù)成員不受

7、 private 控制符的限制 D.靜態(tài)數(shù)據(jù)成員可以直接用類(lèi)名調(diào)用17. C+語(yǔ)言中提供的(B )不是類(lèi)的成員,但具有類(lèi)成員的特權(quán)。A.構(gòu)造函數(shù)B.友元函數(shù)C.虎函數(shù)D.重載函數(shù)18下列關(guān)于靜態(tài)成員函數(shù)的說(shuō)法中不正確的是(C )A.靜態(tài)成員函數(shù)不屬于對(duì)象成員B.對(duì)靜態(tài)成員函數(shù)的引用不需要使用對(duì)彖名C. 靜態(tài)成員函數(shù)中可以直接引用類(lèi)的非靜態(tài)成員D. 靜態(tài)成員函數(shù)中町以直接引用類(lèi)的靜態(tài)成員19下面對(duì)友元的錯(cuò)誤描述是(D )。A. 關(guān)鍵字仕 iend用于聲明友元B. 一個(gè)類(lèi)中的成員函數(shù)可以是另一個(gè)類(lèi)的友元函數(shù)C. 友元函數(shù)訪問(wèn)對(duì)彖的成員不受訪問(wèn)特性影響D. 友元函數(shù)通過(guò) this 指針訪問(wèn)對(duì)象成員2

8、0卞列有關(guān)一個(gè)類(lèi)的友元函數(shù)的敘述中,正確的(B )A. 允許在類(lèi)外訪問(wèn)類(lèi)中除私有成員以外的所有成員B. 允許在類(lèi)外訪問(wèn)類(lèi)中的任何成員C. 友元也是該類(lèi)的成員D. 友元的聲明必須被放在該類(lèi)的公有部分三、判斷題1、靜態(tài)數(shù)據(jù)成員可以通過(guò)類(lèi)名或?qū)ο竺谩?、靜態(tài)數(shù)據(jù)成員可以在類(lèi)內(nèi)或類(lèi)外進(jìn)行初始化。楮選范木,供參考!3、在靜態(tài)成員函數(shù)中可以訪問(wèn)本類(lèi)中非靜態(tài)的數(shù)據(jù)成員。4、類(lèi)的靜態(tài)成員函數(shù)的初始化工作要放在類(lèi)外進(jìn)行。5、若 A 是 B 的友元類(lèi),B 是 C的友元類(lèi),則 A 是 C的友元類(lèi)。6、通過(guò)運(yùn)算符重載,可以定義新的運(yùn)算符。7、 C卄中的所有運(yùn)算符都能被重載。8、 運(yùn)算符重載不能改變操作數(shù)的個(gè)數(shù)。9

9、、 運(yùn)算符重載不能改變其優(yōu)先級(jí)與結(jié)合性。10、 在運(yùn)算符重載函數(shù)中不能使用缺省的參數(shù)值。答案:1、J 2、X 3、J 4、X 5、X 6、X 7、X 8、J 9、J 10、四、程序分析題(寫(xiě)程序運(yùn)行結(jié)果)1. #include class Aint x,y,z;public:A(iiit vx jnt vydnt vz) x=vx;y=vy;z=vz;A() x=0;y=0;z=0;A operator+(A t)Ate;te.x=x+t.z; te.y=y+t.y; te.z=z+t.z; return te;A opeiatoi-(A t)Ate;te.x=x-t.z; te.y=y-t.

10、y; te.z=z-t.z; return te;A opeiator=(A t)x=t.x;y=t.y;楮選范木,供參考!z=t.z;return *this;void prmt() coutxH ,yH Hendl; ;void main()Atl(10J0J 0),t2(20,2020),t3;t3=tl+t2;t3.pimtQ;t3=t2=tl;tl.pimtQ;t2.pimtQ;t3.pimtQ;答案:30 3010 1010 1010 102. #iiiclude class Apublic:rant c) iow=i:;col=c; elem=new iiitrow*col; i

11、nt& operatorQ(mt xjnt y) return elemcol*x-ry; int opeiator()(int x,mt y)const return elemcol*x+v; A0 delete elem; private:int *elem;int row,col;楮選范木,供參考!;void main()A ni(5,8);int i;for( i=0;i5;i+) m(i,l)=i+5;fdr( i=0;i5;i+) coutniA),9;coutendl:答案:5,6,7,8,9,3. #iiiclude using namespace std;class

12、goodsprivate:static mt totalweight;int weight;public:goods(iiit w) weight=w; totalweight+=weight; goods(goods &gd) weight=gd.weight; totalweight+=weight; goods。totalweight 亠 weight; static mt gettotalQ return totalweight; ;mt goods:totalweight=0;椿選范木,供參考!void main()goods gl(50);coutgoods:gettota

13、l(jendl;goods g2(100);coutg2.gettotal()endl;答案:501504. #iiiclude using namespace std;class Ainti j;static mt c;public:A(iiit a=O.iiit b=0) i=a; j=b; C+; A() c-; static void f() coutHc=Hcendl;iiit A:c=0;void main()Aa(4,8),b,d;Az(3,6),f;A:f();A:f();楮選范木,供參考!答案:c=5c=35. #iiiclude using namespace std;cl

14、ass pointpublic:void poi(iiit px=10,int pv=10) X=px; y=py; friend mt getpx(pomt a); friend mt getpv(pomt b);private:int x,y;mt getpx(pomt a)return a.x;mt 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;答案:1010 15156.

15、#include class B;class Aint data;A *piev;public:楮選范木,供參考!d.A *n)data=d;piev=n;fiiend class B;class BA *top;public:B()top=0;void push(iiit i)A *n=new A(ijop);top=n;mt popQA *t=top;血 OP)top=top-prev;iiit c=t-data;delete t;return c;return 0;void main()intc10=23,34,56,87,67,876,42,657,55,66;Bs;for(iiit

16、1=0: i10;i-H-)s.push(ci);fbr(i=O; i10; i+)couts.popO,n; coutendl;答案:66,55,657,42,876,67,87,56,34,23,楮選范木,供參考!7. #iiicludeusing namespace std;class TIME;class DATEpublic:DATE(int a=2004,iiit m=9,iiit b=23)yeai-a; month=m; dav=b;void DateTune(TIME &t);private:int yeaianonthjay;;class TIMEpublic:TI

17、NIE(int h=0,mt m=0,int s=0)houi=h; nunute=m; second=s;friend void DATE:DateTune(TEvIE&t);private:int houi;niiiiute,sec ond;void DATE:DateTune(TIME&t)cout,rNowisHyear.,month,/dayt.hourl:,t.nunute,:,t.second,endl;楮選范木,供參考!mt mam()DATE b(2004.9,23);TIME t( 10,20,50);b.DateTiine(t);return 0;答案:N

18、owis2004.9.2310:20:50.四、編程題1.定義一個(gè)處理口期的類(lèi) TDate,它有 3個(gè)私有數(shù)據(jù)成員:Montli,Day,Year 和若干個(gè)公有成員函數(shù),并實(shí)現(xiàn)如下要求:(1) 成員函數(shù)設(shè)置缺省參數(shù);(2) 定義一個(gè)友元函數(shù)來(lái)打印口期。參考程序:#include using namespace std;class TDate椿選范木,供參考!public:TDate(iiit m=O,mt d=O,int y=0) :Month(m).Day(d), Yeai(y)TDateQfriend void Show(TDate);private:int Month,Day, Year

19、;void Show(TDate d)coutd.Yeal,年”d.Month” 月 ”d.Day” 口 endl;iiit mam()TDate dl,d2(4,8,2014);Show(dl);Show(d2);return 0;2.設(shè)計(jì)一個(gè)類(lèi) CTmielnfb,要求其滿(mǎn)足卞述要求。(1) 要求有一個(gè)無(wú)參數(shù)的構(gòu)造函數(shù),其初始的小時(shí)和分鐘分別為:0, 0;(2) 要求有一個(gè)帶參數(shù)的構(gòu)造函數(shù),其參數(shù)分別對(duì)應(yīng)小時(shí)和分鐘;(3) 要求用一個(gè)成員函數(shù)實(shí)現(xiàn)時(shí)間的設(shè)置;(4) 要求用一個(gè)友元函數(shù)實(shí)現(xiàn)以 12小時(shí)的方式輸出時(shí)間;(5) 要求用一個(gè)友元函數(shù)實(shí)現(xiàn)以 24小時(shí)的方式輸出時(shí)間;參考程序:#inc

20、lude using namespace std;class CTiinelnfopublic:CTimeIiifoQ:Hour(0),Minute(0)楮選范木,供參考!CTimeIiifb(int hint m): Hour(h) ,Minute(m)-CTimeIiifo()void Set(iiit hjnt m)Hotu-h; Minute=m;friend void Show_l 2(CTiineIiifb);friend void Show_24(CTmieIiifo);private:mt HourMmute;void Show_l 2(CTimeIiifb d)if(d.Ho

21、ur=12)coutHain,d.Houi,:,d.Minuteendl;elsed.Hour-=12;coutMpm,d.HouiH:Hd.Minuteendl;void Show_24(CTimeIiifo d)coutd.Houi,:,d.Mmuteendl;mtCTimelnfod l、d2(21,8);Show_12(dl);Show_12(d2);Show_24(d2);return 0;3.定義一個(gè) Strident 類(lèi),在該類(lèi)定義中包括:一,個(gè)數(shù)據(jù)成員 score(分?jǐn)?shù))及兩個(gè)靜態(tài)數(shù)據(jù)成員total(總分)和 count(學(xué)生人數(shù))。成員函數(shù):scoretotalcount(f

22、loat 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-H-;static float sum() return total; static float averageQ return totaVcount; private:float score;static f

23、loat total;static int count;float Student: :total=0;mt Student:count=0;精選范木,供參考!精選范木,供參考!void main()Student sl、s2,s3;si .scoretotalcouiit(70);s2.scoretotalcouiit(80);s3.scoretotalcouiit(90);coutMtotal:HStudent: sumQendl;coutHaveiage:,Student:averageQendl;4.編寫(xiě)程序?qū)崿F(xiàn)賓館住宿客人管理。定義客人類(lèi) Guest,包含客人編號(hào) Num (按先后順

24、序 自動(dòng)生成)、姓名 Name、住宿房號(hào) Room、房費(fèi) fbe,并定義靜態(tài)成員 Count,用于記錄客人 總數(shù);提供構(gòu)造函數(shù),顯示信息函數(shù) Display,以及返回客人總數(shù)函數(shù) GetCount等。在主函 數(shù)中創(chuàng)建 3個(gè)客人對(duì)彖進(jìn)行測(cè)試。參考程序:include include using namespace std;class Guestpublic:Guest(stiing n.striiig i.double f)Num=+Count;Name=n;Room=r;fee=f;void display()coutNumM MNamen HRoomM Hfeeendl;精選范木,供參考!s

25、tatic mt GetCount()return Count;private:int Num;strmg Name;strmg Room;double fee;static mt Count;mt Guest:Count=0;mt mam()Guest glCzhangOlVOO);Guest g2(HirH20r300);Guest g3(nwangn;f30r500);gl.displayQ;g2 display();g3.display();coutHTotal=MGuest:GetCount()endl;return 0;5.生成一個(gè)復(fù)數(shù)類(lèi) Complexo 復(fù)數(shù)的實(shí)部和虛部分別為

26、double型 x和 y。重載運(yùn)算符加、減、乘、除為類(lèi)的成員函數(shù),用來(lái)計(jì)算兩個(gè)復(fù)數(shù)的加、減、乘、除運(yùn)算。參考程序:#include class complexprivate:double x,y;精選范木,供參考!public:complex(double xx=0,double yv=0)x=xx;y=yy;void display()cout,(x,yHi),endl;complex operator +(complex &cl);complex operator -(complex &cl);complex opeiator *(complex &cl);complex operator /(complex &cl);complex complex:operator +(complex &cl)complex c;C X=X+C1 X;c.y=y+cl.v;retuin c;complex complex:operator (complex &cl)complex c;c.x=x-cl.x;c.y=y-cl.y;return c;complex complex:operator *(complex &cl)精選

溫馨提示

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

評(píng)論

0/150

提交評(píng)論