《面向對象程序的設計》答案_第1頁
《面向對象程序的設計》答案_第2頁
《面向對象程序的設計》答案_第3頁
《面向對象程序的設計》答案_第4頁
《面向對象程序的設計》答案_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗一熟悉VC+IDE開發(fā)環(huán)境一、實驗目的1、熟悉vC+6.0集成開發(fā)環(huán)境,熟練掌握VC-6.0項目工作區(qū)、各種編輯器、菜單欄和工具欄的使用。2、掌握如何編輯、編譯、連接和運行一個C+程序。3、通過運行簡單的C+程序,初步了解C+源程序的結構和特點。二、實驗要求1 分析下列程序運行的結果。程序一:# includeintadd(intxrinty二8);voidmain()intx=4;couKadd(x),;coutCadd(x,add(add(x,add(x)endI;)intadd(y)returnx+y;/12.28程序二# includevoidmain()int*p

2、,i;P二&i;i=*p+10;couti=iendI;)/i=15程序三:# includevoidmain(void)inti=10;int&r=i;cout-i二ir/rn;i=88;cout-i二,,ir=”rn,;i=88,r=88程序四:#includeintf(inti)staticintk二1;for(;i0;i-)k+=i;returnk;)voidmain()inti;for(i二0;iC5;i+)couUf(i)/1251121程序五:#includevoidfunc0;intn=1;voidmain()staticinta;intb=-9;coutab:bb十二4;fu

3、nc();couta:ab:bn+=10;func0;n.)nendI;voidfunc0staticinta二2;intb二5;a+=2;n+=12;b十二5;coutabfb)/a:0b:-9n:1a:4b:10n:13a:0b:-5n:13a:6b:10n:35實驗二實驗目的C+對c的擴充1、了解在面向對象程序設計過程中C+對C功能的擴充與增強,并善于在編寫程序的過程中應用這些新功能。2、進一步熟悉編輯、編譯、連接和運行C+程序的方法。3、進一步熟悉C+程序的結構和編程方法。二、實驗要求1分析下列程序運行的結果。ncludeintamount=123;voidmain()intamoun

4、t二456;cou::amount*fcou(amoun;/123,456t789,4562、編寫一個程序,用來求2個或3個正整數(shù)中的最大數(shù)。酥策磁畚數(shù)的函數(shù)實現(xiàn)。usingnamespacestd;intmax(b,intc)if(ba)a=i|f;(ca)a二c;returna;int max (int a, int b) if (ab)r覦磬urnlb;int main()i nt a 二 7, b 二-4, c 二 9;coumax (a, b, c)end I ;cout ( max (a, b)end I ; return 0;Q耳紳幅者,中大#include 里u

5、sing namespace std; 譏八I nt ma i n 0b max(int a, int b, int甘R i nt a, b, c;i nabc;婁coutmax (a, b, c)=max (a, b, c)end IcoutCmax (a, b)=max (a, b)end I ;”中的最大者return 0;占中者他瞬出兩個整數(shù)中的最大者/intmax(intarintb,intc)if(ba)a=b;if(ca)a二c;returna;)3有5個字符串,要求對它們按由小到大順序排歹U用string方法。# include# include(stringusingname

6、spacestd;intmain()inti;stringstr5二BASIC,5“FORTRAN,C+”,PASCAL”;voidsort(string口);sort(str);couKz,thesortedstrings:“endI;for(i=0;i5;i+)couKstricoutendI;return0;)voidsort(strings口)inti,j;stringt;for(j二0;jsi+U)(t=si;si=si+1;si+1=t;4、定義一個求兩個數(shù)中較小值的函數(shù)模板min(),要求在main()函數(shù)中進行調用求兩個浮點型數(shù)據(jù)和兩個整型數(shù)據(jù)中較小的數(shù)。# includeHi

7、ostream”# includestring”usingnamespacestd;tempiate(typenameTTmindafTb)returnab?a:b;intmain()inta=1,b=9;floatc=1.23471,d=32.431564;couK,zTheminofaand”bismin(a,b)endlTheminof”canddismin(c,d)endl;return0;)實驗三類和對象(一)一、實驗目的1、掌握聲明類的方法,類和類的成員的概念以及定義對象的方法。2、掌握類的構造函數(shù)與析構函數(shù)的概念和使用方法。3、初步掌握用類和對象編制基于對象的程序。二、實驗要求1

8、 分析下面的程序,寫出其運行時的輸出結果。#includeusingnamespacestd;cIassDatepublie:Date(int,int,int);Date(int,int);Date(int);DateO;voiddisplay();private:intmonth;intday;intyear;);Date:Date(intm,intd,inty):month(m),day(d),year(y)Date:Date(intm,intd):month(m),day(d)year=2005;)Date:Date(intm):month(m)day=1;year=2005;)Date

9、:Date()month=1;day=1;year=2005;)voidDate:display0coutmonth,r/day/yearendI;intmain()Dated1(10,13,2005);Dated2(12,30);Dated3(10);Dated4;d1.display();d2.dispIay0;d3.dispIay0;d4.dispIay0;return0;)/10/13/200512/30/200510/1/20051/1/20052、建立一個名為Student的類,該類有以下幾個私有成員變量:學生、學號、性別、年齡。還有以下兩個成員變量:一個用于初始化學生、學號、性別

10、和年齡的構造函數(shù),一個用于輸出學生信息的函數(shù)。編寫一個主函數(shù),聲明一個學生對象,然后調用成員函數(shù)在屏幕輸出學生信息。#incIudeHiostream,1#includestring”usingnamespacestd;classstudent(publie:student();voiddisplay();private:stringsName,sNum;charchSex;intiAge;);student:student(stringna,stringnumtchars,inta):sName(na)fsNum(num),chSex(s)fiAge(a)0voidstudent:dispI

11、ay()cout11THE INFORMATI ON OF STUDENTn;cout name:hsName end I Unumber”sNumend Ii Age end I“sex:chSexendIage:intmain()students(HWangFang,zfz,081104526311,w1,20);s.display();return0;3、類Person的定義如下,請實現(xiàn)該類,并在主函數(shù)中創(chuàng)建對象。bj,然后使用構造函數(shù)為M賦予初始值(容自定)。cIassPersonprivate:charname10;intage;intsalary;chartel8;publie:P

12、erson(char*xname,intxage,intxsalary,char*xtel);voiddispO;);解:# include# includePerson:person(char*XnameFintXage,intXsalary,char*XteI)strepy(nameFxname);age二xage;salary二xsalary;strepy(terxtel);)voidPerson:disp()couUucou:nameendI;cou年齒令:ageendI;cou工資”:saIaryendI:teIendI;)voidmain0Personobj(n25,850,“45

13、678912);obj.disp()實驗四類和對象(二)、實驗目的1、進一步加深對類和對象的理解。2、掌握對類的對象數(shù)組、對象的指針及其使用方法。3、掌握友元的概念和使用。4、了解類模板的使用方法。二、實驗要求1、分析并比較下列程序運行的結果。程序一:# include# includeclasssmallone(publie:smalIone(intsma)couKsmconstr:sma”rT;;voidfn(intn)smalIonesm(n);cout(ninfunctionfnwithn=MnendI;)intmain()fn(10);fn(20);return0;)/smconst

14、r:10infunctionfnwithn=10smconstr:20infunctionfnwithn=20程序二:# include# incudeclasssmalIonepublie:smalIone(intsma)couz,smconstr:;);voidfn(intn)staticsmalIonesm(n);cout(ninfunctionfnwithn二”nendl;1intmain()fn(10);fn(20);return0;/smconstr:10infunctionfnwithn二10infunctionfnwithn二202、建立一個對象數(shù)組,放5個學生的數(shù)據(jù)(學號、成

15、績),設立一個函數(shù)max,max函數(shù)用指向對象中找出5個學生中成績最高者,并輸出其學號。#includeusingnamespacestd;classStudent(publie:Student(intn.floats):num(n),scoreintnum;floatscore;);voidmain()Studentstud5=Student(101,78.5),Student(102,85.5),Student(103,98.5),Student(104,100.0),Student(105,95.5);voidmax(Student*);Student*p=&stud0;max(p);r

16、eyurn0;)voidmax(Student*arr)(fIoatmax_scorez:arr0score;intk=0;for(inti=1;imax_score)(max_scorezarriscore;k=i;cou(arrknumn/max_scoreendI;)3、聲明一個類模板,利用它分別實現(xiàn)兩個整數(shù)、浮點數(shù)和字符的比較,求出大數(shù)和小數(shù)。#includeusingnamespacestd;tempiatecIassCompare(publie:Compare(numtypea,numtypeb)x=a;y=b;numtypemax()return(xy)?x:y;)numtype

17、min()return(xcmp1(3,7);couKcmp!.max0istheMaximumoftwointedernumbers“(endI;coucmp1minOVVistheMinimumoftwointedernumbers”(end|(endComparecmp2(45.78,93.6);coutXcmp2. max ()“ i s the Max imum coucmp2 .min() i s the Mini mum Compare cmp3 (* a r 1 A*); coucmp3. max 0 i s the Max imum cou tXcmp3 .m in()i s

18、 the Mini mumof two f I oat numbers ”end I ;of two float numbers. end KXendl ;of two characters. n ( end I;of two characters n ( end I ; return 0;實驗五運算符重載一、實驗目的1、進一步了解運算符重載的概念和使用方法。2、掌握幾種常用的運算符重載的方法。二、實驗要求1、定義一個復數(shù)類CompIex,重載運算法“+”,使之能用于復數(shù)的加法運算。將運算符重載為普通函數(shù)(非成員、非友元)、成員函數(shù)、友元函數(shù)。根據(jù)要求修改通過函數(shù)來實現(xiàn)復數(shù)相加的示例,分別編寫

19、程序,求兩個復數(shù)之和。/ / 定義 Comp I ex 類構造函數(shù)/實部/虛部#includeusingnamespacestd;classCompIexpublie:CompIex(floatx=0,floaty二0)real二x;imag二y;CompIexcompIex_add(CompIex&c2);voiddispIay()coutreaI+imagiendI;);private:fIoatreaI;floatimag;);CompIexCompIex:compIex_add(CompIex&c2)CompIexc;c.real二real+c2.real;c.imag二imag+c2

20、-imag;returnc;)intmain()/定義3個復數(shù)對CompIexcompIex1(3.34f,4.8f),compIex2(12.8f,5.2f);CompIexcompIex;/進彳丁兩個復數(shù)的加運算compIex二compIpIex_add(compIex2)compIex.display0;return0;/16.14+10i/普通函數(shù)(非成員、非友元)#includeusingnamespacestd;cIassCompIexpublie:CompIex0(real=0;imag=0;CompIex(doubler,doublei)real=r;imag=i;doubIe

21、get_reaI();doubleget_imagO;voiddispIay();private:doublereal;doubleimag;);doubleComplex:get_real()(returnreal;doubIeComplex::get_imag()(returnimag;voidCompIex:display()cout(reaI,i)”endI;CompIexoperator+(CompIex&,z.Complex&c2)(returnCompIex(d-get_real()+c2.get_real0tc1-get_imagO+c2.get_imag();)intmain

22、()(CompIexd(3,4),c2(5,-10),c3;c3=d+c2;coutc3二;c3.dispIay0;return0;/運算符重載為成員函數(shù)#includeusingnamespacestd;classCompIexpubIic:CompIex0real=0;imag=0;CompIex(doubler,doublei)real二r;imag二i;)CompIexoperator+(CompIex&c2);voiddispIay();private:doublereal;doubleimag;);CompIexCompIex:operator+(CompIex&c2)(CompI

23、exc;c.rea-eal+c2.real;c.imag二imag+c2.imag;returnc;)voidCompIex:dispIay()coutereaI,fHimagri)”endI;)intmain()CompIexd(3,4),c2(5,TO),c3;c3=c1+c2;couKc1=,z;d.dispIay();coutc2=;c2.dispIay();coutc1+c2=;c3.display();return0;/將運算符重載為友元函數(shù)#includeusingnamespacestd;cIassCompIex(publie:CompIex()rea1=0;imag-0;)C

24、ompIex(doubler)(real=r;imag_.0;CompIex(doubler,doublei)rea=r:imag=i;friendCompIexoperator+(CompIex&d,CompIex&c2);voiddispIay();private:doublereal;doubleimag;):CompIexoperator+(CompIex&d,Complex&c2)(returnCompIex(d-real+c2-real,dimag+c2.imag);voidComplex:display()cout(reaI,i)endI;intmain0CompIexd(3,4

25、),c2(5,TO),c3;c3=d+c2;coutc1二”;c1.dispIay();coutc2=:c2.dispIay();cout,d+c2=1;c3.dispIay();return0;實驗六繼承和派生一、實驗目的1、了解繼承在面向對象程序設計中的重要作用。2、進一步理解繼承與派生的概念。3、掌握通過繼承派生出一個新的類的方法。4了解虛基類的作用和用法。二、實驗要求1、運行程序,分析構造函數(shù)與析構函數(shù)的調用順序。程序一:#inoudecIassApubIic:A()coutA:Constructor”endI;AOcouKA:DestructorendI;cIassB:pubIicA

26、pubIic:B()couK,BConstructor,/endI;)()coutB:Destructor”endI;);voidmain()Bb;)/A:ConstruetorB:ConstructorB:DestruetorA:Destructor程序二:#includecIassA(inta;publie:aend IA(intaa二0)a=aa:A()coutCnDestructorA!cIassB:pubIicAintb; b 二 bb; pubIic:B(intaa=O,intbb=O):A(aa)B() coutDestructorB!voidmain()Bx(5),y(6,7)

27、;/DestructorB!7DestructorA!6DestructorBIODestructorA!5調用順序:構造x. A a二5構造x. B構造y. A 不匹配,不調用A ()構造 y. B a=6b=7 析構 y. B B!7析構y. A A!62、分別聲明Teacher(教師)類和Cadre (干部)類,采用多重繼承方式由這兩個類派生出新類Teacher_Cader類要求:小天由人甘來工公、/卜注口H、-Wr+rL、在Teacher類中還包含數(shù)據(jù)成員title (職稱)等數(shù)據(jù)成員。,在Cader類中還包含數(shù)據(jù)成員post (職務)。在Teacher_Cader類中還包含數(shù)據(jù)成員w

28、ages(工資)。年齡、性別、職稱、地址、cou t在對兩個基類中的、年齡、性別、地址、等數(shù)據(jù)成員用相同的名字,在引用這些數(shù)據(jù)成員時,指定作用域。在類體中聲明成員函數(shù),在類外定義數(shù)據(jù)成r=j貝中調用Teacher類中的display函數(shù),輸出、語句輸出職務和工資。在派生類TeachejCader的成員函數(shù)showTeacher#include#includeusingnamespacestd;classpublie:Teacher(stringnamfinta,chars,stringtit,stringad,stringt);voiddispIay();protected:stringnam

29、e;intage;charsex;stringtitle;stringaddr;stringTeacher:Teacher(stringnam,inta,chars,stringtit,stringad,stringt):name(nam),age(a),sex(s),ti11e(tit),addr(ad),teI(t)voidTeacher:dispIay()coutname:nameendI;cou,age,XageendI;cout“sex:”sexendI;coutCtitie:zXti11eendI;couaddress:addrendI;coutteI:teIendI;)cIass

30、Cadrepublie:Cadre(stringnam,intafcharSfstringp,stringad,stringt);voiddispIay0;protected:stringname;intage;charsex;stringpost;stringaddr;stringtel;);Cadre:Cadre(stringnam,inta,chars,stringp.stringadFstringt):name(nam),age(a),sex(s)Fpost(p),addr(ad),teI(t)voidCadre:display()couKHname:”nameendI;coutXag

31、e:ageendI;coutsex:sexendI;coutpost:posendI;coutaddress:addrendI;coutteI:teIendI;)classTeacher_Cadre:pubIicTeacher,pubIicCadrepublic:Teacher_Cadre(stringnam,inta,chars,stringtit,stringptstringad,stringt,floatw);voidshow();private:floatwage;);Teacher_Cadre:Teacher_Cadre(stringnam,inta,charsfstringt.st

32、ringptstringad,stringtelffloatw):Teacher(nam,a,Sft,ad,tel),Cadre(nam,ats,p,adrteI),wage(w)voidTeacher_Cadre::show()(Teacher:display();cout“post:”Cadre::pos(endI;coutnwages:”wageendl;)intmain0Teacher_Cadrete_ca(,zWang-Ii,z,50,f,prof.,president”,z135BeijingRoad,Shanghai7;H(021)61234567)1534.5);te_cash

33、ow();return0;)實驗七多態(tài)性和虛函數(shù)一、實驗目的1、了解多態(tài)性的概念。2、了解虛函數(shù)的作用及其使用方法。3、了解靜態(tài)關聯(lián)和動態(tài)關聯(lián)的概念和用法。4了解純虛函數(shù)和抽象類的概念和用法。二、實驗要求1 分析程序運行結果,掌握虛函數(shù)的使用。程序一:#includecIassONEpublie:virtuaIvoidf()coutI”endI;);classTWO:publicONEpublie:TWOOcouUn2zXendl;;classTHREE:pubIicTWOpublie:virtualvoidf()TWO:f();couKn3H;);voidmain()ONEaa,*p;TWO

34、bb;THREEcc;p=&cc;p-f0;)/2程序二:#includeclassBasepubIic:virtualvoidfn()coutInBaseClassd;);cIassSubCiass:pubIicBasepublie:virtualvoidfn()coutinSubClassn;);voidmainOBasebe.*p;SubClasssc;p二&bc;p-fn();p二≻p-fn();1/InBaseClassInSubClass2、實現(xiàn)一個類A,在A中有兩個私有的整型變量a和b,定義構造函數(shù)對a和b進行初始化,并實現(xiàn)成員函數(shù)geta()取得a的值和getb()取b的

35、值。實現(xiàn)類B從A繼承,覆蓋geta0使其返回a的2倍。主函數(shù)中聲明類B對象,調用類B中的geta()并將結果輸出。#incIudeHiostream!1usingnamespacestd;classAprivate:inta;intb;publie:A(intm,intn)a二m;b二n;intgeta()returna;)intgetb()returnb;)I;cIassB:pubIicA(publie:B(int口intn):A(mrn)intgeta()returnA:geta0*2;);voidmain()Bb(2,2);coutb.geta0endI;return0;Shape,由它

36、派生出3個派生類:Cirle(圓形)、)3、聲明抽象基類RectangIe(矩形)、TriangleintArea分別輸出以上三者/定義虛函數(shù)/結/結/寬與圖/ /輸出S的面積int main()建立Circle類又寸象circle/輸出circle的面積/ /建立Rectangle類對象(三角形),用一個函數(shù)的面積,3個圖形的數(shù)據(jù)在定義對象是給定。#includeusingnamespacestd;/定義抽象基類ShapecIassShapepublie:virtuaIdoublearea()const=0;/純虛函數(shù));/定義Circle類cIassCircle:publicShapepublie:Circle(doubler):radius(r)/結構函數(shù)virtuaIdoublearea()const(return3.14159*r

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論