![c++類與對象習題答案知識分享_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/8/7928fcab-04f0-423d-aa22-e80d2aa11280/7928fcab-04f0-423d-aa22-e80d2aa112801.gif)
![c++類與對象習題答案知識分享_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/8/7928fcab-04f0-423d-aa22-e80d2aa11280/7928fcab-04f0-423d-aa22-e80d2aa112802.gif)
![c++類與對象習題答案知識分享_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/8/7928fcab-04f0-423d-aa22-e80d2aa11280/7928fcab-04f0-423d-aa22-e80d2aa112803.gif)
![c++類與對象習題答案知識分享_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/8/7928fcab-04f0-423d-aa22-e80d2aa11280/7928fcab-04f0-423d-aa22-e80d2aa112804.gif)
![c++類與對象習題答案知識分享_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/8/7928fcab-04f0-423d-aa22-e80d2aa11280/7928fcab-04f0-423d-aa22-e80d2aa112805.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、c+類與對象習題答案1 概念填空題1.1 類定義的關鍵字是 class 。類的數(shù)據(jù)成員通常指定為 私有 成員。類的函數(shù)成員通常指定為 公有 成員,指定為 公有 的類成員可以在類對象所在域中的任何位置訪問它們,類的 私有和保護 只能被該類的成員函數(shù)或友元函數(shù)訪問。1.2類的訪問限定符包括 public、 private 和 protected 。類成員默認的訪問方式是 private 。訪問限定符在類中 無 先后次序,各限定符 允許 (允許/不允許)多次出現(xiàn)。1.3 構造函數(shù)的任務是 建立對象 。類中可以有 多 個構造函數(shù),它們由 參數(shù) 區(qū)分。如果類說明中沒有給出構造函數(shù),則C+編譯器會提供構造
2、函數(shù),該函數(shù) 不完成 (完成/不完成)對象初始化工作。1.4復制構造函數(shù)的參數(shù)是 對象的復制 ,當程序沒有給出復制構造函數(shù)時,編譯系統(tǒng)會提供 默認復制構造函數(shù) ,完成類對象的 復制 。復制構造函數(shù)被調用情況有 3 種。1.5析構函數(shù)在對象 釋放 時被自動調用。類中沒有定義析構函數(shù)時,編譯系統(tǒng)會提供一個默認的析構函數(shù)。該函數(shù) 不完成 (完成/不完成)具體對象的清理工作。2. 簡答題2.1 為什么說類與對象的概念是客觀世界的反映?2.2 簡單解釋什么是面向對象程序設計的封裝性。2.3 引用作為函數(shù)參數(shù)時為什么能實現(xiàn)兩個實參之間的數(shù)據(jù)交換?為什么對應實參不能為引用?為什么返回值為引用的函數(shù)可以作為左
3、值?2.4 什么是默認的構造函數(shù)?默認的構造函數(shù)可以有多少個?2.5 復制構造函數(shù)用于哪3個方面?2.6 為什么在友元函數(shù)的函數(shù)體內訪問對象成員時,必須用對象名加運算符”.”再加對象成員名?2.7 類的靜態(tài)數(shù)據(jù)成員與函數(shù)中的靜態(tài)成員有何異同?2.8 類的成員函數(shù)在什么情況下應該定義為私有的?這樣做的目的是什么?2.9 友元關系有何性質?友元關系的優(yōu)點和缺點各有哪些?3.選擇題3.1 數(shù)據(jù)封裝就是將一組數(shù)據(jù)和與這組數(shù)據(jù)有關操作組裝在一起,形成一個實體,這實體也就是( B )。A類 B對象 C函數(shù)體 D數(shù)據(jù)塊3.2 類的實例化是指( B )。A定義類B創(chuàng)建類的對象C指明具體類D調用類的成員3.3下
4、列說法中正確的是( B )。A類定義中只能說明函數(shù)成員的函數(shù)頭,不能定義函數(shù)體 B類中的函數(shù)成員可以在類體中定義,也可以在類體之外定義 C類中的函數(shù)成員在類體之外定義時必須要與類聲明在同一文件中 D在類體之外定義的函數(shù)成員不能操作該類的私有數(shù)據(jù)成員3.4有如下類定義:class sample int n;public:sample (int i=0):n(i) void setValue(int n0);;下列關于setValue成員函數(shù)的實現(xiàn)中,正確的是( B )。Asample:setValue(int n0)n=n0;Bvoid sample:setValue(int n0)n=n0;C
5、void setValue(int n0)n=n0;DsetValue(int n0)n=n0;3.5在下面的類定義中,錯誤的語句是( C )。class sample public: sample(int val);/ sample( ); / private:int a=2.5; / public:sample( ); /; ABCD3.6類的構造函數(shù)被自動調用執(zhí)行的情況是在創(chuàng)建該類的(C)。 A成員函數(shù)時 B數(shù)據(jù)成員時 C對象時 D友元函數(shù)時3.7(A)是析構函數(shù)的特征。 A一個類中只能定義一個析構函數(shù) B析構函數(shù)名與類名不同 C析構函數(shù)的定義只能在類體內 D析構函數(shù)可以有一個或多個參數(shù)
6、3.8 在下列函數(shù)原型中,可以作為類AA構造函數(shù)的是( D )。 Avoid AA(int); Bint AA( ); CAA(int) const; DAA(int)3.9關于成員函數(shù)特征的下述描述中,(A)是錯誤的。 A成員函數(shù)一定是內聯(lián)函數(shù) B成員函數(shù)可以重載 C成員函數(shù)可以設置參數(shù)的默認值 D成員函數(shù)可以是靜態(tài)的3.10不屬于成員函數(shù)的是(B )。 A靜態(tài)成員函數(shù) B友元函數(shù) C構造函數(shù) D析構函數(shù)3.11已知類A是類B的友元,類B是類C的友元,則(C )。 A類A一定是類C的友元 B類C一定是類A的友元 C類C的成員函數(shù)可以訪問類B的對象的任何成員 D類A的成員函數(shù)可以訪問類B的對象
7、的任何成員3.12有如下類定義: class AAint a; public:int getRef( ) const return &a; /返回類型為int, return &a為地址int getValue( ) const return a; /void set(int n) consta=n; /常函數(shù)不能修改成員friend void show(AA aa) const couta=a;/常函數(shù)不能修改成員void h(int b) Test:b=b;/static int g( ) return a;/靜態(tài)函數(shù)要通過對象訪問成員private:int a;static int b;
8、const int c;int Test:b=0;在標注號碼的行中,能被正確編譯的是(C)。A B C D4寫出程序程序執(zhí)行結果。4.1#includeusing namespace std;class Test public:Test( ) n+=2; Test( ) n-=3;static int getNum( ) return n;private:static int n;int Test:n=1;int main( )Test* p = new Test;delete p;cout”n=”Test:getNum( )endl;return 0;n=04.2#includeusing
9、namespace std;class AAint n;public:AA(int k):n(k)int get( ) return n;int get( ) const return n+1;int main( )AA a(5);const AA b(6);couta.get()”,”b.get();return 0;574.3#includeusing namespace std;class MyClass public:int number;void set(int i);int number=3;void MyClass:set (int i)number=i;void main( )
10、MyClass my1;int number=10;my1.set(5);coutmy1.numberendl;my1.set(number);coutmy1.numberendl;my1.set(:number);coutmy1.number;51034.4#includeusing namespace std;class Testprivate:static int val;int a;public:static int func( );void sfunc(Test &r);int Test:val=200;int Test:func( )return val+;void Test:sf
11、unc(Test &r)r.a=125;coutResult3=r.aendl;void main( )coutResult1=Test:func( )endl;Test a;coutResult2=a.func()endl;a.sfunc(a);Result1=200Result2=201Result1=1255.編程題5.1 構造一個日期時間類(Timedate),數(shù)據(jù)成員包括年、月、日和時、分、秒,函數(shù)成員包括設置日期時間和輸出時間,其中年、月用枚舉類型,并完成測試(包括用成員函數(shù)和用普通函數(shù))。#include #include #include enum YRY2000,Y2001,
12、Y2002,Y2003,Y2004,Y2005;/枚舉名必須是標識符enum MTJan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec;class Timedateprivate:YR year;MT month;int date;int hh;int mm;int ss;public:Timedate()year=Y2000;month=Jan;date=1;hh=0;mm=0;ss=0;Timedate(YR a,MT b,int c)year=a;month=b;date=c;hh=12;mm=30;ss=0;void getdate(YR &,
13、MT &,int &);/體會用引用的優(yōu)點,一次可返回3個值void gettime(int &,int &,int &);void putdate(YR ,MT ,int );void puttime(int ,int ,int );void list();void Timedate:getdate(YR &y,MT &m,int &d)y=year;m=month;d=date;void Timedate:gettime(int &a,int &b,int &c)a=hh;b=mm;c=ss;void Timedate:putdate(YR a,MT b,int c)year=a;mont
14、h=b;date=c;void Timedate:puttime(int a,int b,int c)hh=a;mm=b;ss=c;void Timedate:list()/成員函數(shù)coutyear/month/date :;switch(year)case Y2000:cout2000;break;case Y2001:cout2001;break;case Y2002:cout2002;break;case Y2003:cout2003;break;case Y2004:cout2004;break;case Y2005:cout2005;break;switch(month)/,case
15、 Jan:cout/Jan;break;case Feb:cout/Feb;break;case Mar:cout/Mar;break;case Apr:cout/Apr;break;case May:cout/May;break;case Jun:cout/Jun;break;case Jul:cout/Jul;break;case Aug:cout/Aug;break;case Sep:cout/Sep;break;case Oct:cout/Oct;break;case Nov:cout/Nov;break;case Dec:cout/Dec;break;cout/dateendl;co
16、uthour:minite:second :;couthh:mm:ssendl;void show(Timedate &td)/普通函數(shù),體會兩者的不同YR year;MT month;int date,hh,mm,ss;td.getdate(year,month,date);td.gettime(hh,mm,ss);coutyear/month/date :;switch(year)case Y2000:cout2000;break;case Y2001:cout2001;break;case Y2002:cout2002;break;case Y2003:cout2003;break;ca
17、se Y2004:cout2004;break;case Y2005:cout2005;break;switch(month)/,case Jan:cout/Jan;break;case Feb:cout/Feb;break;case Mar:cout/Mar;break;case Apr:cout/Apr;break;case May:cout/May;break;case Jun:cout/Jun;break;case Jul:cout/Jul;break;case Aug:cout/Aug;break;case Sep:cout/Sep;break;case Oct:cout/Oct;b
18、reak;case Nov:cout/Nov;break;case Dec:cout/Dec;break;cout/dateendl;couthour:minite:second :;couthh:mm:ssendl;int main(int argc, char* argv)Timedate A(Y2004,Mar,3),B;A.list();B.list();B.putdate(Y2005,Oct,18);B.puttime(17,30,00);B.list();show(B);return 0;5.2 定義一個日期類Date,具有年月日等數(shù)據(jù)成員,顯示日期、加減天數(shù)等函數(shù)成員。注意需要考
19、慮閏年。#include using namespace std;class Dateint year,month,day;static const int days;bool LeapYear();bool EndofMonth();public:Date(int=1900,int=1,int =1);void Increment(int );void Decrement(int);void SetDate(int,int,int);void Print();const int Date:days=0,31,28,31,30,31,30,31,31,30,31,30,31;Date:Date
20、(int y,int m,int d)SetDate(y,m,d);void Date:SetDate(int y,int m,int d)year=(y=1900 & y=1 &m=1 & d=1 & d=daysmonth)?d:1;bool Date:LeapYear()return (year%400 = 0) | (year%4=0 & year%100!=0)? true:false;bool Date:EndofMonth()if(month=2 & LeapYear()return day=29;elsereturn day=daysmonth;void Date:Increm
21、ent(int n)int i;for(i=1;i=n;i+)if(EndofMonth() & month=12)year+;month=day=1;else if(EndofMonth()month+;day=1;elseday+;void Date:Decrement(int n)int i;for(i=1;i=n;i+)if(day=1)if(month=1)year-; month=12; day=31;else if(month=3)day=LeapYear()?29:28; month=2;elseday=days-month;elseday-;void Date:Print()
22、coutyear-month -day endl;void main()Date d1(2005,1,4),d2(2004,12,27);d1.Print();d1.Decrement(4);d1.Print();d2.Print();d2.Increment(70);d2.Print();5.3 定義一個圓類(Circle),屬性為半徑(radius)、圓周長和面積,操作為輸入半徑并計算周長、面積,輸出半徑、周長和面積。要求定義構造函數(shù)(以半徑為參數(shù),默認值為0,周長和面積在構造函數(shù)中生成)和復制構造函數(shù)。#include const double PI=3.1415;using names
23、pace std;class Circledouble radius,length,area;public:Circle(double r=0)setr(r);length=2*PI*radius;area=PI*radius*radius;Circle(Circle& c)radius=c.radius ;length=c.length ;area=c.area ;void print()coutradius= radiusendl;coutlength= lengthendl;coutarea= areaendl;void setr(double r)radius=r;int main()
24、Circle c1(10),c2(c1);c1.print();c2.print();return 0;5.4 設計一個學校在冊人員類(Person)。數(shù)據(jù)成員包括身份證號(IdPerson)、姓名(Name)、性別(Sex)、生日(Birth-day)和家庭住址(HomeAddress)。成員函數(shù)包括人員信息的錄入和顯示,還包括構造函數(shù)與復制構造函數(shù)。設計一個合適的初始值。#include #include const double PI=3.1415;using namespace std;struct dateint year,month,day;class Personchar ID1
25、2;char Name10;char Sex3;date Birth;char HomeAdd20;public:Person()ID0=Name0=Sex0=HomeAdd0=0;Birth.year=Birth.month=Birth.day=0;Person(char id,char name,char sex,date birth,char homeadd)strcpy(ID,id);strcpy(Name,name);strcpy(Sex,sex);Birth=birth;strcpy(HomeAdd,homeadd);Person(Person& p)strcpy(ID,p.ID)
26、;strcpy(Name,p.Name);strcpy(Sex,p.Sex);Birth=p.Birth;strcpy(HomeAdd,p.HomeAdd);void setID(char id)strcpy(ID,id);void setName(char name)strcpy(Name,name);void setSex(char sex)strcpy(Sex,sex);void setBirth(date birth)Birth=birth;void setHome(char homeadd)strcpy(HomeAdd,homeadd);void print()coutID= ID,
27、Name= Name,Sex= Sex,;coutBirth= Birth.year-Birth.month-Birth.day,;coutHomeAddendl;int main()date birth;birth.year =1991;birth.month =6;birth.day =12;Person p1(,陳建華,男,birth,中吳大道1801號);p1.print ();Person p2;p2.print ();return 0 ;5.5設計如下類:1)建立一個Point類,表示平面中的一個點;建立一個Line類,表示平面中的一條線端,內含兩個Point類的對象;建立Tria
28、ngle類,表示一個三角形,內含三個Line類的對象構成一個三角形。2)設計三個類的相應的構造函數(shù)、復制構造函數(shù),完成初始化和對象復制3)設計Triangle類的成員函數(shù)完成三條邊是否能構成三角形的檢驗和三角形面積計算,面積顯示。#include #include const double PI=3.1415;using namespace std;class Pointdouble X,Y;public:Point(double x=0,double y=0)X=x;Y=y;Point(Point& p)X=p.X ; Y=p.Y ;double getx()return X;double
29、gety()return Y;class LinePoint pstart,pend;double length;public:Line(Point p1,Point p2):pstart(p1),pend(p2)setl();Line(Line& l):pstart(l.pstart),pend(l.pend)setl();double getl()return length;void setl()double deltax,deltay;deltax=pstart.getx()-pend.getx();deltay=pstart.gety()-pend.gety();length=sqrt
30、(deltax*deltax+deltay*deltay);class TrangleLine lfirst,lsecond,lthird;double area;public:Trangle(Line lf,Line ls,Line lt):lfirst(lf),lsecond(ls),lthird(lt)area=0;bool check()double l1,l2,l3;l1=lfirst.getl();l2=lsecond.getl();l3=lthird.getl();return l1l2+l3 & l2l1+l3 & l3l1+l2;void calarea()if (check
31、()double s;double l1,l2,l3;l1=lfirst.getl();l2=lsecond.getl();l3=lthird.getl();s=(l1+l2+l3)/2.0;area=sqrt(s*(s-l1)*(s-l2)*(s-l3);void print()coutarea= areaendl;int main()Point p1,p2(4,0),p3(0,3);Line l1(p1,p2),l2(p1,p3),l3(p2,p3);Trangle t(l1,l2,l3);if(t.check ()t.calarea();t.print();return 0;5.6建立一
32、個分數(shù)類Fraction。分數(shù)類的數(shù)據(jù)成員包括分子和分母。成員函數(shù)包括構造函數(shù)、復制構造函數(shù)。構造函數(shù)要對初始化數(shù)據(jù)進行必要的檢查(分母不能為0)。將分數(shù)顯示成 “a/b”形式的輸出函數(shù)。成員函數(shù)包括約分、通分、加、減、乘、除、求倒數(shù)、比較大小、顯示和輸入。完成以上所有成員函數(shù)并在主函數(shù)中進行檢驗。#include using namespace std;class Fractionint numerator,denominator;int common_divisor();/計算最大公約數(shù)void contracted();/分數(shù)化簡public: Fraction(int=0,int=1)
33、;Fraction(Fraction&);Fraction Add(Fraction);Fraction Sub(Fraction);Fraction Mul(Fraction);Fraction Div(Fraction);bool operator=(Fraction);bool operator=(Fraction);bool operator=(Fraction);bool operator=(f);bool operator(Fraction f)return !(operator=(f);bool operator!=(Fraction f)return !(operator=(f
34、);Fraction Updown();void Set(int=0,int=1);void disp()coutfraction= numerator/denominatorendl;Fraction:Fraction(int num,int deno)Set(num, deno);Fraction:Fraction(Fraction& f)numerator=f.numerator;denominator=f.denominator;Fraction Fraction:Add(Fraction f)Fraction Temp(numerator*f.denominator+f.numera
35、tor*denominator,denominator*f.denominator);Temp.contracted();return Temp;Fraction Fraction:Sub(Fraction f)Fraction Temp(numerator*f.denominator-f.numerator*denominator,denominator*f.denominator);Temp.contracted();return Temp;Fraction Fraction:Mul(Fraction f)Fraction Temp(numerator*f.numerator,denominator*f.denominator);Temp.contracted
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科研樓翻新合同終止通知
- 書店裝修員工合同樣本
- 自然人借款合同樣本
- 三農村資源綜合利用路徑規(guī)劃
- 電子政務平臺建設及管理手冊
- 農業(yè)信息化建設與管理作業(yè)指導書
- 擔保借款合同書
- 聘請博士協(xié)議書
- 項目管理與協(xié)調能力作業(yè)指導書
- 農產品食品安全與質量控制標準作業(yè)指導書
- anthone溫控儀說明書LU920
- 童年創(chuàng)傷問卷(CTQ-含評分說明)
- 人教部編版小學五年級語文下冊 第三單元綜合性學習《我愛你,漢字》優(yōu)質課教案
- 工廠主文件(新)
- 樓板配筋計算表格(自動版)
- 儀表基礎知識培訓.ppt課件
- 井下探放水設計編制培訓PPT課件
- 營養(yǎng)學緒論(精)
- 魯科版英語五年級下冊Unit 5 單元測試卷及答案
- 最新ICD-9手術編碼
- 軟件項目報價方法參考模板
評論
0/150
提交評論