C++課后習(xí)題解答_第1頁(yè)
C++課后習(xí)題解答_第2頁(yè)
C++課后習(xí)題解答_第3頁(yè)
C++課后習(xí)題解答_第4頁(yè)
C++課后習(xí)題解答_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第1章 面向?qū)ο蟮姆椒▽W(xué)1什么是面向?qū)ο蠓椒▽W(xué)?解:面向?qū)ο蠓椒▽W(xué)就是盡量模擬人類習(xí)慣的思維方式,使軟件開發(fā)的方法與過程盡可能接近人類認(rèn)識(shí)世界、解決問題的方法與過程,從而使描述問題的問題空間(即問題域)與實(shí)現(xiàn)解法的解空間(即求解域)在結(jié)構(gòu)上盡可能一致。2什么是對(duì)象?它與傳統(tǒng)的數(shù)據(jù)有何關(guān)系?有什么不同?解:對(duì)象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體。它與傳統(tǒng)數(shù)據(jù)有本質(zhì)的不同,傳統(tǒng)數(shù)據(jù)是被動(dòng)地等待對(duì)它進(jìn)行處理,對(duì)象是進(jìn)行處理的主體。3什么是封裝性和繼承性?解:封裝是面向?qū)ο蠓椒ǖ囊粋€(gè)重要特點(diǎn),即將對(duì)象的屬性和行為封裝在對(duì)象的內(nèi)部,形成一個(gè)獨(dú)立的單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。繼

2、承性是子類自動(dòng)共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制,這是類之間的一種關(guān)系。4什么是多態(tài)性?解:多態(tài)性是面向?qū)ο蠓椒ǖ闹匾卣?。不同的?duì)象,收到同一消息可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。5試寫出學(xué)生管理系統(tǒng)中所涉及的類(屬性和方法)。學(xué)生管理系統(tǒng)中學(xué)生信息有:姓名、學(xué)號(hào)、年齡、成績(jī);學(xué)生管理系統(tǒng)完成學(xué)生信息輸入、學(xué)生信息輸出、插入學(xué)生信息、刪除學(xué)生信息、查找學(xué)生信息。解:class Studentprivate: char cName12;/姓名long lNum;/學(xué)號(hào) int age; /年齡 float fGrade;/成績(jī)public: void Input();/輸入學(xué)生信息 void

3、Print();/輸出學(xué)生信息 void Insert();/插入學(xué)生信息 void Del(); /刪除學(xué)生信息 void Find(); /查找學(xué)生信息;6目前常用的面向?qū)ο蟪绦蛟O(shè)計(jì)語言有哪些?各有哪些特點(diǎn)?解:Visual C+6.0支持面向?qū)ο缶幊?、可視化、模塊化、代碼可重用和組件共享等技術(shù),可以大大提高軟件系統(tǒng)的設(shè)計(jì)、管理和開發(fā)速度。Java語言是一種通用、并發(fā)、基于類的面向?qū)ο蟪绦蛟O(shè)計(jì)語言。Java語言具有簡(jiǎn)捷性、面向?qū)ο?、分布式、健壯性、安全性、可移植性、解釋型、高性能、多線程、動(dòng)態(tài)性等特點(diǎn)。C#(讀做“C sharp”)是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)行于.NET Frame

4、work之上的高級(jí)程序設(shè)計(jì)語言。C#集C語言的簡(jiǎn)潔強(qiáng)大、C+的面向?qū)ο蟆B的圖形化設(shè)計(jì)方法、Java的編譯與執(zhí)行機(jī)制等優(yōu)點(diǎn)于一身。C#是創(chuàng)新性的新式編程語言,它巧妙地結(jié)合了最常用的行業(yè)語言和研究語言中的功能,并引入了多種潛在的新功能,提高了開發(fā)人員在語言構(gòu)造方面的效率,將快速的應(yīng)用程序開發(fā)與對(duì)底層平臺(tái)各種功能的訪問緊密結(jié)合在一起,使得程序員能夠在.NET平臺(tái)上快速開發(fā)各種應(yīng)用程序。7C+支持多態(tài)性主要表現(xiàn)在哪些方面?解:C+支持兩種多態(tài)性,即編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。編譯時(shí)的多態(tài)性是通過重載來實(shí)現(xiàn)的,運(yùn)行時(shí)的多態(tài)性是通過虛函數(shù)來實(shí)現(xiàn)的。思考題1設(shè)計(jì)一個(gè)棧類,實(shí)現(xiàn)的操作有初始化棧、入棧、

5、出棧、判??铡=猓篶lass Stackprivate: int top; int s100;public: void Ini_Stack(); /初始化棧 void Push_Stack(); /入棧 void Pop_Stack(); /出棧 void Empty(); /判???2設(shè)計(jì)一個(gè)隊(duì)列類,實(shí)現(xiàn)的操作有初始化隊(duì)列、入隊(duì)、出隊(duì)、判隊(duì)空。解:class Queueprivate: int front,rear; int que100;public: void Ini_Queue(); /初始化隊(duì)列 void In_Queue(); /入隊(duì) void Out_Queue(); /出隊(duì) v

6、oid Empty(); /判隊(duì)空;第2章 類 與 對(duì) 象1構(gòu)造函數(shù)和析構(gòu)函數(shù)的主要作用是什么?解:構(gòu)造函數(shù)的功能是在創(chuàng)建對(duì)象時(shí),給數(shù)據(jù)成員賦初值,即對(duì)象的初始化。析構(gòu)函數(shù)的功能是釋放一個(gè)對(duì)象,在對(duì)象刪除之前,用它來做一些內(nèi)存釋放等清理工作。2什么是this指針?它的主要作用是什么?解:this指針稱為自引用指針。每當(dāng)對(duì)象調(diào)用成員函數(shù)時(shí),系統(tǒng)就將該對(duì)象的地址賦給this指針,這時(shí)C+編譯器將根據(jù)this指針?biāo)赶虻膶?duì)象來確定應(yīng)該引用哪一個(gè)對(duì)象的數(shù)據(jù)成員。3什么是友元函數(shù)?解:友元函數(shù)不是當(dāng)前類中的成員函數(shù),它可以是一個(gè)不屬于任何一個(gè)類的一般函數(shù)(即非成員函數(shù)),也可以是另外一個(gè)類的成員函數(shù)。4

7、什么是靜態(tài)數(shù)據(jù)成員?靜態(tài)數(shù)據(jù)成員的定義和初始化方法是什么?解:類的靜態(tài)數(shù)據(jù)成員擁有一塊單獨(dú)的存儲(chǔ)區(qū),不管用戶創(chuàng)建了多少個(gè)該類的對(duì)象,所有這些對(duì)象的靜態(tài)數(shù)據(jù)成員都共享這一塊靜態(tài)存儲(chǔ)空間,是這些對(duì)象互相通信的一種方法。靜態(tài)數(shù)據(jù)成員的定義格式:static 類型名 靜態(tài)成員名;靜態(tài)數(shù)據(jù)成員的初始化格式:類型 類名靜態(tài)數(shù)據(jù)成員= 初始化值;5關(guān)于構(gòu)造函數(shù)的敘述正確的是( B )。 A構(gòu)造函數(shù)可以有返回值B構(gòu)造函數(shù)的名字必須與類名完全相同 C構(gòu)造函數(shù)必須帶有參數(shù)D構(gòu)造函數(shù)必須定義,不能默認(rèn)6關(guān)于析構(gòu)函數(shù)特征描述正確的是( C )。 A一個(gè)類中可以有多個(gè)析構(gòu)函數(shù)B析構(gòu)函數(shù)名與類名完全相同 C析構(gòu)函數(shù)不能指

8、定返回類型D析構(gòu)函數(shù)可以有一個(gè)或多個(gè)參數(shù)7構(gòu)造函數(shù)是在( B )時(shí)被執(zhí)行的。 A程序編譯B創(chuàng)建對(duì)象C創(chuàng)建類D程序裝入內(nèi)存8定義A是一個(gè)類,那么執(zhí)行語句“A a, b(3),*p;”調(diào)用了( A )次構(gòu)造函數(shù)。 A2B3C4D59在下列函數(shù)原型中,可以作為類Base析構(gòu)函數(shù)的是( B )。 AvoidBaseBBase( )CBase( )const DBase( )10this指針是C+實(shí)現(xiàn)( B )的一種機(jī)制。 A抽象B封裝C繼承D重載11已知類中的一個(gè)成員函數(shù)說明為:void Set (X &a)其中,X &a的含義是( C )。 A指向類X的指針為aB將a 的地址賦給變量 Ca是類X的對(duì)

9、象引用,用來作為Set( )的形參 D變量X與a按位與作為函數(shù)Set( )的形參12下面關(guān)于友元函數(shù)的描述中,正確的說法是( A )。 A友元函數(shù)是獨(dú)立于當(dāng)前類的外部函數(shù) B一個(gè)友元函數(shù)不能同時(shí)定義為兩個(gè)類的友元函數(shù) C友元函數(shù)必須在類的外部定義 D在外部定義友元函數(shù)時(shí),必須加關(guān)鍵字friend13一個(gè)類的友元函數(shù)能夠訪問該類的( D )。 A私有成員B保護(hù)成員C公有成員D所有成員14友元的作用之一是( A )。 A提高程序的運(yùn)行效率B加強(qiáng)類的封裝性 C實(shí)現(xiàn)數(shù)據(jù)的隱藏性D增強(qiáng)成員函數(shù)的種類15n=1516s=10思考題1定義一個(gè)學(xué)生類,學(xué)生信息有學(xué)號(hào)、姓名和成績(jī)。成績(jī)包括計(jì)算機(jī)、英語、數(shù)學(xué)成績(jī)

10、和平均分。要求利用隊(duì)列實(shí)現(xiàn)學(xué)生的入隊(duì)、出隊(duì)和顯示等功能。const int MAXSIZE=5; /queue.hstruct datatypelong no;char name10;float score;class Studentprivate:datatype dataMAXSIZE;int front,rear;int num;public:Student();int In_SeQueue(datatype x);int Out_SeQueue();void Print_SeQueue();/ queue.cpp#include iostreamusing namespace std;

11、#include queue.hint _tmain(int argc, _TCHAR* argv)Student sq;int i;for (i=1;i=3;i+)datatype stu;coutinput no,name,scorestu.no stu.score ;sq.In_SeQueue (stu);coutPrint_SeQueueendl;sq.Print_SeQueue ();sq.Out_SeQueue ();coutAfter Out_SeQueue 0;number-,i=(i+1)%MAXSIZE)coutdatai.no da

12、tai.score endl;2定義一個(gè)圖書類,圖書信息有圖書名稱、作者、出版社、價(jià)格。要求利用棧實(shí)現(xiàn)圖書的入庫(kù)、出庫(kù)和顯示等功能。const int MAXSIZE=5; / stack.hstruct datatypechar name10,author10,publish20;float price;class Stackprivate:datatype dataMAXSIZE;int top;public:Stack();int Push_SeqStack(datatype x);int Pop_SeqStack();void Print_SeqStack();/ stack.cpp#

13、include iostreamusing namespace std;#include stack.hint _tmain(int argc, _TCHAR* argv)Stack sq;int i;for (i=1;i=3;i+)datatype b;coutinput name,author,publish, b.author b.publish b.price ;sq.Push_SeqStack(b);coutPrint_SeqStackendl;sq.Print_SeqStack();sq.Pop_SeqStack ();coutAfter Popendl;sq

14、.Print_SeqStack();return 0;Stack:Stack()top=-1;int Stack:Push_SeqStack(datatype x)if(top=MAXSIZE-1)return(0);elsetop+;datatop=x;return(1);int Stack:Pop_SeqStack()if(top=-1)return 0;elsetop-;return 1;void Stack:Print_SeqStack()int i;for(i=0;i=top;i+) datai.author datai.publish datai.pri

15、ceendl;3有Distance類和Point類,將Distance類定義為Point類的友元類來實(shí)現(xiàn)計(jì)算兩點(diǎn)之間距離。/ point.hclass Pointpublic:Point(int xx=0,int yy=0)X=xx;Y=yy;friend class Distance;private:int X,Y;class Distancepublic:float fDist(Point a,Point b);/point.cpp#includeiostreamusing namespace std;#includemath.h#includepoint.hint main() Poin

16、t myp1(1,1),myp2(4,5);Distance d;coutThe distance is: ;coutd.fDist(myp1,myp2)endl; return 0;float Distance:fDist(Point p1,Point p2)double x,y;x=p1.X -p2.X ;y=p1.Y -p2.Y ;return float(sqrt(x*x+y*y);第3章 函數(shù)重載與內(nèi)聯(lián)函數(shù)1為什么要進(jìn)行函數(shù)重載?解:當(dāng)函數(shù)實(shí)現(xiàn)的是同一類功能,只是部分細(xì)節(jié)不同(如參數(shù)的個(gè)數(shù)或參數(shù)類型不同)時(shí),利用函數(shù)重載機(jī)制可以將這些函數(shù)取成相同的名字,從而使程序易于閱讀和理解,方便

17、記憶和使用。2什么是內(nèi)聯(lián)函數(shù)?解:內(nèi)聯(lián)函數(shù)是一個(gè)函數(shù),它與一般函數(shù)的區(qū)別是在使用時(shí)可以像宏一樣展開,所以沒有函數(shù)調(diào)用的開銷。因此,使用內(nèi)聯(lián)函數(shù)可以提高系統(tǒng)的執(zhí)行效率。3函數(shù)重載的意義主要在于( A )。 A使用方便,提高可讀性B提高執(zhí)行效率 C減少存儲(chǔ)空間開銷D提高程序可靠性4下面關(guān)于重載函數(shù)的說法中正確的是( C )。 A重載函數(shù)一定具有不同的返回值類型B重載函數(shù)形參個(gè)數(shù)一定不同 C重載函數(shù)一定有不同的形參列表 D重載函數(shù)名可以不同5一個(gè)函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,選用( A )。 A內(nèi)聯(lián)函數(shù)B重載函數(shù)C遞歸函數(shù)D嵌套函數(shù)6將函數(shù)聲明為內(nèi)聯(lián)函數(shù)的關(guān)鍵字是( C )。 Aregiste

18、rBstaticCinlineDextern7在內(nèi)聯(lián)函數(shù)內(nèi)允許使用的是( C )。 A循環(huán)語句B開關(guān)語句C賦值語句D以上都允許8在C+中,下列關(guān)于參數(shù)默認(rèn)值的描述中正確的是( C )。 A設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)當(dāng)全部設(shè)置 B設(shè)置參數(shù)默認(rèn)值后,調(diào)用函數(shù)不能再對(duì)參數(shù)賦值 C設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)當(dāng)從右向左設(shè)置 D只能在函數(shù)定義時(shí)設(shè)置參數(shù)默認(rèn)值9741013思考題1 利用重載求兩個(gè)整數(shù)、三個(gè)整數(shù)和四個(gè)整數(shù)的最小值。#include iostreamusing namespace std;int Min(int x1,int x2);int Min(int x1,int x2,int x3);int Mi

19、n(int x1,int x2,int x3,int x4);int main()int x1,x2,x3,x4;coutinput x1,x2,x3,x4x1x2x3x4;coutMin(x1,x2)endl;coutMin(x2,x3,x4)endl;coutMin(x1,x2,x3,x4)endl;return 0;int Min(int x1,int x2)return (x1x2 ? x1:x2);int Min(int x1,int x2,int x3)int y;y=x1x2 ? x1:x2;return (yx3 ? y:x3);int Min(int x1,int x2,in

20、t x3,int x4)int y1,y2;y1=x1x2 ? x1:x2;y2=x3x4 ? x3:x4;return (y1y2 ? y1:y2);2利用重載計(jì)算長(zhǎng)方形、正方形、圓、梯形的面積和體積。#include iostreamusing namespace std;float Area(float x,float y);float Area(float x);float Area(float r,const double pi);float Area(float a,float b,float h);float Volumn(float a,float b,float h);flo

21、at Volumn(float a);float Volumn(float r,const float pi);float Volumn(float a,float b,float a1,float b1,float h);int main()float x,y,z,x1,y1;const float PI=3.14;cout-計(jì)算面積-endl;cout輸入長(zhǎng)、寬xy;cout長(zhǎng)方形的面積是:Area(x,y)endl;cout輸入邊長(zhǎng)x;cout正方形的面積是:Area(x)endl;cout輸入半徑x;cout圓的面積是:Area(x,PI)endl;cout輸入上底、下底及高xyz;c

22、out梯形的面積是:Area(x,y,z)endl;cout-計(jì)算體積-endl;cout輸入長(zhǎng)、寬和高xyz;cout長(zhǎng)方形的體積是:Volumn(x,y,z)endl;cout輸入邊長(zhǎng)x;cout正方形的體積是:Volumn(x)endl;cout輸入半徑x;cout圓的體積是:Volumn(x,PI)endl;cout輸入上底邊長(zhǎng)a、b,下底邊長(zhǎng)a1、b1,以及高xyx1y1z;cout梯形的體積是:Volumn(x,y,x1,y1,z)endl;return 0;float Area(float x,float y)return x*y;float Area(float x)retur

23、n x*x;float Area(float r,const double pi)return pi*r*r;float Area(float a,float b,float h)return (a+b)*h/2;float Volumn(float a,float b,float h)return a*b*h;float Volumn(float a)return a*a*a;float Volumn(float r,const float pi)return 4*pi*r*r*r/3;float Volumn(float a,float b,float a1,float b1,float

24、h)return h*(a*b+(a+a1)*(b+b1)+a1*b1)/6.0;3利用重載實(shí)現(xiàn)對(duì)10個(gè)整數(shù)和10個(gè)實(shí)數(shù)的排序。#include iostreamusing namespace std;void sort(int a,int n);void sort(float a,int n);int main()const int n=10;int i,an;float bn;cout輸入n個(gè)整數(shù)endl;for(i=0;iai;sort(a,n);cout排序結(jié)果為:endl;for(i=0;in;i+)coutai ;coutendl;cout輸入n個(gè)實(shí)數(shù)endl;for(i=0;ib

25、i;sort(b,n);cout排序結(jié)果為:endl;for(i=0;in;i+)coutbi ;coutendl;return 0;void sort(int a,int n)int i,j,t;for (i=0;in-1;i+)for (j=i+1;jn;j+)if(aiaj)t=ai;ai=aj;aj=t;void sort(float a,int n)int i,j;float t;for (i=0;in-1;i+)for (j=i+1;jn;j+)if(aiaj)t=ai;ai=aj;aj=t;第4章 常量與引用1使用const的優(yōu)點(diǎn)是什么?應(yīng)該注意哪些問題?答:使用const的好處

26、是它允許指定一種語意上的約束:某種對(duì)象不能被修改而由編譯器具體來實(shí)施這種約束。通過const,可以通知編譯器和其他程序員某個(gè)值要保持不變。注意問題:(1) 盡量把const定義放進(jìn)頭文件里,由此通過包含頭文件,把const定義放在一個(gè)需要放置的地方,并由編譯器分配給它一個(gè)編譯單元。(2) 當(dāng)定義一個(gè)常量(const)時(shí),必須初始化,即賦初值給它,除非用extern做了清楚的說明。2指出下面非法的定義。(D) Aint I;Bconst int ic;Cconst int *pic;Dint *const cpi;3下列哪些初始化為合法的?指出原因。(D) Aint i=1;Bconst int

27、 ic=I;Cconst int *pic=⁣ Dint *const cpi=⁣E const int *const cpic=⁣4根據(jù)第3題,以下賦值哪些是非法的?為什么?(E) Ai=ic;Bpic=cpic;Cpic=⁣Dcpic=⁣ Ecpi=pic;Fic=*cpic;5下列定義中,哪些是無效的?為什么?如何改正?(BDFGIJ) Aint i=1.02;Bint &j=1.002;Cint & k=i;Dint &m=&i; Eint *pi=&i;Fint &n=pi;Gint &p=*pi;Hint &* pval=pi; Iconst int

28、&iv=1;Jconst int &* pval=&ival;6下面的類型聲明中正確的是(D)。 Aint &a4;Bint &*p;Cint &q;Dint i,*p=&i;7建立一個(gè)包含const成員的類,在構(gòu)造函數(shù)初始化表達(dá)式里初始化這個(gè)const成員,建立一個(gè)無標(biāo)記的枚舉,用它決定一個(gè)數(shù)組的大小。class conClass const int NUM; public: conClass();conClass:conClass():NUM(100)8建立一個(gè)類,該類具有const和非const成員函數(shù)。建立這個(gè)類的const和非const對(duì)象,試著為不同類型的對(duì)象調(diào)用不同類型的成員函數(shù)

29、。class Studentint No;char Name20;public:Student();int GetNo()const;/const成員函數(shù)const char* GetName();/返回值為const的成員函數(shù),不是const成員函數(shù);int Student:GetNo()constreturn No;const char* Student:GetName()return Name;9引用的使用規(guī)則是什么?答:(1) 當(dāng)引用被創(chuàng)建時(shí),它必須被初始化(指針則可以在任何時(shí)候被初始化)。(2) 一旦一個(gè)引用被初始化為指向一個(gè)對(duì)象,它就不能被改變?yōu)閷?duì)另一個(gè)對(duì)象的引用(指針則可以在任何

30、時(shí)候指向另一個(gè)對(duì)象)。(3) 沒有NULL引用。必須確保引用是和一個(gè)合法的存儲(chǔ)單元關(guān)聯(lián)。10寫一個(gè)帶有拷貝構(gòu)造函數(shù)的類,并編寫一個(gè)測(cè)試它的程序,以觀察在值傳遞時(shí),拷貝構(gòu)造函數(shù)是否被調(diào)用。class Studentstatic int number;public:Student() number+; show(Student);/拷貝構(gòu)造函數(shù)Student(const Student&) number+; show(Student);int Student:number=0;Student f(Student x)x.show(x inside f();return x;int main()St

31、udent h1;Student h2=f(h1);Student:show(after call f();return 0;11.略第5章 靜態(tài)與命名控制1下列靜態(tài)數(shù)據(jù)成員的特性中,錯(cuò)誤的是( D )。 A說明靜態(tài)數(shù)據(jù)成員時(shí),前邊要加關(guān)鍵字static B靜態(tài)數(shù)據(jù)成員在類外進(jìn)行初始化 C引用靜態(tài)數(shù)據(jù)成員時(shí),要在靜態(tài)數(shù)據(jù)成員名前加和作用域運(yùn)算符 D靜態(tài)數(shù)據(jù)成員不是所有對(duì)象所共有的2下列關(guān)于靜態(tài)數(shù)據(jù)成員的敘述,錯(cuò)誤的是( A )。 A靜態(tài)數(shù)據(jù)成員在對(duì)象調(diào)用析構(gòu)函數(shù)后,從內(nèi)存中撤銷 B即使沒有實(shí)例化類,靜態(tài)數(shù)據(jù)成員也可以通過類名進(jìn)行訪問 C類的靜態(tài)數(shù)據(jù)成員是該類所有對(duì)象所共享 D類的靜態(tài)數(shù)據(jù)成員需

32、要初始化3下列關(guān)于靜態(tài)成員的敘述中,錯(cuò)誤的是( B )。 A類的外部可以直接調(diào)用類的靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù) B與一般成員一樣,只有通過對(duì)象才能訪問類的靜態(tài)成員 C類的靜態(tài)數(shù)據(jù)成員不能在構(gòu)造函數(shù)中初始化 D類的一般成員函數(shù)可以調(diào)用類的靜態(tài)成員4聲明類的成員為靜態(tài)成員,必須在其前面加上關(guān)鍵字( B )。 AconstBstaticCpublicDvirtual 5靜態(tài)成員為該類的所有( B )共享。 A成員B對(duì)象Cthis指針D友元6程序運(yùn)行結(jié)果:1237程序運(yùn)行結(jié)果:CStatic:val=10思考題1利用靜態(tài)數(shù)據(jù)成員的概念,編寫一個(gè)類,統(tǒng)計(jì)目前存在多少個(gè)該類的對(duì)象。class Apriva

33、te:static int n;public:A()n+;void Print()coutnendl;int A:n=0;int main()A a1;a1.Print();A a5,a2;a2.Print ();return 0;2利用靜態(tài)數(shù)據(jù)成員的概念,編寫一個(gè)學(xué)生類,學(xué)生信息包括姓名、學(xué)號(hào)、成績(jī);統(tǒng)計(jì)學(xué)生的總?cè)藬?shù)及總成績(jī),并輸出。#include iostream#includeiomanipusing namespace std;class Studentprivate:char *name;int stu_no;float score;static int total_num;sta

34、tic float total_score;public:Student(char *na,int no,float sco);void Print();int Student:total_num =0;float Student:total_score =0;int main()Student s1(張明,1,90);s1.Print();Student s2(王蘭,2,95);s2.Print();Student s3(于敏,3,87);s3.Print();return 0;Student:Student(char *na,int no,float sco)name=new charst

35、rlen(na)+1;strcpy(name,na);stu_no=no;score=sco;total_num+;total_score=total_score+score;void Student:Print() cout第total_num個(gè)學(xué)生:namesetw(4)stu_nosetw(4)score endl;cout總?cè)藬?shù)是:total_numendl;cout總分?jǐn)?shù)是:total_scoreendl;3利用靜態(tài)的概念,編寫一個(gè)小貓類,統(tǒng)計(jì)并輸出每個(gè)小貓的重量、小貓的總數(shù)量及總重量。class small_cat / cat.hprivate:double weight;stat

36、ic double total_weight;static double total_number;public:small_cat(double w):weight(w)total_weight=total_weight+weight;total_number=total_number+1;void Print()couttotal_weight total_numberB+C=D+4程序的運(yùn)行結(jié)果: x:10 ,y:20x:10 ,y:205程序的運(yùn)行結(jié)果:a=50 b=60a=-50 b=-60a=50 b=606程序的運(yùn)行結(jié)果:i1:5 i2:3 i3:6 i1:6 i2:4 i3:7

37、思考題1重載減法運(yùn)算符,實(shí)現(xiàn)兩個(gè)字符串相減。#include iostreamusing namespace std;class Stringprivate:char *buffer;int length;public:String(char *in_str);const String &operator -=(const String &); /聲明-=運(yùn)算符重載函數(shù)void ShowString();String();int main()String s1(happy birthday),s2(birthday);s1-=s2;s1.ShowString ();return 0;Strin

38、g:String(char *in_str)length=strlen(in_str);buffer=new charlength+1;strcpy(buffer,in_str);const String & String:operator -=(const String &sub_str) /定義+=運(yùn)算符重載函數(shù)char *temp=buffer; /指向原字符串所占空間buffer=new charlength+1; /重新分配空間int i,j,k;i=0;j=0;k=0;while(istrlen(temp) & jsub_str.length )if (tempi!=sub_str

39、.bufferj)bufferk=tempi;k+;elsej+;i+;while (istrlen(temp)bufferk=tempi;k+;i+;bufferk=0;delete temp; /釋放原字符串所占空間return *this;void String:ShowString()coutbufferendl;String:String()delete buffer;2編寫一個(gè)程序,用成員函數(shù)重載運(yùn)算符“+”和“-”,實(shí)現(xiàn)兩個(gè)二維數(shù)組相加和相減,要求第一個(gè)二維數(shù)組的值由構(gòu)造函數(shù)設(shè)置,另一個(gè)二維數(shù)組的值由鍵盤輸入。const int m=3;const int n=4;class M

40、atrix / matrix.hprivate:int amn;public:Matrix();Matrix(int bn);Matrix operator +(Matrix b);Matrix operator -(Matrix b);void Print();/ matrix.cpp#includeiostreamusing namespace std;#include matrix.hint main( )Matrix a,c;int xmn;int i,j;coutinput Matrixendl;for(i=0;im;i+)for(j=0;jxij;Matrix b(x);c=a+b

41、;coutendlc=a+bendl;c.Print ();c=a-b;coutendlc=a-bendl;c.Print ();return 0;Matrix:Matrix()int i,j;for (i=0;im;i+)for(j=0;jn;j+)aij=2;Matrix:Matrix(int bn)int i,j;for (i=0;im;i+)for(j=0;jn;j+)aij=bij;Matrix Matrix:operator +(Matrix b)Matrix c;int i,j;for (i=0;im;i+)for(j=0;jn;j+)c.aij=aij+b.aij;return

42、 c;Matrix Matrix:operator -(Matrix b)Matrix c;int i,j;for (i=0;im;i+)for(j=0;jn;j+)c.aij=aij-b.aij;return c;void Matrix:Print()int i,j;for(i=0;im;i+)for(j=0;jn;j+)coutaij ;coutendl;3同題2,用友元函數(shù)重載運(yùn)算符“+”和“-”實(shí)現(xiàn)兩個(gè)二維數(shù)組相加和相減。const int m=3; / matrix.hconst int n=4;class Matrixprivate:int amn;public:Matrix();

43、Matrix(int bn);friend Matrix operator +(Matrix a,Matrix b);friend Matrix operator -(Matrix a,Matrix b);void Print();/matrix.cpp#includeiostreamusing namespace std;#include matrix.hint main( )Matrix a,c;int xmn;int i,j;coutinput Matrixendl;for(i=0;im;i+)for(j=0;jxij;Matrix b(x);c=a+b;coutendlc=a+bendl;c.Print ();c=a-b;coutendlc=a-bendl;c.Pri

溫馨提示

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

評(píng)論

0/150

提交評(píng)論