版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)教學(xué)大綱實(shí)驗(yàn)學(xué)時(shí):32實(shí)驗(yàn)個(gè)數(shù):13實(shí)驗(yàn)學(xué)分:1課程性質(zhì):專業(yè)必修課適用專業(yè):軟件工程教材及參考書:C+語言程序設(shè)計(jì)習(xí)題與實(shí)驗(yàn)指導(dǎo),鄭莉、傅仕星編著,北京:清華大學(xué)出版社,2004C+語言程序設(shè)計(jì)(第三版),鄭莉、董淵編著,北京:清華大學(xué)出版社,2005大綱執(zhí)筆人:李曉寧大綱審定人:劉芳、茍仕蓉、左友東一、實(shí)驗(yàn)課的性質(zhì)與任務(wù)本課程實(shí)驗(yàn)大綱是面向計(jì)算機(jī)專業(yè)學(xué)生開設(shè)的C+程序設(shè)計(jì)實(shí)驗(yàn)課計(jì)劃指導(dǎo)大綱,是依據(jù)面向?qū)ο蟪绦蛟O(shè)計(jì)課程教學(xué)計(jì)劃指導(dǎo)大綱編制。本課程主要講述了利用C+進(jìn)行程序設(shè)計(jì)的思想和方法,既有面向過程和面向?qū)ο蟮某绦蛟O(shè)計(jì)的理論知識,又包括極強(qiáng)的實(shí)踐應(yīng)用能力的培養(yǎng)。本實(shí)驗(yàn)大
2、綱力求結(jié)合該課程教學(xué)計(jì)劃大綱的相應(yīng)內(nèi)容,由淺入深的指導(dǎo)學(xué)生了解和掌握如何利用C+程序設(shè)計(jì)語言進(jìn)行程序設(shè)計(jì),提高學(xué)生的動手能力,做到理論和實(shí)踐相結(jié)合,培養(yǎng)學(xué)生理解,分析程序,編寫,調(diào)試程序的能力,使之能把程序設(shè)計(jì)應(yīng)用到今后的專業(yè)學(xué)習(xí)中。二、實(shí)驗(yàn)課程目的與要求實(shí)驗(yàn)?zāi)康模和ㄟ^本課程的學(xué)習(xí),使學(xué)生掌握面向過程的程序設(shè)計(jì)思想和編程思路,初步掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,學(xué)會調(diào)試程序,能獨(dú)立編寫實(shí)用的小型程序。實(shí)驗(yàn)要求:1)學(xué)生應(yīng)該自始至終貫徹課程中所介紹的程序設(shè)計(jì)風(fēng)格,養(yǎng)成良好的編程習(xí)慣;2)應(yīng)獨(dú)立完成所布置習(xí)題。為保證盡量在統(tǒng)一安排的上機(jī)時(shí)間內(nèi)編譯運(yùn)行通過程序,學(xué)生應(yīng)事先設(shè)計(jì)好程序。三、實(shí)驗(yàn)項(xiàng)目及內(nèi)容提
3、要程序號實(shí)驗(yàn)項(xiàng)目編號學(xué)時(shí)必做選做學(xué)分?jǐn)?shù)型類驗(yàn)實(shí)要提容內(nèi)基本操作驗(yàn)證綜合設(shè)計(jì)程序號實(shí)驗(yàn)項(xiàng)目編號學(xué)時(shí)必做選做學(xué)分?jǐn)?shù)型類驗(yàn)實(shí)要提容內(nèi)基本操作驗(yàn)證綜合設(shè)計(jì)一1訂入VI境2VV熟2二C+計(jì)4VV2VV四類6VV五2VVW員作成6六敘串4VV種用三使16VV1丿性態(tài)多2VV態(tài)笳態(tài)動、九4VVO十2VV十一流出2VV00十二2VV0D十三程用應(yīng)噸架md框W序2VV四、實(shí)驗(yàn)內(nèi)容安排:實(shí)驗(yàn)一VisualC+6.0開發(fā)環(huán)境應(yīng)用入門(驗(yàn)證性實(shí)驗(yàn)2學(xué)時(shí))1.目的要求:了解VisualC+6.0的特點(diǎn),熟悉了解VisualC+6.0的開發(fā)環(huán)境,學(xué)習(xí)使用VisualC+6.0編寫標(biāo)準(zhǔn)的C+控制臺應(yīng)用程序。2.實(shí)驗(yàn)內(nèi)容:使
4、用VisualC+來建立一個(gè)非圖形化的標(biāo)準(zhǔn)C+程序,編譯、運(yùn)行教材中的例3-3,用公式法求解PI的數(shù)值,并嘗試?yán)闷渌椒ㄇ蠼獠@得相同的結(jié)果。n=16arctan(l/5)-4arctan(l/239)arctan(x)=x-x/3+X5/5-X7/7+求n=?#includeusingnamespacestd;intmain()doublea,b;doublearctan(doublex);a=16.0*arctan(1/5.0);b=4.o*aarctan(1/239.0);cout”PI=”a-b1e-15)f=e/I;r=(i%4=1)?r+f:r-f;e=e*sqr;I+=2;re
5、turnr;#includevstdio.h#includevmath.hmain()ints=1;floatn=l,t=1,pi=0;while(fabs(t)1e-4)pi=pi+t;n=n+2;s=-s;t=s/n;pi=pi*4;printf(%d,pi);13.主要儀器設(shè)備及軟件:PC+Windows2000+VC6.0實(shí)驗(yàn)二C+簡單程序設(shè)計(jì)實(shí)驗(yàn)(驗(yàn)證性實(shí)驗(yàn)4學(xué)時(shí))目的要求:會編寫簡單的C+程序;復(fù)習(xí)基本數(shù)據(jù)類型變量和常量的應(yīng)用;復(fù)習(xí)運(yùn)算符與表達(dá)式的應(yīng)用;復(fù)習(xí)結(jié)構(gòu)化程序設(shè)計(jì)基本控制結(jié)構(gòu)的應(yīng)用;復(fù)習(xí)自定義數(shù)據(jù)類型的應(yīng)用;練習(xí)使用簡單的輸入輸出;觀察頭文件的作用;學(xué)會使用VC6.0開發(fā)環(huán)
6、境中的debug調(diào)試功能;熟練程序設(shè)計(jì)中的技巧;實(shí)驗(yàn)內(nèi)容:1)給定一個(gè)字符變量輸出其二進(jìn)制形式。例如chara=a;其二進(jìn)制為00100001。#includeusingnamespacestd;intmain()charch;intj,k8=0;coutvv請輸入一個(gè)字符:vvendl;cinch;for(j=0;jv=7;j+)if(ch)if(ch%2=0)kj=0;elsekj=1;ch=(ch-(ch%2)/2;for(j=7;j=0;j-)coutkj;coutendl;2)給定一個(gè)字符變量輸出其二進(jìn)制反轉(zhuǎn)形式。例如chara=a;其二進(jìn)制為00100001,反轉(zhuǎn)形式為100001
7、00。(提示:使用位運(yùn)算)#includeusingnamespacestd;intmain()charch;intj,k8=0;coutvv請輸入一個(gè)字符:vvendl;cinch;for(j=0;jv=7;j+)if(ch)if(ch%2=0)kj=0;elsekj=1;ch=(ch-(ch%2)/2;coutvvchvv二進(jìn)制是:;for(j=7;j=0;j-)coutvvkj;coutvvendl;for(j=0;jv=7;j+)kj=kjAl;coutvv二進(jìn)制反碼是:;for(j=7;j=0;j-)coutkj;coutendl;3)袋子里有紅,黃,藍(lán),綠,黑五種不同顏色的球若干個(gè)
8、,從中取出三個(gè)不同顏色的球,編程輸出每種取法及統(tǒng)計(jì)不同取法的總數(shù)(提示:使用枚舉)#includeenumcolorred=0,yellow,blue,green,black;boolisNum(inti)intj=0;for(intk=0;kk&l=l)j+;returnj=3?true:false;voidprintResult(inti)for(intk=0;kk&l=l)switch(k)casered:printf(red);break;caseyellow:printf(yellow);break;caseblue:printf(blue);break;casegreen:prin
9、tf(green);break;caseblack:printf(black);break;default:printf(error!);break;printf(n);voidmain()intj=0;printf(”可能的方案有:n);for(inti=0;i=32;i+)if(isNum(i)printResult(i);j+;4)(選做)給定一個(gè)整型變量輸出其二進(jìn)制形式。3.主要儀器設(shè)備及軟件:PC+Windows2000+VC6.0實(shí)驗(yàn)三函數(shù)的應(yīng)用實(shí)驗(yàn)(設(shè)計(jì)性實(shí)驗(yàn)2學(xué)時(shí))目的要求:掌握函數(shù)的定義和調(diào)用方法;練習(xí)重載函數(shù)的使用;練習(xí)使用系統(tǒng)函數(shù);學(xué)習(xí)使用VC+的debug調(diào)試功能,使用
10、stepinto追蹤到函數(shù)內(nèi)部。實(shí)驗(yàn)內(nèi)容:用遞歸的方法編寫函數(shù)求Fibonacci級數(shù),觀察遞歸調(diào)用的過程。#includeusingnamespacestd;intFibonacci(inti)if(i=1)return0;elseif(i=2)return1;elsereturnFibonacci(i-1)+Fibonacci(i-2);intmain()intn,j,i;cinn;for(i=1;i=n;i+)j=Fibonacci(i);coutjendl;編寫重載函數(shù)Maxi可分別求取兩個(gè)整數(shù),三個(gè)整數(shù),兩個(gè)雙精度數(shù),三個(gè)雙精度數(shù)的最大值。#includeusingnamespace
11、std;intMAXi(inta,intb)if(a=b)returna;elsereturnb;intMAXi(inta,intb,intc)if(a=b)if(a=c)returnc;elsereturna;elseif(b=b)returna;elsereturnb;doubleMAX1(doublea,doubleb,doublec)if(a=b)if(a=c)returnc;elsereturna;elseif(bab;coutvv最大的數(shù)abc;coutvv最大的數(shù)是vvMAX1(a,b,c)vvendlvvendl;coutvv請輸入兩個(gè)小數(shù)vvendl;coutvv最大的數(shù)是v
12、vMAXl(i,j)vvendlvvendl;coutvv請輸入三個(gè)小數(shù)vvendl;cinijk;coutvv最大的數(shù)是vvMAX1(i,j,k)vvendlvvendl;寫一個(gè)函數(shù),能夠接收身高、體重等數(shù)據(jù),能夠根據(jù)身高、體重檢測身體狀況,胖,瘦等。#includeviostreamusingnamespacestd;voidSHENGC(doublei,doublej)if(ivj*32)coutvv這個(gè)人偏胖vvendl;elseif(i=j*32)coutvv這個(gè)人適中vvendl;elsecoutvv這個(gè)人偏瘦vvendl;intmain()doublei,j;coutvv請輸入身
13、高(cm)和體重(kg)vvendl;cinij;SHENGC(i,j);3.主要儀器設(shè)備及軟件:PC+Windows2000+VC6.0實(shí)驗(yàn)四類與對象實(shí)驗(yàn)(設(shè)計(jì)性實(shí)驗(yàn)4學(xué)時(shí))1.目的要求:掌握類的定義和使用;掌握類對象的聲明;復(fù)習(xí)具有不同訪問屬性的成員的訪問方式;觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行過程;學(xué)習(xí)類組合使用方法;使用VC+的debug調(diào)試功能觀察程序流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。2.實(shí)驗(yàn)內(nèi)容:1)定義一個(gè)CPU類,包含等級(Rank)、頻率(frequency)、電壓(voltage)等屬性,有兩個(gè)公有成員函數(shù)run、stop。其中,rank為枚舉類型CPU_
14、Rank,定義為enumCPU_RankPl=l,P2,P3,P4,P5,P6,P7,frequency為單位是MHz的整型數(shù),voltage為浮點(diǎn)型的電壓值。觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。#includeusingnamespacestd;enumCPU_RankPl=l,P2,P3,P4,P5,P6,P7;classCPUpublic:CPU();CPU();voidrun(enumCPU_Rankr,intf,doublev);voidstop();private:enumCPU_RankRank;intfrequency;doublevoltage;CPU:CPU()coutvv調(diào)
15、用構(gòu)造函數(shù)vvendl;CPU:CPU()coutvv調(diào)研析構(gòu)函數(shù)vvendl;voidCPU:run(enumCPU_Rankr,intf,doublev)Rank=r;frequency=f;voltage=v;voidCPU:stop()coutRankendl;coutfrequencyendl;coutvoltageendl;intmain()enumCPU_Rankt=P1;CPUc;c.run(t,2,4.865);c.stop();2)定義一個(gè)簡單的Computer類,有數(shù)據(jù)成員芯片(cpu)、內(nèi)存(ram)、光驅(qū)(cdrom)等等,有兩個(gè)公有成員函數(shù)run、stop。cpu為
16、CPU類的一個(gè)對象,ram為RAM類的一個(gè)對象,cdrom為CDROM類的一個(gè)對象,定義并實(shí)現(xiàn)這個(gè)類,觀察這些類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。#includeusingnamespacestd;classCPUpublic:CPU()coutvvCPU構(gòu)造函數(shù)被調(diào)用vvendl;CPU()coutvvCPU析構(gòu)函數(shù)被調(diào)用vvendl;classRAMpublic:RAM()coutvvRAM構(gòu)造函數(shù)被調(diào)用”endlRAM()coutvvRAM析構(gòu)函數(shù)被調(diào)用vvendl;classCDROMpublic:CDROM()coutvvCDROM構(gòu)造函數(shù)被調(diào)用vvendl;CDROM()coutvv
17、CDROM析構(gòu)函數(shù)被調(diào)用vvendl;classComputerprivate:CPUcpu;RAMram;CDROMcdrom;public:Computer()coutvvComputer構(gòu)造函數(shù)被調(diào)用vvendl;Computer()coutvvComputer析構(gòu)函數(shù)被調(diào)用vvendl;voidrun();voidstop();intmain()ComputerC;3)定義一個(gè)Body類,擁有身高、體重等數(shù)據(jù),能夠根據(jù)身高、體重檢測身體狀況,要求設(shè)計(jì)相應(yīng)的函數(shù)成員和構(gòu)造函數(shù)。#includeusingnamespacestd;classbodypublic:body()coutvv構(gòu)造
18、函數(shù)被調(diào)用vvendl;body()coutvv析構(gòu)函數(shù)被調(diào)用vvendl;voidset(doubleh,doublew)HIGH=h;WEIGHT=w;voidshow()coutvvHIGH=vvHIGHvvendl;coutvvWEIGHT=vvWEIGHTvvendl;private:doubleHIGH;doubleWEIGHT;intmain()doublei,j;bodya;coutvv請輸入身高(cm)和體重(kg)vvendl;cinij;set(i,j);a.show();4)(選做)設(shè)計(jì)一個(gè)用于人事管理的People(人員)類??紤]到通用性,這里只抽象出所有類型人員都具
19、有的屬性:number(編號)、sex(性別)、birthday(出生日期)、id(身份證號)等等。其中“出生日期”定義一個(gè)“日期”類內(nèi)嵌子對象。用成員函數(shù)實(shí)現(xiàn)對人員信息錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)、類組合。3.主要儀器設(shè)備及軟件:PC+Windows2000+VC6.0實(shí)驗(yàn)五C+程序的結(jié)構(gòu)實(shí)驗(yàn)(設(shè)計(jì)性實(shí)驗(yàn)2學(xué)時(shí))目的要求:觀察程序運(yùn)行中變量的作用域、生存期和可見性;學(xué)習(xí)類的靜態(tài)成員的使用;學(xué)習(xí)多文件結(jié)構(gòu)在C+程序中的使用。實(shí)驗(yàn)內(nèi)容:1)運(yùn)行下面的程序,觀察變量X、Y的值。(刪除)lab5_l.cpp#includevoidfnl();intx=1,y=
20、2;intmain()cout”Begin.”endl;cout”x=”xendl;cout”y=”yendl;cout”Evaluatexandyinmain().endl;intx=10,y=20;cout”x=”xendl;cout”y=”yendl;coutStepintofnl().endl;fnl();cout”Backinmain”endl;cout”x=”xendl;cout”y=”yendl;return0;voidfnl()inty=200;cout”x=”xendl;cout”y=”yendl;2)實(shí)現(xiàn)客戶機(jī)(CLIENT)類。定義字符型靜態(tài)數(shù)據(jù)成員ServerName,
21、保存其服務(wù)器名稱;整型靜態(tài)數(shù)據(jù)成員ClientNum,記錄已定義的客戶數(shù)量;定義靜態(tài)函數(shù)ChangeServerName()改變服務(wù)器名稱。在頭文件client.h中定義類,在文件client.cpp中實(shí)現(xiàn),在文件test.cpp中測試這個(gè)類,觀察相應(yīng)的成員變量取值的變化情況。(需要給出main函數(shù)代碼和運(yùn)行結(jié)果)/cilent.h#includeusingnamespacestd;classClientprivate:staticcharSeverName10;staticintClientnum;public:Client()coutvvClient構(gòu)造函數(shù)被調(diào)用vvendl;Client
22、num+;Client()coutvvClient析構(gòu)函數(shù)被調(diào)用vvendl;Clientnum-;staticvoidChangeServername()inti;coutvv請輸入服務(wù)器的名字:vvendl;cinSeverName;voidshow();intClient:Clientnum=0;charClient:SeverName10=abcd;/Client.cppvoidClient:show()coutvv該用戶機(jī)的服務(wù)器端名字是:vvendl;coutvvSeverNamevvendl;coutvv用戶數(shù)量有:vvendl;coutvvClientnumvvendl;/Cl
23、ient.exevoidmain()Client:ChangeServername();Clienta;show();Clientb;show();3)完善Body類,將檢測胖瘦的標(biāo)準(zhǔn)定義為靜態(tài)數(shù)據(jù)成員并設(shè)計(jì)相應(yīng)的靜態(tài)成員函數(shù)。(最好給出main函數(shù)代碼和運(yùn)行結(jié)果)#includeusingnamespacestd;classbodypublic:body()coutvvbody構(gòu)造函數(shù)被調(diào)用vvendl;body()coutvvbody析構(gòu)函數(shù)被調(diào)用vvendl;voidset(doublei,doublej);voidshow();staticvoidset()coutvv請輸入判斷胖瘦的
24、標(biāo)準(zhǔn):vvendl;cinbody:i;coutvv檢測胖瘦的標(biāo)準(zhǔn)是:vvendl;coutvvbody:ivvendl;private:doubleheigh;doubleweight;staticdoublei;doublebody:i=3.2;voidbody:set(doublei,doublej)heigh=i;weight=j;voidbody:show()coutvv這個(gè)人偏vvendl;if(heigh/weightbody:i)coutvv瘦vvendl;elseif(heigh/weight=body:i)coutvv正常vvendl;elsecoutvv胖vvendl;i
25、ntmain()doublei,j;bodya;body:set();coutvv請輸入身高(cm)和體重(kg):vvendl;cinij;a.set(i,j);a.show();4)定義Boat;和Car兩個(gè)類,二者都有weight屬性,定義二者的一個(gè)友元函數(shù)totalWeight(),計(jì)算二者的和。#includeviostreamusingnamespacestd;classBoatpublic:Boat()coutvvBoat構(gòu)造函數(shù)被調(diào)用vvendl;Boat()coutvvBoat析構(gòu)函數(shù)被調(diào)用vvendl;voidset(doublei);frienddoubleTotalwe
26、ight(classBoat&j,classCar&k);private:doubleweight;classCarpublic:Car()coutvvCart構(gòu)造函數(shù)被調(diào)用vvendl;Car()coutvvCart析構(gòu)函數(shù)被調(diào)用vvendl;voidset(doublei);frienddoubleTotalweight(classBoat&j,classCar&k);private:doubleweight;voidBoat:set(doublei)this-weight=i;voidCar:set(doublei)this-weight=i;doubleTotalweight(clas
27、sBoat&j,classCar&k)doublem;m=j.weight+k.weight;returnm;intmain()doublej;Boatb;Carc;coutvv請輸入Boat類的重量vvendl;cinj;set(j);coutvv請輸入Cart類的重量vvendl;cinj;set(j);coutvv兩者重量總和是vvendl;coutvvTotalweight(b,c)vvendl;(選做)在函數(shù)fnl()中定義一個(gè)靜態(tài)變量n,fnl()中對n的值加1,在主函數(shù)中,調(diào)用fn1()十次,顯示n的值。(選做)在一個(gè)文件中定義一個(gè)全局變量n,主函數(shù)main(),在另外一個(gè)文件中
28、定義函數(shù)fn1(),在main()中對n賦值,再調(diào)用fn1(),在fn1()中也對賦值,顯示n最后的值。3.主要儀器設(shè)備及軟件:Windows2000+VC6.0實(shí)驗(yàn)六數(shù)組、指針與字符串實(shí)驗(yàn)(設(shè)計(jì)性實(shí)驗(yàn)4學(xué)時(shí))目的要求:學(xué)習(xí)使用數(shù)組;學(xué)習(xí)字符串?dāng)?shù)據(jù)的組織和處理;學(xué)習(xí)標(biāo)準(zhǔn)C+庫的使用;掌握指針的使用方法;練習(xí)通過debug觀察指針的內(nèi)容及其所指的對象的內(nèi)容;練習(xí)通過動態(tài)內(nèi)存分配實(shí)現(xiàn)動態(tài)數(shù)組,并體會指針在其中的作用;分別使用字符數(shù)組和標(biāo)準(zhǔn)C+庫練習(xí)處理字符串的方法。實(shí)驗(yàn)內(nèi)容:編寫一個(gè)用于3X3數(shù)組保存矩陣的類,具有矩陣顯示和矩陣轉(zhuǎn)置函數(shù)。#includeviostreamusingnamespac
29、estd;classpointpublic:point()coutvvpoint構(gòu)造函數(shù)被調(diào)用vvendl;point()coutvvtkvv;coutvvtkvv;coutvvpoint析構(gòu)函數(shù)被調(diào)用vvendl;voidset();voidzhanz();voidshow();private:intp33;voidpoint:set()inti,j;for(i=0;iv=2;i+)for(j=0;jv=2;j+)cinpij;voidpoint:show()inti,j;for(i=0;iv=2;i+)for(j=0;jv=2;j+)coutvvpijvv;coutvvendl;voidp
30、oint:zhanz()inti,j,k=0;intt9;for(i=0;iv=2;i+)for(j=0;jv=2;j+)tk+=pji;for(k=0;kv=8;k+)coutvvendl;if(!(k+1)%3)coutusingnamespacestd;classzhuzpublic:zhuz()coutvvzhuz構(gòu)造函數(shù)被調(diào)用vvendl;p=newint33;zhuz()coutvvzhuz析構(gòu)函數(shù)被調(diào)用vvendl;deletep;voidset()inti,j;coutvvendl;coutvv請輸入3*3矩陣數(shù)據(jù)vvendl;for(i=0;ipij;voidshow()in
31、ti,j;for(i=0;iv=2;i+)for(j=0;jv=2;j+)coutvvpijvv;coutvvendl;voidzhuanz()inti,j,k;for(i=0;iv=2;i+)for(j=0;jv=i;j+)k=pji;pji=pij;pij=k;for(i=0;iv=2;i+)for(j=0;jv=2;j+)coutvvpijvv;private:int(*p)3;intmain()zhuza;a.set();coutvv矩陣是:vvendl;a.show();coutvv轉(zhuǎn)置后矩陣是:vvendl;a.zhuanz();拷貝構(gòu)造2)題中的矩陣類對象,運(yùn)行程序看看是否存在問
32、題,應(yīng)該如何改進(jìn)。(提示:深淺拷貝)#includeviostreamusingnamespacestd;classzhuzpublic:zhuz()coutvvzhuz構(gòu)造函數(shù)被調(diào)用vvendl;zhuz()coutvvzhuz析構(gòu)函數(shù)被調(diào)用vvendl;deletep;zhuz(zhuz&q)淺拷貝,p=q.p;/*zhuz(zhuz&q)深拷貝inti,j;p=newint33;for(i=0;i=2;i+)for(j=0;jpij;voidshow()inti,j;for(i=0;iv=2;i+)for(j=0;jv=2;j+)coutvvpijvv;coutvvendl;voidzh
33、uanz()inti,j,t;for(i=0;iv=2;i+)for(j=0;jv=i;j+)t=pji;pji=pij;pij=t;for(i=0;i=2;i+)for(j=0;j=2;j+)coutpij;coutusingnamespacestd;voidString(char*a,char*b)char*p;p=a;while(*p!=NULL)p+;while(*b!=NULL)p+;b+;*p=*b;intmain()charshuz120;charshuz220;coutvv請輸入第一個(gè)字符串vvendl;cinshuz1;coutvv請輸入第二個(gè)字符串vvendl;cinshu
34、z2;String(shuz1,shuz2);coutvv組合后的字符串是:vvendl;coutvvshuz1vvendl;使用string類定義字符串對象,重新實(shí)現(xiàn)上一小題。#includevstring#includeviostreamusingnamespacestd;intmain()stringshuz1=abc,shuz2=bcd;coutvv請輸入第一個(gè)字符串vvendl;cinshuz1;coutvv請輸入第二個(gè)字符串vvendl;cinshuz2;shuz1+=shuz2;coutvv組合后字符串是:vvendl;coutvvshuz1;coutvvendl;定義Body類
35、的數(shù)組,評測班級每個(gè)同學(xué)的身體狀況。#includeviostreamusingnamespacestd;classBodypublic:Body()coutvvBody構(gòu)造函數(shù)被調(diào)用vvendl;Body()coutvvBody析構(gòu)函數(shù)被調(diào)用vvendl;voidGetweight(doubleW)Weight=W;voidGethigh(doubleH)High=H;voidshowWei()coutvv該同學(xué)體重是:vvWeightvvendl;voidshowH()coutvv該同學(xué)身高是:vvHighvvendl;doubleshow()returnHigh/Weight;priva
36、te:doubleWeight;doubleHigh;voidmain()inti,k;doublea,b,n,j=3.2;coutvv請輸入要測試的同學(xué)的個(gè)數(shù);cink;Body*people=newBodyk;for(i=0;ia;peoplei.Gethigh(a);coutvv111*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*11TxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTx體重;cinb;peoplei.Getweight(b);coutvvendlvvendl;for(i=0;iv=k-l;i+)n=peoplei.show();if(nvj
37、)coutvvgUvvi+1vv該同學(xué)偏:胖vvendl;elseif(n=j)coutvv卩Uvvi+1vv該同學(xué)偏正常vvendl;elsecoutvv卩Uvvi+1vv該同學(xué)偏:瘦vvendl;peoplei.showH();peoplei.showWei();coutvvendl;deletepeople;(選做)定義電子秤類和學(xué)生類數(shù)組,用電子秤類評測班級每個(gè)同學(xué)的身體狀況。(選做)定義一個(gè)Employee類,其中包括姓名、街道地址、城市和郵編等屬性,以及change_name()和display()等函數(shù)。Display()顯示姓名、街道地址、城市和郵編等屬性,change_nam
38、e()改變對象的姓名屬性。實(shí)現(xiàn)并測試這個(gè)類。(選做)定義包含5個(gè)元素的對象數(shù)組,每個(gè)元素都是Employee類型的對象。(選做)修改實(shí)驗(yàn)4中的選做實(shí)驗(yàn)中的people(人員)類。具有的屬性如下:姓名charname11、編號charnumber7、性別charsex3、生日birthday、身份證號charid16。其中“出生日期”定義為一個(gè)“日期”類內(nèi)嵌對象。用成員函數(shù)實(shí)現(xiàn)對人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)嵌構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)、類組合。在測試程序中定義people類的對象數(shù)組,錄入數(shù)據(jù)并顯示,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。3.主要儀器設(shè)備及軟件:W
39、indows2000+VC6.0實(shí)驗(yàn)七繼承與派生實(shí)驗(yàn)(驗(yàn)證性實(shí)驗(yàn)4學(xué)時(shí))目的要求:學(xué)習(xí)定義和使用類的繼承關(guān)系,定義派生類;熟悉不同繼承方式下對基類成員的訪問控制;學(xué)習(xí)利用虛基類解決二義性問題。實(shí)驗(yàn)內(nèi)容:1)定義一個(gè)基類Animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)SetAge(intn)中直接給age賦值,看看會有什么問題,把a(bǔ)ge改為公有或保護(hù)成員變量,還會有問題嗎?編程試試看,說明了什么原則?#includeusingnamespacestd;classAnimalpublic:Animal()coutvvAnimal構(gòu)造函數(shù)被調(diào)用vvendl;Animal()c
40、outvvAnimal析構(gòu)函數(shù)被調(diào)用vvendl;/private:/protected:intage;classdog:publicAnimalpublic:dog()coutvvdog構(gòu)造函數(shù)被調(diào)用vvendl;dog()coutvvdog析構(gòu)函數(shù)被調(diào)用vvendl;voidSetAge(intn);voidshow()coutvv年齡是:;coutvvagevvendl;voiddog:SetAge(intn)n=3;age=n;intmain()intt;dogb;b.SetAge(t);b.show();2)定義一個(gè)基類BasClass,有整型成員變量Number,構(gòu)造其派生類Der
41、ivedClass,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況和執(zhí)行順序。#includeviostreamusingnamespacestd;classBasClasspublic:BasClass()coutvvBasClass構(gòu)造函數(shù)被調(diào)用vvendl;BasClass()coutvvBasClass析構(gòu)函數(shù)被調(diào)用vvendl;classDerivedClass:publicBasClasspublic:DerivedClass()coutvvDerivedClass構(gòu)造函數(shù)被調(diào)用vvendl;DerivedClass()coutvvDerivedClass析構(gòu)函數(shù)被調(diào)用vvendl;privat
42、e:;intmain()DerivedClassa;3)定義一個(gè)車(vehicle)基類,具有MaxSpeed、Weight等成員變量,Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類,汽車(motorcar)類。自行車(bicycle)類有高度(Height)等屬性,汽車(motorcycle)類有座位數(shù)(SeatNum)等屬性。從bicycle和Motorcar派生出摩托車(motorcycle)類,在繼承過程中,注意把vehicle設(shè)置為虛基類。如果不把vehicle設(shè)置為虛基類,會有什么問?編程試試看。#includeviostreamusingnamespacestd
43、;classvehiclepublic:vehicle()coutvvvehicle構(gòu)造函數(shù)被調(diào)用vvendl;coutvvvehicle析構(gòu)函數(shù)被調(diào)用vvendl;coutvvvehicle析構(gòu)函數(shù)被調(diào)用vvendl;vehicle()voidRun()inti,j;coutvv請輸入最大重量和最大速度:vvendl;cinij;MaxSpeed=i;Weight=j;voidStop()coutvvMaxSpeed=vvMaxSpeedvvendl;coutvvWeight=vvWeightvvendl;private:doubleMaxSpeed,Weight;classbicycle:
44、virtualpublicvehiclepublic:bicycle()coutvvbicycle構(gòu)造函數(shù)被調(diào)用vvendl;bicycle()coutvvbicycle析構(gòu)函數(shù)被調(diào)用vvendl;private:doubleHeight;classmotorcar:virtualpublicvehiclepublic:motorcar()coutvvmotorcar構(gòu)造函數(shù)被調(diào)用vvendl;motorcar()coutvvmotorcar析構(gòu)函數(shù)被調(diào)用vvendl;private:intSeatNum;classmotorcycle:publicmotorcar,publicbicycle
45、public:motorcycle()coutvvmotorcycle構(gòu)造函數(shù)被調(diào)用vvendl;motorcycle()coutvvmotorcycle析構(gòu)函數(shù)被調(diào)用vvendl;intmain()motorcyclea;a.bicycle:Run();a.bicycle:Stop();a.motorcar:Run();a.motorcar:Stop();4)(選做)從實(shí)驗(yàn)6中的people(人員)類派生出student(學(xué)生)類,添加屬性:職務(wù)charprincipalshipll、部門chardepartmental。從student類中派生出graduate(研究生)類,添加屬性:專業(yè)
46、charsubject21、導(dǎo)師teacheradviser;從graduate類派生出其TA(助教)類,注意虛基類的使用。重載相應(yīng)的成員函數(shù),測試這些類并觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。f人員姓名編號性別出生日期身份證號函數(shù)日期年月日、函數(shù)圖7-1實(shí)驗(yàn)任務(wù)4的類圖3.主要儀器設(shè)備及軟件:PC+Windows2000+VC6.0實(shí)驗(yàn)八多態(tài)性實(shí)驗(yàn)(設(shè)計(jì)性實(shí)驗(yàn)2學(xué)時(shí))目的要求:掌握運(yùn)算符重載的方法;學(xué)習(xí)使用虛函數(shù)實(shí)現(xiàn)動態(tài)多態(tài)性。實(shí)驗(yàn)內(nèi)容:1)定義Point類,有坐標(biāo)_x,_y兩個(gè)成員變量;對Point類重載“+”(自增)、“-”(自減)運(yùn)算符,實(shí)現(xiàn)對坐標(biāo)的改變。(提示:注意前+和后+)#incl
47、udeusingnamespacestd;classpointpublic:point()coutvvpoint構(gòu)造函數(shù)被調(diào)用vvendl;point()coutvvpoint析構(gòu)函數(shù)被調(diào)用vvendl;voidset(inti=1,intj=3)x=i;y=j;voidshow()coutvv坐標(biāo)是:vvendl;coutvvxvvvvyvvendl;pointoperator+();pointoperator-();pointoperator+(int);pointoperator-(int);private:intx,y;pointpoint:operator+()x+;y+;retur
48、n*this;pointpoint:operator-()x-;y-;return*this;pointpoint:operator+(int)+x;+y;return*this;pointpoint:operator-(int)-x;-y;return*this;intmain()inti,j;pointa;coutvv請輸入坐標(biāo):vvendl;cinij;a.set(i,j);a.show();+a;a.show();-a;a.show();a+;a.show();a-;a.show();2)定義一個(gè)車(vehicle)基類,有Run、Stop等虛成員函數(shù),由此派生出自行車(bicycle
49、)類、汽車(motorcar)類,從bicycle到motorcar派生出摩托車(motorcycle)類,它們都有Run、Stop等成員函數(shù),利用基類指針或引用虛函數(shù),觀察虛函數(shù)的作用,說說多態(tài)的含義,如果不采用虛函數(shù)會是什么樣的結(jié)果?#includeviostreamusingnamespacestd;classvehiclepublic:vehicle()coutvehicle構(gòu)造函數(shù)被調(diào)用endl;vehicle()coutRun();p-Stop();intmain()vehiclea0,*p;bicyclea1;motorcara2;motorcyclea3;coutendl;p=
50、&a0;fun(p);p=&a1;fun(p);p=&a2;fun(p);/p=&a3;/fun(p);coutendl;3)(選做)對實(shí)驗(yàn)六中的people類重載“=”運(yùn)算符和“=”運(yùn)算符,“=”運(yùn)算符判斷兩個(gè)people類對象的id屬性是否相等;“=”運(yùn)算符實(shí)現(xiàn)people類對象的賦值操作。3.主要儀器設(shè)備及軟件:PC+Windows2000+VC6.0實(shí)驗(yàn)九群體類和群體數(shù)據(jù)組織實(shí)驗(yàn)(選做)(設(shè)計(jì)性實(shí)驗(yàn)4學(xué)時(shí))目的要求:1)了解鏈表類的定義與實(shí)現(xiàn),學(xué)習(xí)其使用方法;了解棧類定義與實(shí)現(xiàn),學(xué)習(xí)其使用方法;2)了解隊(duì)列類的定義與實(shí)現(xiàn),學(xué)習(xí)其使用方法;了解C+標(biāo)準(zhǔn)模板庫STL的使用方法。實(shí)驗(yàn)內(nèi)容:1
51、)使用重載函數(shù)模板重新實(shí)現(xiàn)實(shí)驗(yàn)三中2小題中的函數(shù)Maxi。(必做)2)編寫程序link.h,實(shí)現(xiàn)教材中例9-6的鏈表類。在測試lab9_1.cpp中定義兩個(gè)整型鏈表A和B,分別插入5個(gè)元素,然后把B中的元素加入A的尾部。3)編寫程序queue.h,用鏈表實(shí)現(xiàn)隊(duì)列(或棧)類。在測試程序lab9_1.cpp中定義一個(gè)整型隊(duì)列(或棧)對象,插入5個(gè)整數(shù),壓入隊(duì)列(或棧),再依次取出并顯示出來。4)(選做)將直接插入排序、直接選擇程序、冒泡排序、順序查找函數(shù)封裝到教材中第9章的數(shù)組類模板中,作為成員函數(shù)。實(shí)現(xiàn)并測試這個(gè)類。5)(選做)定義一個(gè)對people類對象數(shù)組按編號排序的函數(shù),一個(gè)按編號查找pe
52、ople對象的函數(shù)。在測試程序中使用前面實(shí)驗(yàn)得到的結(jié)果定義教師數(shù)組和學(xué)生數(shù)組,分別對教師數(shù)組和學(xué)生數(shù)組進(jìn)行排序和查找。6)(選做)定義course(課程)類,有屬性:課程名charname21、成績shortscore;在實(shí)驗(yàn)7中的student類中增加屬性:所修課程courses,為課程類對象。在測試程序測試這個(gè)類。學(xué)生類之間的關(guān)系如圖9-1所示。圖9-1實(shí)驗(yàn)任務(wù)4的類圖3.主要儀器設(shè)備及軟件:PC+Windows2000+VC6.0實(shí)驗(yàn)十泛型程序設(shè)計(jì)與C+標(biāo)準(zhǔn)模板庫實(shí)驗(yàn)(選做)(設(shè)計(jì)性實(shí)驗(yàn)2學(xué)時(shí))目的要求:掌握對數(shù)組元素排序的方法;掌握對數(shù)組元素查找的方法;應(yīng)用標(biāo)準(zhǔn)C+庫(STL)實(shí)現(xiàn)查找
53、與排序。實(shí)驗(yàn)內(nèi)容:在C+標(biāo)準(zhǔn)模板庫中,隊(duì)列類(queue)的成員函數(shù)queue:push()在隊(duì)列的一端添加元素,queue:pop()從非空的隊(duì)列中刪除最后一個(gè)元素,queue:empty()判斷隊(duì)列是否為空,queue:back()返回非空隊(duì)列的最后一個(gè)元素,queue:front()返回非空隊(duì)列的第一個(gè)元素,queue:size()返回隊(duì)列中元素的個(gè)數(shù),請構(gòu)造一個(gè)int類型的隊(duì)列,對這個(gè)隊(duì)列應(yīng)用上述幾個(gè)函數(shù),體會隊(duì)列這種數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)和其成員函數(shù)的用法。對于一個(gè)包含特定個(gè)數(shù)整型數(shù)據(jù)的數(shù)組A,對于從鍵盤輸入的任意數(shù),使用C+標(biāo)準(zhǔn)模板庫中的find()查找在A中的位置,使用sort()來對數(shù)
54、組進(jìn)行升序或降序排列,排序前和排序后的結(jié)果使用copy()輸出。主要儀器設(shè)備及軟件:PC+Windows2000+VC6.0實(shí)驗(yàn)十一流內(nèi)庫與輸入、輸出實(shí)驗(yàn)(設(shè)計(jì)性實(shí)驗(yàn)2學(xué)時(shí))目的要求:熟悉流類庫中常用的類及其成員函數(shù)的用法;學(xué)習(xí)標(biāo)準(zhǔn)輸入輸出及格式控制;學(xué)習(xí)對文件的應(yīng)用方法(二進(jìn)制文件、文本文件)。實(shí)驗(yàn)內(nèi)容:1)觀察以下程序的輸出,注意對輸出格式的控制方法。lab11_l.cpp#includeUsingnamespacestd;#defneD(a)T#aendl;aOfstreamT(“output.out”);Voidmain()D(inti=53;)D(floatf=4700113.141
55、593;)Char*s=Isthereanymore?”;D(T.setf(ios:unitbuf);)D(T.setf(ios:showbase);)D(T.setf(ios:uppercase);)D(T.setf(ios:showpos);)D(Tiendl;)D(T.setf(ios:hex,ios:basefield);)D(Tiendl;)D(T.unsetf(ios:uppercase);)D(T.setf(ios:oct,ios:basefield);)D(Tiendl;)D(T.setf(ios:showbase);)D(T.setf(ios:dec,ios:basefiel
56、d);)D(T.setf(ios:left,ios:adjustfield);)D(T.Jill(i0);)D(Tfllchar:Tfill()endl;)D(T.windrh(8);)Tiendl;D(T.setf(ios:right,ios:adjustfield);)D(T.windth(8);)Tiendl;D(T.setf(ios:internal,ios:adjustfield);)D(T.windth(8);)Tiendl;D(Tiendl;)/Withoutwidth(10)D(T.unsetf(ios:showpoint);)D(T.setf(ios:showpoint);)D(T.prec=,T.precision()endl;)D(T.setf(ios:scientific,ios:floatfield);)D(Tendlfendl;)D(T.setf(ios:fixed,ios:floatfield);)D(Tfendl;)D(T.setf(0,ios:floatfield);)/AutomaticD(Tfendl;)D(T.pre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年樂山大車貨運(yùn)資格證考試題
- 2025年貴陽貨運(yùn)從業(yè)資格證考試題庫及答案解析
- 2025年烏魯木齊貨運(yùn)駕駛員從業(yè)資格證考試題庫答案
- 2024年清工建設(shè)承包協(xié)議典范版版B版
- 2024年度熱水鍋爐安裝與維護(hù)服務(wù)合同2篇
- 《現(xiàn)場審核的實(shí)施》課件
- 2024乳膠床墊零售商供貨與促銷活動合作協(xié)議3篇
- 2025解除裝修合同書范文
- 2025土石方工程合同范本2
- 2025安裝工程勞務(wù)作業(yè)分包合同-合同協(xié)議-表格模板-應(yīng)用文書
- 春節(jié)施工現(xiàn)場值班規(guī)章制度范文(2篇)
- 2022年公務(wù)員多省聯(lián)考《申論》真題(遼寧A卷)及答案解析
- 專題 與角度有關(guān)的計(jì)算問題(35題提分練)2024-2025學(xué)年七年級數(shù)學(xué)上冊同步課堂(北師大版2024)
- 小丑電影課件教學(xué)課件
- 浙江省紹興市2025屆高三上學(xué)期一模地理試題 含解析
- 廣發(fā)銀行廣告合同
- 安全與急救學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 電動車棚消防應(yīng)急預(yù)案
- 金屬冶煉知識培訓(xùn)
- 2024-2025學(xué)年度廣東省春季高考英語模擬試卷(解析版) - 副本
- 商會內(nèi)部管理制度
評論
0/150
提交評論