![2023年習題二C練習含有答案_第1頁](http://file4.renrendoc.com/view/c3df184936df66344e45a28d5f23b0d3/c3df184936df66344e45a28d5f23b0d31.gif)
![2023年習題二C練習含有答案_第2頁](http://file4.renrendoc.com/view/c3df184936df66344e45a28d5f23b0d3/c3df184936df66344e45a28d5f23b0d32.gif)
![2023年習題二C練習含有答案_第3頁](http://file4.renrendoc.com/view/c3df184936df66344e45a28d5f23b0d3/c3df184936df66344e45a28d5f23b0d33.gif)
![2023年習題二C練習含有答案_第4頁](http://file4.renrendoc.com/view/c3df184936df66344e45a28d5f23b0d3/c3df184936df66344e45a28d5f23b0d34.gif)
![2023年習題二C練習含有答案_第5頁](http://file4.renrendoc.com/view/c3df184936df66344e45a28d5f23b0d3/c3df184936df66344e45a28d5f23b0d35.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
習題二一、填空題1.對運算符進行重載時,不能改變結(jié)合性,不能改變操作數(shù)個數(shù),不能改變優(yōu)先級。2.當++被重載為后置成員函數(shù)時需要0個參數(shù)。3.當++被重載為前置成員函數(shù)時需要1個參數(shù)。4.在C++中,運算符重載函數(shù)可以是成員函數(shù),也可以是友元函數(shù),還可以是普通函數(shù)。5.友元破壞了類的封裝性特性。6.類的友元可以訪問這個類的所有成員。7.類的靜態(tài)數(shù)據(jù)成員的初始化是在類外進行的。8.類的靜態(tài)成員函數(shù)沒有this指針。9.類的靜態(tài)成員函數(shù)訪問該類的非靜態(tài)成員可以通過參數(shù)傳遞對象來實現(xiàn)。10.不能被重載的類成員函數(shù)是構(gòu)造和析構(gòu)函數(shù)。二、選擇題1.已知類A有一個帶double型參數(shù)的構(gòu)造函數(shù),且將運算符“+”重載為該類友元函數(shù),若如下語句:Ax(2.5),y(3.6),z(0);z=x+y;可以正常運營,運算符重載函數(shù)operator+應在類中聲明為(D)。A.friendAoperator+(double,double);B.friendAoperator+(double,A&);C.friendAoperator+(A&,double);D.friendAoperator+(A&,A&);2.下列關于運算符重載的描述中,對的的是(D)。A.運算符重載可以改變操作數(shù)的個數(shù)B.運算符重載可以改變優(yōu)先級C.運算符重載可以改變結(jié)合性D.運算符重載不可以改變語法結(jié)構(gòu)3.友元運算符表達式obj1>obj2被C++編譯器解釋為(A)。A.operator>(obj1,obj2)B.>(obj1,obj2)C.obj2.operator>(obj1)D.obj1.operator>(obj2)4.下列關于C++運算符函數(shù)的返回類型的描述中,錯誤的是(C)。A.可以是類類型B.可以是int類型C.可以是void類型D.可以是float類型5.為了區(qū)別單目運算符的前置和后置運算,在后置運算符進行重載時,額外添加一個參數(shù),其類型是(D)。A.void B.char C.float D.int6.以下運算符中,不能在C++中重載的是(A)。A.?: B.+ C.- D.<=7.在一個類中可以對一個操作符進行(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.提高成員的運營效率B.加強類的封裝性C.實現(xiàn)數(shù)據(jù)的隱藏性D.增長成員函數(shù)的種類10.下列關于靜態(tài)數(shù)據(jù)成員的特性描述中錯誤的是(D)。A.說明靜態(tài)數(shù)據(jù)成員時前邊要加staticB.靜態(tài)數(shù)據(jù)成員要在類體外進行初始化C.引用靜態(tài)數(shù)據(jù)成員時,要在靜態(tài)數(shù)據(jù)成員名前加“類名”和作用域運算符D.靜態(tài)數(shù)據(jù)成員不是所有對象所共用的11.關于友元的描述中,對的的是(C)。A.友元函數(shù)是成員函數(shù)的一種,它可以訪問類的私有成員B.友元函數(shù)不能提高程序的運營效率C.友元函數(shù)要在類體內(nèi)說明D.友元函數(shù)增強了類的封裝性和隱藏性12.用來說明類的友元的是(D)。A.privateB.protectedC.publicD.friend13.已知f1和f2是同一個類的兩個成員函數(shù),但f1不能調(diào)用f2,下列選項中符合規(guī)定的是(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ù)的實現(xiàn)必須在類的內(nèi)部定義B.友元函數(shù)是類的成員函數(shù)C.友元函數(shù)破壞了類的封裝性和隱藏性D.友元函數(shù)不能訪問類的保護成員15.一個類的友元函數(shù)或友元類可以通過成員操作符訪問該類的(D)A.私有成員B.保護成員C.公有成員D.所有成員16.下面對靜態(tài)數(shù)據(jù)成員的描述中,對的的是(D)A.靜態(tài)數(shù)據(jù)成員可以在類體內(nèi)進行初始化B.靜態(tài)數(shù)據(jù)成員不可以被類的對象調(diào)用C.靜態(tài)數(shù)據(jù)成員不受private控制符的限制D.靜態(tài)數(shù)據(jù)成員可以直接用類名調(diào)用17.C++語言中提供的(B)不是類的成員,但具有類成員的特權。A.構(gòu)造函數(shù)B.友元函數(shù)C.虛函數(shù)D.重載函數(shù)18.下列關于靜態(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.關鍵字friend用于聲明友元B.一個類中的成員函數(shù)可以是另一個類的友元函數(shù)C.友元函數(shù)訪問對象的成員不受訪問特性影響D.友元函數(shù)通過this指針訪問對象成員20.下列有關一個類的友元函數(shù)的敘述中,對的的(B)A.允許在類外訪問類中除私有成員以外的所有成員B.允許在類外訪問類中的任何成員C.友元也是該類的成員D.友元的聲明必須被放在該類的公有部分三、判斷題1、靜態(tài)數(shù)據(jù)成員可以通過類名或?qū)ο竺谩?、靜態(tài)數(shù)據(jù)成員可以在類內(nèi)或類外進行初始化。3、在靜態(tài)成員函數(shù)中可以訪問本類中非靜態(tài)的數(shù)據(jù)成員。4、類的靜態(tài)成員函數(shù)的初始化工作要放在類外進行。5、若A是B的友元類,B是C的友元類,則A是C的友元類。6、通過運算符重載,可以定義新的運算符。7、C++中的所有運算符都能被重載。8、運算符重載不能改變操作數(shù)的個數(shù)。9、運算符重載不能改變其優(yōu)先級與結(jié)合性。10、在運算符重載函數(shù)中不能使用缺省的參數(shù)值。答案:1、√ 2、× 3、√ 4、× 5、× 6、× 7、× 8、√ 9、√ 10、√四、程序分析題(寫程序運營結(jié)果)1.#include<iostream.h>classA{ intx,y,z;public:A(intvx,intvy,intvz){x=vx;y=vy;z=vz;}A(){x=0;y=0;z=0;}Aoperator+(At){Ate;te.x=x+t.z;te.y=y+t.y;te.z=z+t.z;returnte;}Aoperator-(At){Ate;te.x=x-t.z;te.y=y-t.y;te.z=z-t.z;returnte;}Aoperator=(At){x=t.x;y=t.y;z=t.z;return*this;}voidprint(){cout<<x<<""<<y<<""<<endl;}};voidmain(){At1(10,10,10),t2(20,20,20),t3;t3=t1+t2;t3.print();t3=t2=t1;t1.print();t2.print();t3.print();}答案:30301010101010102.#include<iostream.h>classA{public:A(intr,intc){row=r;col=c;elem=newint[row*col];}int&operator()(intx,inty){returnelem[col*x+y];}intoperator()(intx,inty)const{returnelem[col*x+y];}~A(){delete[]elem;}private: int*elem; introw,col;};voidmain(){Am(5,8);inti;for(i=0;i<5;i++)m(i,1)=i+5;for(i=0;i<5;i++)cout<<m(i,1)<<",";cout<<endl;}答案:5,6,7,8,9,3.#include<iostream>usingnamespacestd;classgoods{private:staticinttotalweight;intweight;public:goods(intw){weight=w;totalweight+=weight;}goods(goods&gd){weight=gd.weight;totalweight+=weight;}~goods(){totalweight-=weight;}staticintgettotal(){returntotalweight;}};intgoods::totalweight=0;voidmain(){goodsg1(50);cout<<goods::gettotal()<<endl;goodsg2(100);cout<<g2.gettotal()<<endl;}答案:501504.#include<iostream>usingnamespacestd;classA{inti,j;staticintc;public:A(inta=0,intb=0){i=a;j=b;c++;}~A(){c--;}staticvoidf(){cout<<"c="<<c<<endl;}};intA::c=0;voidmain(){Aa(4,8),b,d;{Az(3,6),f;A::f();}A::f();}答案:c=5c=35.#include<iostream>usingnamespacestd;classpoint{public:voidpoi(intpx=10,intpy=10){x=px;y=py;}friendintgetpx(pointa);friendintgetpy(pointb);private:intx,y;};intgetpx(pointa){returna.x;}intgetpy(pointa){returna.y;}voidmain(){pointp,q;p.poi();q.poi(15,15);cout<<getpx(p);cout<<getpy(p)<<endl;cout<<getpx(q);cout<<getpy(q)<<endl;}答案:101015156.#include<iostream.h>classB;classA{intdata;A*prev;public:A(intd,A*n){data=d;prev=n;}friendclassB;};classB{A*top;public:B(){top=0;}voidpush(inti){A*n=newA(i,top);top=n;}intpop(){A*t=top;if(top){top=top->prev;intc=t->data;deletet;returnc;}return0;}};voidmain(){intc[10]={23,34,56,87,67,876,42,657,55,66};Bs;for(inti=0;i<10;i++)s.push(c[i]);for(i=0;i<10;i++)cout<<s.pop()<<",";cout<<endl;}答案:66,55,657,42,876,67,87,56,34,23,7.#include<iostream>usingnamespacestd;classTIME;classDATE{public: DATE(inta=2023,intm=9,intb=23) { year=a; month=m; day=b; } voidDateTime(TIME&t);private: intyear,month,day;};classTIME{public: TIME(inth=0,intm=0,ints=0) { hour=h; minute=m; second=s; } friendvoidDATE::DateTime(TIME&t);private: inthour,minute,second;};voidDATE::DateTime(TIME&t){ cout<<"Nowis"<<year<<'.'<<month<<'.'<<day<<t.hour<<':'<<t.minute<<':'<<t.second<<'.'<<endl;}intmain(){DATEb(2023,9,23);TIMEt(10,20,50);b.DateTime(t);return0;}答案:Nowis2023.9.2310:20:50.四、編程題1.定義一個解決日期的類TDate,它有3個私有數(shù)據(jù)成員:Month,Day,Year和若干個公有成員函數(shù),并實現(xiàn)如下規(guī)定:(1)成員函數(shù)設立缺省參數(shù);(2)定義一個友元函數(shù)來打印日期。參考程序:#include<iostream>usingnamespacestd;classTDate{public: TDate(intm=0,intd=0,inty=0):Month(m),Day(d),Year(y) {} ~TDate(){} friendvoidShow(TDate);private: intMonth,Day,Year;};voidShow(TDated){ cout<<d.Year<<"年"<<d.Month<<"月"<<d.Day<<"日"<<endl;}intmain(){ TDated1,d2(4,8,2023); Show(d1); Show(d2); return0;}2.設計一個類CTimeInfo,規(guī)定其滿足下述規(guī)定。(1)規(guī)定有一個無參數(shù)的構(gòu)造函數(shù),其初始的小時和分鐘分別為:0,0;(2)規(guī)定有一個帶參數(shù)的構(gòu)造函數(shù),其參數(shù)分別相應小時和分鐘;(3)規(guī)定用一個成員函數(shù)實現(xiàn)時間的設立;(4)規(guī)定用一個友元函數(shù)實現(xiàn)以12小時的方式輸出時間;(5)規(guī)定用一個友元函數(shù)實現(xiàn)以24小時的方式輸出時間;參考程序:#include<iostream>usingnamespacestd;classCTimeInfo{public:CTimeInfo():Hour(0),Minute(0){} CTimeInfo(inth,intm):Hour(h),Minute(m) {} ~CTimeInfo(){} voidSet(inth,intm) { Hour=h;Minute=m; } friendvoidShow_12(CTimeInfo); friendvoidShow_24(CTimeInfo);private: intHour,Minute;};voidShow_12(CTimeInfod){ if(d.Hour<=12) cout<<"am"<<d.Hour<<":"<<d.Minute<<endl; else { d.Hour-=12;cout<<"pm"<<d.Hour<<":"<<d.Minute<<endl; }}voidShow_24(CTimeInfod){ cout<<d.Hour<<":"<<d.Minute<<endl;}intmain(){ CTimeInfod1,d2(21,8); Show_12(d1); Show_12(d2); Show_24(d2); return0;}3.定義一個Student類,在該類定義中涉及:一個數(shù)據(jù)成員score(分數(shù))及兩個靜態(tài)數(shù)據(jù)成員total(總分)和count(學生人數(shù))。成員函數(shù):scoretotalcount(floats)用于設立分數(shù)、求總分和累計學生人數(shù);靜態(tài)成員函數(shù)sum用于返回總分;靜態(tài)成員函數(shù)average用于求平均分。在main函數(shù)中,創(chuàng)建三名學生,并調(diào)用上述函數(shù)求這三名學生的總分和平均分。參考程序:#include<iostream.h>classStudent{public:voidscoretotalcount(floats){score=s;total+=score;count++;}staticfloatsum(){returntotal;}staticfloataverage(){returntotal/count;}private:floatscore;staticfloattotal;staticintcount;};floatStudent::total=0;intStudent::count=0;voidmain(){Students1,s2,s3;s1.scoretotalcount(70);s2.scoretotalcount(80);s3.scoretotalcount(90);cout<<"total:"<<Student::sum()<<endl;cout<<"average:"<<Student::average()<<endl;}4.編寫程序?qū)崿F(xiàn)賓館住宿客人管理。定義客人類Guest,包含客人編號Num(按先后順序自動生成)、姓名Name、住宿房號Room、房費fee,并定義靜態(tài)成員Count,用于記錄客人總數(shù);提供構(gòu)造函數(shù),顯示信息函數(shù)Display,以及返回客人總數(shù)函數(shù)GetCount等。在主函數(shù)中創(chuàng)建3個客人對象進行測試。參考程序:#include<iostream>#include<string>usingnamespacestd;classGuest{public: Guest(stringn,stringr,doublef) { Num=++Count; Name=n; Room=r; fee=f; } voiddisplay() { cout<<Num<<""<<Name<<""<<Room<<""<<fee<<endl; } staticintGetCount() { returnCount; }private: intNum; stringName; stringRoom; doublefee; staticintCount;};intGuest::Count=0;intmain(){ Guestg1("zhang","101",200); Guestg2("li","201",300); Guestg3("wang","301",500); g1.display(); g2.display(); g3.display(); cout<<"Total="<<Guest::GetCount()<<endl; return0;}5.生成一個復數(shù)類Complex。復數(shù)的實部和虛部分別為double型x和y。重載運算符加、減、乘、除為類的成員函數(shù),用來計算兩個復數(shù)的加、減、乘、除運算。參考程序:#include<iostream.h>classcomplex {private: doublex,y; public: complex(doublexx=0,doubleyy=0) { x=xx; y=yy; } voiddisplay() {cout<<"("<<x<<","<<y<<"i)"<<endl;} complexoperator+(complex&c1); complexoperator-(complex&c1);complexoperator*(complex&c1);complexoperator/(complex&c1);};complexcomplex::operator+(complex&c1) { complexc; c.x=x+c1.x; c.y=y+c1.y; returnc;}complexcomplex::operator-(complex&c1) { complexc; c.x=x-c1.x; c.y=y-c1.y; returnc;}complexcomplex::operator*(complex&c1) { complexc; c.x=x*c1.x-y*c1.y; c.y=x*c1.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物聯(lián)網(wǎng)技術在職教實訓室的應用前景
- 現(xiàn)代物流配送體系的智能化升級路徑
- 2024年學年八年級語文上冊 第一單元 愛在人間 第3課《蘆花蕩》說課稿 滬教版五四制
- 2024年四年級英語下冊 Unit 5 What will you do this weekend Lesson 25說課稿 人教精通版(三起)
- Unit 1 Greetings(說課稿)-2024-2025學年滬教版(五四制)(2024)英語一年級上冊
- 2023二年級數(shù)學下冊 7 萬以內(nèi)數(shù)的認識第2課時 1000以內(nèi)數(shù)的認識(2)說課稿 新人教版
- Unit 3 Food Let's Spell(說課稿)-2024-2025學年人教新起點版英語三年級上冊
- 2024-2025學年高一地理《宇宙中的地球》說課稿
- 2023六年級數(shù)學上冊 八 探索樂園單元概述和課時安排說課稿 冀教版
- 2024-2025學年高中歷史 專題4 雅爾塔體制下的冷戰(zhàn)與和平 3 人類對和平的追求說課稿(含解析)人民版選修3
- 2025年中國濕度傳感器行業(yè)深度分析、投資前景、趨勢預測報告(智研咨詢)
- 人教版道德與法治二年級下冊《第一單元 讓我試試看》大單元整體教學設計2022課標
- 甘肅省蘭州市蘭煉一中2025屆數(shù)學高一上期末統(tǒng)考試題含解析
- 聯(lián)合體三方協(xié)議合同模板
- 2024年3季度青島房地產(chǎn)市場季度簡報
- 蘇東坡詞十首
- 山東省臨沂市2024年中考物理真題
- 2023年天津市文化和旅游局直屬事業(yè)單位招聘考試真題及答案
- 電力系統(tǒng)分析(郝亮亮)
- 改善護理服務行動計劃方案
- 建筑材料包銷協(xié)議書
評論
0/150
提交評論