




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
實驗1類和對象1.1實驗目的和規(guī)定(1)理解類和對象的概念,掌握聲明類和定義對象的方法。(2)掌握構(gòu)造函數(shù)和析構(gòu)函數(shù)的實現(xiàn)方法。(3)初步掌握使用類和對象編制C++程序。(4)掌握對象數(shù)組、對象指針和string類的使用方法。(5)掌握使用對象、對象指針和對象引用作為函數(shù)參數(shù)的方法。(6)掌握類對象作為成員的使用方法。(7)掌握靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)的使用方法。(8)理解友元的概念和掌握友元的使用方法。2實驗內(nèi)容和環(huán)節(jié).輸入下列程序//test4—l.cpp#include<iostrcam>usingnamespacestd;classCoordinate{public:Coordinate(intx1,inty1){x=x1;y=yi;}Coordinate(Coordinate&p);?Coordinate(){cout?MDestructorisca1leded'n”;}voidMyArray::Input{}{cout<V”請鍵盤輸入"Vviength<V"個整數(shù):";inti;int*p=alist;for(i=0;i<1ength;i++,p++)cin?*p;)intmain(){MyArraya(5);a.Input();a.Display(“顯示已輸入的");return0;}(2)聲明一個類SortArray繼承類MyArray,在該類中定義一個函數(shù),具有將輸入的整數(shù)從小到大進行排序的功能?!咎嵝选吭诘?1)步的基礎上可增長下面的參考框架:c1assSorlArray:publicMyArray{public:voidSort();SortArray(int1eng):MyArray(leng){cout<<MSortArray類對象已創(chuàng)建°”vVendl;)virtual?So"Array();}:SortArray:SortArray(){cout?J,SortArray類對象被撤消?!薄秂ndl;)voidSortArray::Sort()(//請自行編寫Sort函數(shù)的代碼,將輸入的整數(shù)從小到大排序。)//并將主函數(shù)修改為:intmain(){SortArraya(5);s.InputQ;s.Display("顯示排序以前的”);s.Sort();s.Display("顯示排序以后的”);re(urn0;)聲明一個類ReArray繼承類MyArray,在該類中定義一個函數(shù),具有將輸入的整數(shù)進行倒置的功能?!咎嵝选吭诘?1)步的基礎上可增長下面的參考框架:ClassReArray:pub1icMyArray{Public:Voidreverse();ReArray(intIeng);Virtual-RcArray();請讀者自行編寫構(gòu)造函數(shù)、析構(gòu)函數(shù)和倒置函數(shù)ReArray,以及修改主函數(shù)。(3)聲明?一個類AverArray繼承類MyArray,在該類中定義一個函數(shù),具有求輸入的整數(shù)平均值的功能。【提醒】在第(1)步的基礎上增長下面的參考框架:classAverArray:publicMyArray{Public:AverArray(int1eng);-AverArray();DoubleAver();};請讀者自行編寫構(gòu)造函數(shù)、析構(gòu)函數(shù)和求平均值函數(shù)Aver(求解整數(shù)的平均值),以及修改主函數(shù)。(2)聲明一個NewArray類,同時繼承了類SortArray,RcArray和AverArray,使得類NewAiray的對象同時具有排序、倒置和求平均值的功能。在繼承的過程中聲明MyArray為虛基類,體會虛基類在解決二義性問題中的作用。實驗3多態(tài)性3.1實驗目的和規(guī)定(1)了解多態(tài)性的概念。(2)掌握運算符重載的基本方法。(3)掌握虛函數(shù)的定義和使用方法。(4)掌握純虛函數(shù)和抽象類的概念和用法。2實驗內(nèi)容與環(huán)節(jié).分析并調(diào)試下列程序,寫出程序的輸出結(jié)果,并解釋輸出結(jié)果。//lest5_l.cpp#inc1ude<iostream>usingnamespacestd;classB{public:virtua1voidfl(doublex){cout?”B::f1(doublc)^?x<<cnd1;)voidf2(doub1ex){coudouble),,?2*x?end1;}voidf3(doublex){coutvV”B::f3(double)n?3*x?endl;))classD:publicB{public:virtualvoidf1(doublcx){cout<<"D::fl(double),,<<x?endl;1voidI2(doublex){cout?''D::f2(double)"v<2*x<<cnd1;)voidf3(doublex){cout<<,,D::f3(double),,?3*x?end1;};intmain(){Dd:B*pb;&d;D大pd=&d;pb->fl(l.23);pb->fl(1.23);pb->f2(1.23);pb->f3(1.23);pb->f3(3.14);rcturn0;)2.編寫一個程序,其中設計一個時間類Time,用來保存時、分、秒等私有數(shù)據(jù)成員,通過重載操作符“+”實現(xiàn)兩個時間的相加。規(guī)定將小時范圍限制在大于等于0,分鐘范圍限制在0?59,秒鐘范圍限制在0?59秒?!咎嵝选繒r間類Time{publie:Time(inth=0?intm=0,ints=0);Timeoperator+(Timc&);voiddisptime(string);private:inthourse;intminutes;intseconds;.給出下面的抽象基類conlainer;classcontainer(protected:doubleradius;pub1ic:containcr(doubleradiusl);virtualdoub1esurface_area()=0;virtualdoub1evo1ume()=0;};規(guī)定建立3個繼承containcr的派生類cube、sphcre與cylindcr,讓每一個派生類都包含虛函數(shù)surface_area()和volume。,分別用來計算正方體、球體和圓柱體的表面積及體積。規(guī)定寫出主程序,應用C++的多態(tài)性,分別計算邊長為6.0的正方體、半徑為5.0的球體,以及半徑為5.0和高為6.0的圓柱體的表面積和體積。.編寫一個程序用于進行集合的并、差和交運算。例如輸入整數(shù)集合{954367)和{2469},計算出它們進行集合的并、差和交運算后的結(jié)果?!咎嵝选靠捎靡韵卤磉_式實現(xiàn)整數(shù)集合的基本運算:sl+s2兩個整數(shù)集合的并運算sl-s2兩個整數(shù)集合的差運算sl*s2兩個整數(shù)集合的交運算參考以下Set類的框架,用于完畢集合基本運算所需的各項功能。c1assset{publie:set::set();voidset::input(intd);intset::lenglh();intset::getd(inti);voidset::disp();setset::operator+(setsi);setset::operator-(setsi);setset::operator*(sets1);sctset::opcrator=(sets1);protected:intlen;ints[MAX];實驗4模板與異常解決1實驗目的和規(guī)定(D對的理解模板的概念。(2)掌握函數(shù)模板和類模板的聲明和使用方法。(3)學習簡樸的異常解決方法。4.2實驗內(nèi)容和環(huán)節(jié)【.分析并調(diào)試下列程序,寫出運營結(jié)果并分析因素。//test6_1_1.cpp#include<iostream>usingnamespacestd;template<typenameT>Tmax(Tx,Ty){returnx>y?x:y;}inimax(inta,intb){returna>b?a:b;)doub1emax(doublea,doubleb){retuma>b?a:b;inimain(){coutVv”max('3','7')is“vVmax('3‘,7)?end1;return0;)//test6—I_2.cpp#inchide<iostrcam>usingnamespacestd;intmax(intajntb){returna>b?a:b;}doub1emax(doub1ea,doub1eb){returna>b?a:b;)intmain(){coutVv“max('3','7')istt?max(t3,,,7,)?end1;return0;).編寫一個求任意類型數(shù)組中最大元素和最小元素的程序,規(guī)定將求最大元素和最小元素的函數(shù)設計成函數(shù)模板。.編寫一個程序,使用類模板對數(shù)組元素進行排序、倒置、查找和求和?!咎嵝选吭O計一個類模板temp1ate<classType>c1assArray{
具有對數(shù)組元素進行排序、倒置、查找和求和功能,然后產(chǎn)生類型實參分別為int型和double型的兩個模板類,分別對整型數(shù)組與雙精度數(shù)組完畢所規(guī)定的操作。.編寫一個程序,求輸入數(shù)的平方根。設立異常解決,對輸入負數(shù)的情況給出提醒。實驗5C++的流類庫與輸入輸出.1實驗目的和規(guī)定(1)掌握C++格式化的輸入輸出方法。(2)掌握重載運算符和“:>>”的方法。(3)掌握磁盤文獻的輸入輸出方法。5.2實驗內(nèi)容和環(huán)節(jié)1.下面給出的cpp程序用于打印九九乘法表,但程序中存在錯誤。請上機調(diào)試,使得此程序運營后,可以輸出如下所示的九九乘法表。TOC\o"1-5"\h\z*123456789\o"CurrentDocument"124369481216510510152051015205101520256612182430367714212835424988816243240881624881624324048566491827364554637281//test7_l_1.cpp#inc1ude<iostream>intgetx(){returnx;}intgety(){returny;}private:intx,y;};Coordinate::Coordinate(Coordinate&p){x=p.x;y=P.y;cout?”copy-initializationConstructouisca11ed\n”;)intmain(){Coordinatep1(3,4);Coordinatep2(pl);Coordinatep3=p2;cou?<,,p3=r?p3.getx()?,,;,?p3.gely()<<")\n";return(0);}(1)寫出程序的運營結(jié)果。(2)將Coordinate類中帶有兩個參數(shù)的構(gòu)造函數(shù)進行修改,在函數(shù)體內(nèi)增添下述語句:cout<<MConstructorisca11ed.\n";寫出程序的運營結(jié)果,并解釋輸出結(jié)果。(3)按下列規(guī)定進行調(diào)試:在主函數(shù)體內(nèi),添加卜.列語句:Coordinatep4;#inc1ude<iomanip>usingnamespacestd;intmain(){inti,j;cout<<“*";for(i=l;i<=9;i++)cout?i<<v;cout?end1;for(i=l;i<=9;i++){cout?i;for(j=1;j<=i;j++)Cout<<i*j;)return0;)2.下面的程序用于記錄文獻xyz.txt中的字符個數(shù),請?zhí)羁胀戤叧绦颉?/test7_2_1.cpp#include<iostream>#include<fstream>usingnamespacestd;intmainO{charch;inti=0;ifstrearnfile;file.open("xyz.txt”,ios::in);if(①)(cout?wxyz.txtcannotopen>,<<end1;abort();)Whi1e(!fi1e.eof0)(②i++;)cout<V”文獻字符個數(shù):"V<i?cndl:③retum0;}.重載運算符和“>>”,使其可以輸入一件商品的信息和輸出這件商品的信息。商品的信息由編號、商品名和價格。假如商品類Merchandise的框架如下:classmerchandise(public:Merchandiss();?Merchandiss();friendistream&operator>>(istream&in,Merchandiss&s);friendostream&operator?(ostreani&out,Merchandiss&s);private:intno;char*name;doubleprice;);規(guī)定實現(xiàn)該類,并編寫以下的main函數(shù)對該類進行操作。intmain(){Merchandisemer;cin?mer;cout?mer;rcturn0;).編寫一個程序,將兩個文本文獻連接成一個文獻,然后將此文獻中所有小寫字母轉(zhuǎn)換成大寫字母,并打印出來。CoordinaIap5(2);調(diào)試程序時會出現(xiàn)什么錯誤?為什么?如何對已有的構(gòu)造函數(shù)進行適當修改?(4)通過以上第(2)步和第(3)步的修改后,結(jié)合運營結(jié)果分析:創(chuàng)建不同的對象時會調(diào)用不同的構(gòu)造函數(shù)。2.設計一個4*4魔方程序,讓魔方的各行值的和等于各列值的和,并且等于兩對角線值的和。例如一下魔方:31352599211713921921171319151123727291各行、各列以及對角線值的和都是64.【提醒】求4火4魔方的一般環(huán)節(jié)如下:(1)設立初始魔方的起始值和相鄰元素之間的差值。例如上述魔方的初始魔方的起始值(first)和相鄰元素之間的差值(step)分別為:first=1slep=2(2)設立初始魔方元素的值。例如上述魔方的初始魔方為:TOC\o"1-5"\h\z135791113151719212325272931(3)生成最終魔方。方法如下:①求最大元素值與最小元素值的和sum,該實例的sum是:1+31=32②用32減去初始魔方所有對角線上元素的值,然后將結(jié)果放在本來的位置,這樣就可求得最終魔方。本例最終魔方如下:TOC\o"1-5"\h\z31352592119151713I123727291本題的魔方類magic的參考框架如下:classmagic{public:voidgctdata();voidsetfirsimagic();voidgeneratemagic();voidprintmagic();private:intm[4][4];intsiep;intfirst;intsum;):.設計一個用來表達直角坐標系的Location類,在主程序中創(chuàng)建類Location的兩個對象A和B,規(guī)定A的坐標點在第3象限,B的坐標在第2象限,分別采用成員函數(shù)和友元函數(shù)計算給定兩個坐標點之間的距離,規(guī)定按如下格式輸出結(jié)果:A(xl,y!),B(x2,y2)Distanccl=dlDistance1=d2其中:xl、x2、yl、y2為指定的坐標值,d1和d2為兩個坐標點之間的距離?!咎嵝选款怢ocation的參考框架如下:classLocation{public:Location(double,doubIe);doubleGetx()douhlcGcty()doub1edistance(Location&);frienddoubledistance(Location&,Location&);private:doublex,y;);.聲明一個Student類,在該類中涉及一個數(shù)據(jù)成員score(分數(shù))、兩個靜態(tài)數(shù)據(jù)成員total_scorc(總分)和count(學生人數(shù));還涉及一個成員函數(shù)account()用于設立分數(shù)、累計學生成績之和、累計學生人數(shù),一個靜態(tài)成員函數(shù)sum。用于返回學生的成績之和,另一個靜態(tài)成員函數(shù)average。用于求全班成績的平均值。在main函數(shù)中,輸入某班同學的成績,并調(diào)用上述函數(shù)求出全班學生的成績之和和平均分。.使用C++的string類,將5個字符串按逆轉(zhuǎn)后的順序顯示出來。例如,逆轉(zhuǎn)前的5個字符串是:GermanyJapanAmericaBritainFrance按逆轉(zhuǎn)后的順序輸;11字符串是:FranceBritainAmericaJapanGermany*實驗2派生類與繼承2.1實驗目的和規(guī)定(1)掌握派生類的聲明方法和派生類構(gòu)造函數(shù)的定義方法。(2)掌握不同繼承方式下,基類成員在派生類中的訪問屬性。(3)掌握在繼承方式下,構(gòu)造函數(shù)與析構(gòu)函數(shù)的執(zhí)行順序與構(gòu)造規(guī)則。(4)學習虛基類在解決二義性問題中的作用。2實驗內(nèi)容與環(huán)節(jié)?.輸入下列程序。//test4_1.cpp#include<iostream>usingnamespacestd;classBase{Public:voidsetx(inti){x=i;}Intgetx(){returnx;}public:intx;};c1assDerived:pub1icBase{public:voidsety(inti){y=i;lintge(y()(returny;)voidshow(){cout?"Base::x="vVx<Vendl;public:inty;):intinain(){Derivedbb;bb,setx(16);bb.sety(25);bb.show();coutvv"Base::x=,,?bb.x<<endl;cout?''Derived::y=',?bb.y<<endl;cout<<,,Base::x="<<bb.getx()?endl;cout〈V”Derived::y=''<<bb.gety()<<endl;rcturn0:)(1)寫出程序的運營結(jié)果。(2)按以下規(guī)定,對程序進行修改后再調(diào)試,指出調(diào)試中犯錯的因素。①將基類Base中數(shù)據(jù)成員x的訪問權(quán)限改為private時,會出現(xiàn)哪些錯誤?為什么?②將基類Base中數(shù)據(jù)成員x的訪問權(quán)限改為protecled時,會出現(xiàn)哪些錯誤?為什么?③在源程序的基礎上,將派生類Derived的繼承方式改為private時,會出現(xiàn)哪些錯誤?為什么?④在源程序的基礎上,將派生類Derived的繼承方式改為protected時,會出現(xiàn)哪些錯誤?為什么?2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車維修知識的普及與宣導試題及答案
- 《2025年的青島房屋租賃合同》
- 河南省九師聯(lián)盟2025屆高三4月聯(lián)考歷史試題+答案
- 2025企業(yè)短期貸款借款合同模板
- 2025項目管理咨詢合同協(xié)議范本
- 2025企業(yè)租賃合同范本(版)
- 食品安全檢測工作的流程試題及答案
- 2025建筑工程樓房建設合同
- 政府購買社區(qū)居家養(yǎng)老服務招標文件
- 汽車編輯工作總結(jié)
- 消防更換設備方案范本
- 合伙開辦教育培訓機構(gòu)合同范本
- GB/T 41530-2022玩具及兒童用品術語和定義
- GB/T 14689-2008技術制圖圖紙幅面和格式
- 2.1食物中的營養(yǎng)物質(zhì) 導學案(1、2課時無解析)
- JC∕T 2634-2021 水泥行業(yè)綠色工廠評價要求
- 六年級下冊科學第二單元質(zhì)量檢測卷粵教版(含答案)
- 跨境電商現(xiàn)狀與發(fā)展趨勢跨境電商行業(yè)分析跨境電商的發(fā)展課件
- 唐太宗-李世民
- 項目部二級安全教育內(nèi)容
- 統(tǒng)編(部編)五年級語文下冊全冊教學反思
評論
0/150
提交評論