面向?qū)ο蟪绦蛟O(shè)計_第1頁
面向?qū)ο蟪绦蛟O(shè)計_第2頁
面向?qū)ο蟪绦蛟O(shè)計_第3頁
面向?qū)ο蟪绦蛟O(shè)計_第4頁
面向?qū)ο蟪绦蛟O(shè)計_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++實驗報告實驗一VisualC++6.0開發(fā)環(huán)境應用入門(驗證性實驗 2學時)1.目的要求:了解VisualC++6.0的特點,熟悉了解VisualC++6.0的開發(fā)環(huán)境,學習使用VisualC++6.0編寫標準的C++控制臺應用程序。2.實驗內(nèi)容:使用VisualC++來建立一個非圖形化的標準C++程序,編譯、運行教材中的例3-3,用公式法求解PI的數(shù)值,并嘗試利用其他方法求解并獲得相同的結(jié)果。n=16arctan(l/5)-4arctan(l/239)arctan(x)=x-x3/3+x5/5-x7/7+…求n=?(1)源代碼和說明#include<iostream>usingnamespacestd;doublearctan(doublex){doublesqr=x*x;doublee=x;doubler=0;inti;while(e/i>1e-15){doublef=e/i;r=(i%4==1)?r+f:r-f;e=e*sqr;i+=2;}returnr;}intmain(){doublea=16.0*arctan(1/5.0);doubleb=4.0*arctan(1/239.0);cout<<"PI="<<a-b<<endl;return0;}2)運行結(jié)果:1實驗二 C++簡單程序設(shè)計實驗(驗證性實驗4學時)1.目的要求:會編寫簡單的C++程序;復習基木數(shù)據(jù)類型變量和常量的應用;復習運算符與表達式的應用;復習結(jié)構(gòu)化程序設(shè)計基本控制結(jié)構(gòu)的應用;復習自定義數(shù)據(jù)類型的應用;練習使用簡單的輸入輸出;觀察頭文件的作用;學會使用VC6.0開發(fā)環(huán)境中的debug調(diào)試功能;熟練程序設(shè)計中的技巧;2.實驗內(nèi)容:1)給定一個字符變量輸出其二進制形式。例如chara='a';其二進制為00100001。源代碼和說明#include<iostream>usingnamespacestd;intmain(){charch;intj,k[8]={0};coutvv"請輸入一個字符:"vvendl;cin>>ch;for(j=0;jv=7;j++){if(ch){if(ch%2==0)k[j]=0;elsek[j]=1;ch=(ch-(ch%2))/2;}}for(j=7;j>=0;j--){coutvvk[j];}coutvvendl;}運行結(jié)果:2)給定一個字符變量輸出其二進制反轉(zhuǎn)形式。例如chara='a';其二進制為00100001,反轉(zhuǎn)形式為10000100。(提示:使用位運算)1)源代碼和說明:#include<iostream>usingnamespacestd;intmain(){charch;intj,k[8]={0};coutvv"請輸入一個字符:"vvendl;cin>>ch;for(j=0;jv=7;j++){if(ch){if(ch%2==0)k[j]=0;elsek[j]=1;ch=(ch-(ch%2))/2;}coutvvchvv"二進制是:"for(j=7;j>=0;j--){cout<<k[j];}cout<<endl;for(j=0;j<=7;j++){町]=回1;}coutvv"二進制反碼是:"for(j=7;j>=0;j--){cout<<k[j];}cout<<endl;}實驗結(jié)果:3)袋子里有紅,黃,藍,綠,黑五種不同顏色的球若干個,從中取出三個不同顏色的球,編程輸出每種取法及統(tǒng)計不同取法的總數(shù)(提示:使用枚舉)1)源代碼和說明;#include<iostream>usingnamespacestd;enumcolor{red=0,yellow,blue,green,black};boolisNum(inti){intj=0;for(intk=0;k<6;k++)if(i>>k&1==1)j++;returnj==3?true:false;}voidprintResult(inti){for(intk=0;k<5;k++){if(i>>k&1==1)switch(k){casered:cout<<"red";break;caseyellow:cout<<"yellow";break;caseblue:cout<<"blue";break;casegreen:cout<<"green";break;caseblack:cout<<"black";break;default:cout<<"error!!";break;}}cout<<""<<endl;}voidmain(){intj=0;coutvv"可能的方案有:";for(inti=0;i<=32;i++){if(isNum(i)){printResult(i);j++;}}coutvv"共有"vvjvv"種方案"vvendl;}2)實驗結(jié)果:實驗三 函數(shù)的應用實驗(設(shè)計性實驗 2學時)目的要求:掌握函數(shù)的定義和調(diào)用方法;練習重載函數(shù)的使用;練習使用系統(tǒng)函數(shù);學習使用VC++的debug調(diào)試功能,使用stepinto追蹤到函數(shù)內(nèi)部。2.實驗內(nèi)容:1)用遞歸的方法編寫函數(shù)求Fibonacci級數(shù),觀察遞歸調(diào)用的過程。源代碼和說明:#include<iostream>usingnamespacestd;intFibonacci(inti){if(i==1)return0;else{if(i==2)return1;elsereturnFibonacci(i-1)+Fibonacci(i-2);}}intmain(){intn,j,i;cin>>n;for(i=1;i<=n;i++){j=Fibonacci(i);cout<<j<<endl;實驗結(jié)果:2)編寫重載函數(shù)Max1可分別求取兩個整數(shù),三個整數(shù)兩個雙精度數(shù),三個雙精度數(shù)的最大值。源代碼和說明:#include<iostream>usingnamespacestd;intmax1(inta,intb);intmax1(intq,intw,inte);doublemax1(doublei,doublej);doublemax1(doublek,doubleu,doublep);voidmain(){inta,b,q,w,e;doublei,j,p,u,k;cout<<"pleaseentertwo(int)numbers:"<<endl<<endl;cin>>a>>b;max1(a,b);cout<<"pleaseenterthree(int)numbers:"<<endl<<endl;cin>>q>>w>>e;max1(q,w,e);cout<<"pleaseentertwo(double)numbers:"<<endl<<endl;cin>>i>>j;max1(i,j);cout<<"pleaseenterthree(double)numbers:"<<endl<<endl;cin>>k>>u>>p;max1(k,u,p);}intmax1(inta,intb){if(a>b){cout<<"themaxnumber:"<<a<<endl;}elsecout<<"themaxnumber:"<<b<<endl;return0;}intmax1(intq,intw,inte){inttemp;if(q>=w){temp=q;if(temp>=e){cout<<"themaxnumber:"<<temp<<endl;}elsecout<<"themaxnumber:"<<e<<endl;}elsetemp=w;if(temp>=e){cout<<"themaxnumber:"<<temp<<endl;}elsecout<<"themaxnumber:"<<e<<endl;return0;doublemax1(doublei,doublej){if(i>j){cout<<"themaxnumber:"<<i<<endl;}elsecout<<"themaxnumber:"<<j<<endl;return0;}doublemax1(doublek,doubleu,doublep){inttemp;if(k>=u){temp=k;if(temp>=p){cout<<"themaxnumber:"<<temp<<endl;}elsecout<<"themaxnumber:"<<p<<endl;}elsetemp=u;if(temp>=p){cout<<"themaxnumber:"<<temp<<endl;}elsecout<<"themaxnumber:"<<p<<endl;return0;}實驗結(jié)果:寫一個函數(shù),能夠接收身高、體重等數(shù)據(jù),能夠根據(jù)身高、體重檢測身體狀況,胖,瘦等。源代碼和說明#include<iostream>usingnamespacestd;voidSHENGC(doublei,doublej){if(i<j*32)coutvv"'這個人偏胖"vvendl;else{if(i=j*32)coutvv"這個人適中"vvendl;elsecoutvv"這個人偏瘦"vvendl;}}intmain(){doublei,j;coutvv""請輸入身高(cm)和體重(kg)"vvendl;

cin>>i>>j;SHENGC(i,j);}2)實驗結(jié)果實驗四類與對象實驗(設(shè)計性實驗4學時)1.目的要求:掌握類的定義和使用;掌握類對象的聲明;復習具有不同訪問屬性的成員的訪問方式;觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行過程;學習類組合使用方法;使用VC++的debug調(diào)試功能觀察程序流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。2.實驗內(nèi)容:1)定義一個CPU類,包含等級(Rank)、頻率(frequency)、電壓(voltage)等屬性,有兩個公有成員函數(shù)run、stop。其中,rank為枚舉類型CPU__Rank,定義為enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency為單位是MHz的整型數(shù),voltage為浮點型的電壓值。觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。源代碼和說明:#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};classCPU{public:CPU();~CPU();voidrun(enumCPU_Rankr,intf,doublev);voidstop();private:enumCPU_RankRank;intfrequency;doublevoltage;};CPU::CPU(){coutvv'調(diào)用構(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(){cout<<Rank<<endl;cout<<frequency<<endl;cout<<voltage<<endl;}intmain(){enumCPU_Rankt=P1;CPUc;c.run(t,2,4.865);c.stop();}實驗結(jié)果:i.定義一個簡單的Computer類,有數(shù)據(jù)成員芯片(cpu)、內(nèi)存(ram)、光驅(qū)(cdrom)等等,有兩個公有成員函數(shù)run、stop。cpu為CPU類的一個對象,ram為RAM類的一個對象,cdrom為CDROM類的一個對象,定義并實現(xiàn)這個類,觀察這些類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。源代碼和說明:#include<iostream>usingnamespacestd;classCPU{public:CPU(){coutvv"CPU構(gòu)造函數(shù)被調(diào)用"vvendl;}~CPU(){coutvv"CPU析構(gòu)函數(shù)被調(diào)用"vvendl;}};classRAM{public:RAM(){coutvv"RAM構(gòu)造函數(shù)被調(diào)用”<<endl;}~RAM(){coutvv"RAM析構(gòu)函數(shù)被調(diào)用"vvendl;}};classCDROM{public:CDROM(){coutvv"CDROM構(gòu)造函數(shù)被調(diào)用"vvendl;}~CDROM(){coutvv"CDROM析構(gòu)函數(shù)被調(diào)用"vvendl;}};classComputer{private:CPUcpu;RAMram;CDROMcdrom;public:Computer(){coutvv"Computer構(gòu)造函數(shù)被調(diào)用"vvendl;}~Computer(){coutvv"Computer析構(gòu)函數(shù)被調(diào)用"vvendl;}voidrun();voidstop();};intmain(){ComputerC;}實驗結(jié)果:ii.定義一個Body類,擁有身高、體重等數(shù)據(jù),能夠根據(jù)身高、體重檢測身體狀況,要求設(shè)計相應的函數(shù)成員和構(gòu)造函數(shù)。源代碼和說明:#include<iostream>usingnamespacestd;classbody{public:body(){coutvv'構(gòu)造函數(shù)被調(diào)用"vvendl;}~body(){coutvv"析構(gòu)函數(shù)被調(diào)用"vvendl;}voidset(doubleh,doublew)HIGH=h;WEIGHT=w;}voidshow(){cout<<"HIGH="<<HIGH<<endl;cout<<"WEIGHT="<<WEIGHT<<endl;}private:doubleHIGH;doubleWEIGHT;};intmain(){doublei,j;bodya;cout<<"請輸入身高(cm)和體重(kg)"vvendl;cin>>i>>j;a.set(i,j);a.show();}實驗結(jié)果:實驗五C++程序的結(jié)構(gòu)實驗(設(shè)計性實驗2學時)1.目的要求:觀察程序運行中變量的作用域、生存期和可見性;學習類的靜態(tài)成員的使用;學習多文件結(jié)構(gòu)在C++程序中的使用。1)實現(xiàn)客戶機(CLIENT)類。定義字符型靜態(tài)數(shù)據(jù)成員ServerName,保存其服務器名稱;整型靜態(tài)數(shù)據(jù)成員ClientNum,記錄已定義的客戶數(shù)量;定義靜態(tài)函數(shù)ChangeServerName()改變服務器名稱。在頭文件client.h中定義類,在文件client.cpp中實現(xiàn),在文件test.cpp中測試這個類,觀察相應的成員變量取值的變化情況。(需要給出main函數(shù)代碼和運行結(jié)果)//cilent.h#include<iostream>usingnamespacestd;classClient{private:staticcharSeverName[10];staticintClientnum;public:Client(){coutvv"Client構(gòu)造函數(shù)被調(diào)用"vvendl;Clientnum++;}~Client(){cout<<"Client析構(gòu)函數(shù)被調(diào)用"<<endl;Clientnum--;}staticvoidChangeServername(){inti;cout<<"請輸入服務器的名字:"vvendl;cin>>SeverName;}voidshow();};intClient::Clientnum=0;charClient::SeverName[10]="abcd";//Client.cppvoidClient::show(){coutvv"該用戶機的服務器端名字是:"vvendl;coutvvSeverNamevvendl;coutvv"用戶數(shù)量有:"vvendl;coutvvClientnumvvendl;}//Client.exevoidmain(){Client::ChangeServername();Clienta;show();Clientb;show();}實驗結(jié)果:

IKanykeytocontinuefill釀字是11?^=■E:\vc6.,O\MyPrqjects\GIEFED\Debug\GEFED.exeIKanykeytocontinuefill釀字是11?^=■E:\vc6.,O\MyPrqjects\GIEFED\Debug\GEFED.exeiii.完善Body類,將檢測胖瘦的標準定義為靜態(tài)數(shù)據(jù)成員并設(shè)計相應的靜態(tài)成員函數(shù)。(最好給出main函數(shù)代碼和運行結(jié)果)源代碼和說明:#include<iostream>usingnamespacestd;classbody{public:body(){cout<<"body構(gòu)造函數(shù)被調(diào)用"<<endl;}~body(){cout<<"body析構(gòu)函數(shù)被調(diào)用"<<endl;}voidset(doublei,doublej);voidshow();staticvoidset()cout<<"請輸入判斷胖瘦的標準:"vvendl;cin>>body::i;coutvv"檢測胖瘦的標準是:"vvendl;coutvvbody::ivvendl;}private:doubleheigh;doubleweight;staticdoublei;};doublebody::i=3.2;voidbody::set(doublei,doublej){heigh=i;weight=j;}voidbody::show(){coutvv"這個人偏"vvendl;if(heigh/weight>body::i)coutvv"瘦"vvendl;else{if(heigh/weight==body::i)coutvv"正常"vvendl;elsecoutvv"胖"vvendl;}}intmain(){doublei,j;bodya;body::set();coutvv"請輸入身高(cm)和體重(kg):"vvendl;cin>>i>>j;set(i,j);a.show();}實驗結(jié)果iv.定義Boat;和Car兩個類,二者都有weight屬性,定義二者的一個友元函數(shù)totalWeight(),計算二者的和。源代碼和說明:#include<iostream>usingnamespacestd;classBoat{public:Boat(){cout<<"Boat構(gòu)造函數(shù)被調(diào)用"<<endl;}~Boat(){cout<<"Boat析構(gòu)函數(shù)被調(diào)用"<<endl;}voidset(doublei);frienddoubleTotalweight(classBoat&j,classCar&k);private:doubleweight;};classCar{public:Car(){coutvv"Cart構(gòu)造函數(shù)被調(diào)用"vvendl;}~Car(){coutvv"Cart析構(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(classBoat&j,classCar&k){doublem;m=j.weight+k.weight;returnm;}intmain(){doublej;Boatb;Carc;coutvv"請輸入Boat類的重量"vvendl;cin>>j;set(j);coutvv"請輸入Cart類的重量"vvendl;cin>>j;set(j);coutvv"兩者重量總和是"vvendl;coutvvTotalweight(b,c)vvendl;}實驗結(jié)果:實驗六數(shù)組、指針與字符串實驗(設(shè)計性實驗 4學時)1.目的要求:學習使用數(shù)組;學習字符串數(shù)據(jù)的組織和處理;學習標準C++庫的使用;掌握指針的使用方法;練習通過debug觀察指針的內(nèi)容及其所指的對象的內(nèi)容;練習通過動態(tài)內(nèi)存分配實現(xiàn)動態(tài)數(shù)組,并體會指針在其中的作用;分別使用字符數(shù)組和標準C++庫練習處理字符串的方法。2.實驗內(nèi)容:1)編寫一個用于3X3數(shù)組保存矩陣的類,具有矩陣顯示和矩陣轉(zhuǎn)置函數(shù)。源代碼和說明:#include<iostream>usingnamespacestd;classpoint{public:point(){cout<<"point構(gòu)造函數(shù)被調(diào)用"<<endl;}~point(){cout<<"point析構(gòu)函數(shù)被調(diào)用"<<endl;}voidset();voidzhanz();voidshow();private:intp[3][3];};voidpoint::set(){inti,j;for(i=0;i<=2;i++){for(j=0;j<=2;j++)cin>>p[i][j];}voidpoint::show(){inti,j;for(i=0;i<=2;i++){for(j=0;j<=2;j++)cout<<p[i][j]<<""cout<<endl;voidpoint::zhanz(){inti,j,k=0;intt[9];for(i=0;i<=2;i++){for(j=0;j<=2;j++)t[k++]=p[j][i];}for(k=0;k<=8;k++){cout<<t[k]<<"";if(!((k+1)%3))cout<<endl;}}intmain(){pointjuzhen;cout<<"請輸入3*3矩陣的數(shù)據(jù)"vvendl;juzhen.set();coutvv"矩陣是:"vvendl;juzhen.show();coutvv"轉(zhuǎn)置后矩陣是:"vvendl;juzhen.zhanz();}實驗結(jié)果叵]'叵]'E:\vc6B0\MyProjerts\edaf\Debug\edaf.exe"point構(gòu)造畫翹號週用幘輸入3朗矩降篩教據(jù)434215323矩陣是:4 3 4E1 5H23轉(zhuǎn)萱后矩陣是:4 2 3125 3Point析構(gòu)函數(shù)被調(diào)用Pressanykeytocontinuev.使用動態(tài)內(nèi)存分配生成動態(tài)數(shù)組來重新完成上題使用指針實現(xiàn)函數(shù)的功能。源代碼和說明:#include<iostream>usingnamespacestd;classzhuz{public:zhuz(){cout<<"zhuz構(gòu)造函數(shù)被調(diào)用"<<endl;p=newint[3][3];}~zhuz(){cout<<"zhuz析構(gòu)函數(shù)被調(diào)用"<<endl;delete[]p;}voidset(){inti,j;cout<<"請輸入3*3矩陣數(shù)據(jù)"vvendl;for(i=0;i<=2;i++){for(j=0;jv=2;j++)cin>>p[i][j];}}voidshow(){inti,j;for(i=0;iv=2;i++){for(j=0;jv=2;j++){coutvvp[i][j]vv"";}coutvvendl;}}voidzhuanz(){inti,j,k;for(i=0;iv=2;i++){for(j=0;jv=i;j++){k=p[j][i];p[j][i]=p[i][j];p[i][j]=k;}}for(i=0;iv=2;i++){for(j=0;jv=2;j++)

cout<<p[i][j]<<"";cout<<p[i][j]<<"";}cout<<endl;}}private:int(*p)[3];};intmain(){zhuza;a.set();coutvv"矩陣是:"vvendl;a.show();coutvv"轉(zhuǎn)置后矩陣是:"vvendl;a.zhuanz();}實驗結(jié)果:vi.拷貝構(gòu)造2)題中的矩陣類對象,運行程序看看是否存在問題,應該如何改進。(提示:深淺拷貝)vi.源代碼和說明:#include<iostream>usingnamespacestd;classzhuz{public:zhuz(){cout<<"zhuz構(gòu)造函數(shù)被調(diào)用"<<endl;}~zhuz(){cout<<"zhuz析構(gòu)函數(shù)被調(diào)用"<<endl;delete[]p;}zhuz(zhuz&q){inti,j;p=newint[3][3];for(i=0;i<=2;i++){for(j=0;j<=2;j++)p[i][j]=q.p[i][j];}}voidset(){inti,j;cout<<"請輸入3*3矩陣數(shù)據(jù)"vvendl;p=newint[3][3];for(i=0;iv=2;i++){for(j=0;jv=2;j++)cin>>p[i][j];}voidshow(){inti,j;for(i=0;i<=2;i++){for(j=0;j<=2;j++)cout<<p[i][j]<<""cout<<endl;}}voidzhuanz(){inti,j,t;for(i=0;i<=2;i++){for(j=0;j<=i;j++){t=p[j][i];p[j][i]=p[i][j];p[i][j]=t;}}for(i=0;i<=2;i++){for(j=0;j<=2;j++)cout<<p[i][j]<<""cout<<endl;}}private:int(*p)[3];};voidmain(){zhuza;a.set();coutvv"矩陣是:"vvendl;a.show();coutvvendl;coutvv"轉(zhuǎn)置后矩陣是:"vvendl;zhuanz();coutvv'第二個矩陣是:"vvendl;zhuzb(a);show();}試驗結(jié)果:轉(zhuǎn)置后矩陣是:5 3 63 2 8第二個矩陣是:5 3 63 2 8NhUN析構(gòu)I茲』屜函數(shù)撤Pressanykey用用continue周周轉(zhuǎn)置后矩陣是:5 3 63 2 8第二個矩陣是:5 3 63 2 8NhUN析構(gòu)I茲』屜函數(shù)撤Pressanykey用用continue周周Otvii.編程實現(xiàn)兩字符串的連接。要求使用字符數(shù)組保存字符串,不要使用系統(tǒng)函數(shù)。源代碼和說明:#includeviostream>usingnamespacestd;voidString(char*a,char*b){

char*p;p=a;while(*p!=NULL)p++;while(*b!=NULL){p++;b++;intmain(){charshuz1[20];charshuz2[20];<<endl;<<endl;<<endl;<<endl;<<endl;<<endl;cin>>shuz1;cout<<"請輸入第二個字符串cin>>shuz2;String(shuz1,shuz2);cout<<"組合后的字符串是:cout<<shuz1<<endl;}實驗結(jié)果:viii.使用string類定義字符串對象,重新實現(xiàn)上一小題。?源代碼和說明:#include<string>#include<iostream>usingnamespacestd;intmain(){stringshuz1="abc",shuz2="bcd";cout<<"請輸入第一個字符串"vvendl;cin>>shuz1;coutvv"請輸入第二個字符串"vvendl;cin>>shuz2;shuz1+=shuz2;coutvv"組合后字符串是:"vvendl;coutvvshuz1;coutvvendl;}實驗結(jié)果:ix.定義Body類的數(shù)組,評測班級每個同學的身體狀況。源代碼和說明:#include<iostream>usingnamespacestd;classBody{public:Body(){coutvv"Body構(gòu)造函數(shù)被調(diào)用"vvendl;}~Body(){coutvv"Body析構(gòu)函數(shù)被調(diào)用"vvendl;}voidGetweight(doubleW){Weight=W;}voidGethigh(doubleH){High=H;}voidshowWei(){coutvv"該同學體重是:"vvWeightvvendl;}voidshowH(){coutvv"該同學身高是:"vvHighvvendl;}doubleshow(){returnHigh/Weight;}private:doubleWeight;doubleHigh;};voidmain(){inti,k;doublea,b,n,j=3.2;coutvv'請輸入要測試的同學的個數(shù)";cin>>k;Body*people=newBody[k];for(i=0;iv=k-1;i++){coutvv'請輸入第"vvi+lvv"個同學的身高";cin>>a;people[i].Gethigh(a);coutvv"*****************體^^"?cin>>b;people[i].Getweight(b);}coutvvendlvvendl;for(i=0;iv=k-l;i++){

n=people[i].show();if(n<j)coutvv"pU"vvi+lvv"該同學偏:胖"vvendl;elseif(n==j)coutvv"pU"vvi+1vv"該同學偏正常"vvendl;elsecoutvv"pU"vvi+1vv"該同學偏:瘦"vvendl;people[i].showH();people[i].showWei();coutvvendl;}delete[]people;}實驗結(jié)果:tocontinue:瘦:165:49llil-:172:6Q>0<>0<>0<?0<?0<?0<?0<耳><耳I'C:\Users\asdasdw\Debug\asdasdw.exe"-EE甬甬.■■■■.tocontinue:瘦:165:49llil-:172:6Q>0<>0<>0<?0<?0<?0<?0<耳><耳I'C:\Users\asdasdw\Debug\asdasdw.exe"-EE甬甬.■■■■.二a弔nJ數(shù)數(shù)數(shù)ke函函函y:154:42實驗七繼承與派生實驗(驗證性實驗 4學時)目的要求:學習定義和使用類的繼承關(guān)系,定義派生類;熟悉不同繼承方式下對基類成員的訪問控制;學習利用虛基類解決二義性問題。2.實驗內(nèi)容:1)定義一個基類Animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)SetAge(intn)中直接給age賦值,看看會有什么問題,把age改為公有或保護成員變量,還會有問題嗎?編程試試看,說明了什么原則?#include<iostream>usingnamespacestd;classAnimal{public:Animal(){cout<<"Animal構(gòu)造函數(shù)被調(diào)用"<<endl;}~Animal(){cout<<"Animal析構(gòu)函數(shù)被調(diào)用"<<endl;}//private://protected:intage;};classdog:publicAnimal{public:dog(){cout<<"dog構(gòu)造函數(shù)被調(diào)用"<<endl;}~dog(){cout<<"dog析構(gòu)函數(shù)被調(diào)用"<<endl;}voidSetAge(intn);voidshow(){cout<<"年齡是:"cout<<age<<endl;}};voiddog::SetAge(intn){n=3;age=n;}intmain(){intt;dogb;b.SetAge(t);b.show();}試驗結(jié)果:x. 定義一個基類BasClass,有整型成員變量Number,構(gòu)造其派生類DerivedClass,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況和執(zhí)行順序。源代碼和說明:#include<iostream>usingnamespacestd;classBasClass{public:BasClass(){cout<<"BasClass構(gòu)造函數(shù)被調(diào)用"vvendl;}~BasClass(){coutvv"BasClass析構(gòu)函數(shù)被調(diào)用"vvendl;}};classDerivedClass:publicBasClass{public:DerivedClass(){coutvv"DerivedClass構(gòu)造函數(shù)被調(diào)用"vvendl;}~DerivedClass(){coutvv"DerivedClass析構(gòu)函數(shù)被調(diào)用"vvendl;}private:};intmain(){DerivedClassa;}實驗結(jié)果:xi. 定義一個車(vehicle)基類,具有MaxSpeed、Weight等成員變量,Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類,汽車(motorcar)類。自行車(bicycle)類有高度(Height)等屬性,汽車(motorcycle)類有座位數(shù)(SeatNum)等屬性。從bicycle和Motorcar派生出摩托車(motorcycle)類,在繼承過程中,注意把vehicle設(shè)置為虛基類。如果不把vehicle設(shè)置為虛基類,會有什么問?編程試試看。源代碼和說明:#include<iostream>usingnamespacestd;classvehicle{public:vehicle(){cout<<"vehicle構(gòu)造函數(shù)被調(diào)用"<<endl;}~vehicle(){cout<<"vehicle析構(gòu)函數(shù)被調(diào)用"<<endl;}voidRun(){inti,j;coutv<"請輸入最大重量和最大速度:"vvendl;cin>>i>>j;MaxSpeed=i;Weight=j;}voidStop(){coutvv"MaxSpeed="vvMaxSpeedvvendl;coutvv"Weight="vvWeightvvendl;}private:doubleMaxSpeed,Weight;};classbicycle:virtualpublicvehicle{public:bicycle(){coutvv"bicycle構(gòu)造函數(shù)被調(diào)用"vvendl;}~bicycle(){coutvv"bicycle析構(gòu)函數(shù)被調(diào)用"vvendl;}private:doubleHeight;};classmotorcar:virtualpublicvehicle{public:motorcar(){cout<<"motorcar構(gòu)造函數(shù)被調(diào)用"<<endl;}~motorcar(){cout<<"motorcar析構(gòu)函數(shù)被調(diào)用"<<endl;}private:intSeatNum;};classmotorcycle:publicmotorcar,publicbicycle{public:motorcycle(){cout<<"motorcycle構(gòu)造函數(shù)被調(diào)用"<<endl;}~motorcycle(){cout<<"motorcycle析構(gòu)函數(shù)被調(diào)用"<<endl;}};intmain(){motorcyclea;a.bicycle::Run();a.bicycle::Stop();a.motorcar::Run();a.motorcar::Stop();}實驗結(jié)果

motofcart'C:\Users\Wmotofcart'C:\Users\WDASD\Debug\WDASD.exe'uehicle^pjmotorcar用二爐迴蝕掠調(diào)用hicycle構(gòu)込應戮披調(diào)ftmotorcycle構(gòu)造函數(shù)被調(diào)用請輸入最大董量和叢關(guān)速應:10060MaxSpeed=100Weight=60請礙人最大重量和最犬速度:96135MaxSpeed=961Weight=35motorcycle哼勢I數(shù)碉用vehicle析Pressanykeytocontinue實驗八多態(tài)性實驗設(shè)計性實驗2學時)1.目的要求:1.目的要求:掌握運算符重載的方法;學習使用虛函數(shù)實現(xiàn)動態(tài)多態(tài)性。實驗內(nèi)容:1)定義Point類,有坐標_x,_y兩個成員變量;對Point類重載“++”(自增)、“--”(自減)運算符,實現(xiàn)對坐標的改變。(提示:注意前++和后++)源代碼和說明:#include<iostream>usingnamespacestd;classpoint{public:point(){cout<<"point構(gòu)造函數(shù)被調(diào)用"<<endl;}~point(){cout<<"point析構(gòu)函數(shù)被調(diào)用"<<endl;}voidset(inti=1,intj=3){x=i;y=j;}voidshow(){coutvv"坐標是:"vvendl;cout<<x<<""<<y<<endl;}pointoperator++();pointoperator--();pointoperator++(int);pointoperator--(int);private:intx,y;};pointpoint::operator++(){x++;y++;return*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"請輸入坐標:"vvendl;cin>>i>>j;a.set(i,j);a.show();++a;a.show();--a;a.show();a++;a.show();a--;a.show();}實驗結(jié)果:xii. 定義一個車(vehicle)基類,有Run、Stop等虛成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類,從bicycle至Umotorcar派生出摩托車(motorcycle)類,它們都有Run、Stop等成員函數(shù),利用基類指針或引用虛函數(shù),觀察虛函數(shù)的作用,說說多態(tài)的含義,如果不采用虛函數(shù)會是什么樣的結(jié)果?源代碼和說明:#include<iostream>usingnamespacestd;classvehicle{public:vehicle(){cout<<"vehicle構(gòu)造函數(shù)被調(diào)用"<<endl;}~vehicle(){cout<<"vehicle析構(gòu)函數(shù)被調(diào)用"<<endl;}virtualvoidRun(){coutvv"設(shè)置vehicle最大速度和重量"vvendl;}virtualvoidStop(){coutvv"顯示vehicle最大速度和重量"vvendl;}private:doubleMaxSpeed,Weight;};classbicycle:publicvehicle{public:bicycle(){cout<<"bicycle構(gòu)造函數(shù)被調(diào)用"<<endl;}~bicycle(){cout<<"bicycle析構(gòu)函數(shù)被調(diào)用"<<endl;}voidRun(){coutvv"設(shè)置bicycle最大速度和重量"vvendl;}voidStop(){coutvv"顯示bicycle最大速度和重量"vvendl;}private:doubleHeight;};classmotorcar:publicvehicle{public:motorcar(){coutvv"motorcar1構(gòu)造函數(shù)被調(diào)用"vvendl;}~motorcar(){coutvv"motorcar析構(gòu)函數(shù)被調(diào)用"vvendl;}voidRun(){coutvv"設(shè)置motorcar最大速度和重量"vvendl;}voidStop(){coutvv"顯示motorcar最大速度和重量"vvendl;}private:intSeatNum;};classmotorcycle:publicmotorcar,publicbicycle{public:motorcycle(){cout<<"motorcycle構(gòu)造函數(shù)被調(diào)用"<<endl;}~motorcycle(){cout<<"motorcycle析構(gòu)函數(shù)被調(diào)用"<<endl;}voidRun(){coutvv"設(shè)置motorcycle最大速度和重量"vvendl;}voidStop(){coutvv"顯示motorcycle最大速度和重量"vvendl;}};voidfun(vehicle*p){p->Run();p->Stop();}intmain(){vehiclea0,*p;bicyclea1;motorcara2;motorcyclea3;coutvvendl;p=&a0;fun(p);p=&a1;fun(p);p=&a2;fun(p);//p=&a3;//fun(p);coutvvendl;實驗結(jié)果:l:'C:\Users\WDASD\Debug\WDASD.exe'nWnWttt.ttt;周.用用用用調(diào)用調(diào)用用劇一調(diào)調(diào)調(diào)跟跟調(diào)調(diào)斯應店甬克萬A應萬審應婁數(shù)數(shù)數(shù)數(shù)函數(shù)函數(shù)矗函函函函造函造函函奴造造造造構(gòu)造構(gòu)造造4兩奇奇喝rl構(gòu)l:'C:\Users\WDASD\Debug\WDASD.exe'nWnWttt.ttt;周.用用用用調(diào)用調(diào)用用劇一調(diào)調(diào)調(diào)跟跟調(diào)調(diào)斯應店甬克萬A應萬審應婁數(shù)數(shù)數(shù)數(shù)函數(shù)函數(shù)矗函函函函造函造函函奴造造造造構(gòu)造構(gòu)造造4兩奇奇喝rl構(gòu)rl曙C1eeeeaeaeeu-1111clellcccccrcrccri?1UJio?丄o?1yohhchththctee?1eoeoe■丄ouuhumumuhm童童童童nnfff速速速矗疑-±-±-±-K^曰¥.¥.¥.^rlrHeeeeaa1111ccccccrri?1UJUJoohhccttEE?l-l?looWV_E_E一g設(shè)顯邀顯設(shè)顯motorcycuehicletFf^llmotorcar-^ueliicle^Frmotorcar^實驗十一流內(nèi)庫與輸入、輸出

實驗(設(shè)計性實驗2學時)1.目的要求:熟悉流類庫中常用的類及其成員函數(shù)的用法;學習標準輸入輸出及格式控制;學習對文件的應用方法(二進制文件文本文件)。2.實驗內(nèi)容:1)觀察以下程序的輸出,注意對輸出格式的控制方法。//Iab11_1.cpp#include<fstream>Usingnamespacestd;#defneD(a)T<<#a<<endl;aOfstreamT(“output.out”);Voidmain(){D(inti=53;)D(floatf=4700113.141593;)Char*s="Isthereanymore?”;D(T.setf(ios::unitbuf);)D(T.setf(ios::showbase);)D(T.setf(ios::uppercase);)D(T.setf(ios::showpos);)D(T<<i<<endl;)D(T.setf(ios::hex,ios::basefield);)D(T<<i<<endl;)D(T.unsetf(ios::uppercase);)D(T.setf(ios::oct,ios::basefield);)D(T<<i<<endl;)D(T.setf(ios::showbase);)D(T.setf(ios::dec,ios::basefield);)D(T.setf(ios::left,ios::adjustfield);)D(T.Jill(?0>);)D(T<<“fillchar:”<<T.fll()<<endl;)D(T.windrh(8);)T<<i<<endl;D(T.setf(ios::right,ios::adjustfield);)D(T.windth(8);)T<<i<<endl;D(T.setf(ios::internal,ios::adjustfield);)D(T.windth(8);)T<<i<<endl;D(T<<iendl;)//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(T<<endl<<f<<endl;)D(T.setf(ios::fixed,ios::floatfield);)D(T<<f<<endl;)D(T.setf(0,ios::floatfield);)//AutomaticD(T<<f<<endl;)D(T.preci

溫馨提示

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

最新文檔

評論

0/150

提交評論