![面向?qū)ο驝++實驗報告手冊_第1頁](http://file4.renrendoc.com/view/2968c30d6afbec0b5b028b75711abae8/2968c30d6afbec0b5b028b75711abae81.gif)
![面向?qū)ο驝++實驗報告手冊_第2頁](http://file4.renrendoc.com/view/2968c30d6afbec0b5b028b75711abae8/2968c30d6afbec0b5b028b75711abae82.gif)
![面向?qū)ο驝++實驗報告手冊_第3頁](http://file4.renrendoc.com/view/2968c30d6afbec0b5b028b75711abae8/2968c30d6afbec0b5b028b75711abae83.gif)
![面向?qū)ο驝++實驗報告手冊_第4頁](http://file4.renrendoc.com/view/2968c30d6afbec0b5b028b75711abae8/2968c30d6afbec0b5b028b75711abae84.gif)
![面向?qū)ο驝++實驗報告手冊_第5頁](http://file4.renrendoc.com/view/2968c30d6afbec0b5b028b75711abae8/2968c30d6afbec0b5b028b75711abae85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
創(chuàng)新源于實踐《面向?qū)ο驝++程序設(shè)計》課程實驗教學(xué)手冊姓名:姓名:任亞南學(xué)號:1101120103專業(yè):計算機科學(xué)與技術(shù)班級:2012級1班任課教師:李梅蓮時間:2013年6月14日綜合成績:許昌學(xué)院計算機科學(xué)與技術(shù)學(xué)院制實驗手冊使用及要求實驗操作是教學(xué)過程中理論聯(lián)系實際的重要環(huán)節(jié),而實驗報告的撰寫又是知識系統(tǒng)化的吸收和升華過程,因此,實驗報告應(yīng)該體現(xiàn)完整性、規(guī)范性、正確性、有效性?,F(xiàn)將實驗報告撰寫的有關(guān)內(nèi)容說明如下:預(yù)習(xí)報告必須在實驗前完成。實驗前按實驗要求手寫程序或程序填空,并走查代碼,有疑問處標(biāo)記,上機時在C++集成開發(fā)環(huán)境下輸入并調(diào)試手寫程序,分析運行結(jié)果,如實填寫實驗過程及實驗中存在的問題及解決辦法。實驗結(jié)束后填寫通過后的源程序和對實驗的總結(jié)。通過后的源程序可以手寫也可以打印粘貼。實驗情況一覽表序號實驗項目實驗性質(zhì)學(xué)時實驗一C++基礎(chǔ)練習(xí)設(shè)計性2實驗二C++簡單程序設(shè)計設(shè)計性2實驗三類與對象(一)設(shè)計性4實驗四類與對象(二)設(shè)計性4實驗五運算符重載設(shè)計性4實驗六派生與繼承設(shè)計性4實驗七虛函數(shù)與多態(tài)性設(shè)計性4實驗八輸入輸出格式設(shè)計性2實驗九文件設(shè)計性4實驗十綜合實驗綜合性6實驗一實驗名稱:c++基礎(chǔ)練習(xí)實驗性質(zhì):設(shè)計性學(xué)時數(shù):2成績:一、實驗?zāi)康氖煜な褂肰isualC++或VS2005等集成開發(fā)環(huán)境編寫和實現(xiàn)C++程序過程掌握C++程序的基本格式與規(guī)范熟悉C++基本的輸入輸出操作理解作用域運算符的概念與基本使用方法new和delete運算符二、實驗要求實驗前預(yù)習(xí)教材第1章,事先按要求填充或編寫好實驗程序,上機調(diào)試和運行程序,分析實驗中遇到的問題。三、實驗所需器材與軟件微型計算機;C++集成開發(fā)工具軟件(VC++6.0、CFree、VS2005等)四、實驗過程:設(shè)計源程序1:編寫一個簡單程序,輸出“Welcomeyou”,并給程序加一行注釋“Firstc++program”。#include<iostream>usingnamespacestd;intmain(){1)cout<<"Welcomeyou"<<endl;2)//firstc++program;return0;}實驗結(jié)果設(shè)計源程序2:輸入以下程序,如果有錯誤,請修改直到正確,分析運行結(jié)果。#include<iostream>usingnamespacestd;intmain(){inta,b,c;intadd(intx,inty);cout<<"請輸入兩個數(shù):";cin>>a>>b;c=add(a,b);cout<<"a+b="<<c<<endl;return0;}intadd(intx,inty){intz;z=x+y;return(z);}實驗結(jié)果設(shè)計源程序3:編寫一個完整的包含輸入和輸出的簡單C++程序。#include<iostream>usingnamespacestd;intmain(){#include<iostream>#include"iomanip"intmain(){usingnamespacestd;inta[3][3]; inti,j; cout<<"請輸入九個數(shù)字:"; for(i=0;i<3;i++) { for(j=0;j<3;j++) { cin>>a[i][j]; } } cout<<"可形成矩陣:"<<endl; for(i=0;i<3;i++) { for(j=0;j<3;j++) { cout<<setw(4)<<a[i][j]; } cout<<endl; }return0;}實驗結(jié)果設(shè)計源程序4:編寫一個程序動態(tài)分配一個浮點空間,輸入一個數(shù)到該空間中,計算以該數(shù)為半徑的圓的面積并在屏幕上顯示,最后釋放該空間,請使用new,delete運算符。#include<iostream>usingnamespacestd;intmain(){double*r;(1)r=newdouble;cin>>*r;cout<<”Areais:”<<(2)3.14**r**r;(3)deleter;;return0;}實驗結(jié)果五、實驗總結(jié):在c++中的輸入輸出的規(guī)則老是寫反;對于這節(jié)的實驗在完成動態(tài)分配內(nèi)存代碼編寫時,具有一定的困難,通過參照課本和記憶還是記下了還是會把cout<<中的字符串的輸出和變量的輸出混淆比如:*p=10;cout<<”*p”;正確應(yīng)為:*p=10;cout<<*p;實驗二實驗名稱:c++簡單程序設(shè)計練習(xí)實驗性質(zhì):設(shè)計性學(xué)時數(shù):2成績:一、實驗?zāi)康倪M一步熟悉在所用系統(tǒng)上編輯、編譯、連接和運行C++程序的方法掌握C++對C的功能的補充和增強掌握簡單的指針操作方式掌握函數(shù)模板及其聲明方法。二、實驗要求實驗前預(yù)習(xí)教材第1章,事先按要求填充或編寫好實驗程序,上機調(diào)試和運行程序,分析實驗中遇到的問題,熟悉常見錯誤提示信息,熟悉單步調(diào)試。三、實驗所需器材與軟件微型計算機;C++集成開發(fā)工具軟件(VC++6.0、CFree、VS2005等)四、實驗過程:設(shè)計源程序1:編寫程序,要求使用帶有默認(rèn)參數(shù)的函數(shù)實現(xiàn)求任意兩個整數(shù)的最大值。實驗結(jié)果設(shè)計源程序2:編寫程序,利用函數(shù)重載和函數(shù)模板分別實現(xiàn)對整型量、實型和長整型求絕對值。#include“iostream"usingnamespacestd;intmain() { intmyfabs(inta); doublemyfabs(doublea); longmyfabs(longa); inti,m; doublej,n; longk,p; cout<<"請輸入一個整數(shù):"; cin>>i;m=myfabs(i); cout<<"請輸入一個數(shù):"; cin>>j; n=myfabs(j); cout<<"請輸入一個長整數(shù):"; cin>>k; p=myfabs(k); cout<<m<<""<<n<<""<<p<<endl;return0;}intmyfabs(inta){ return(a>=0?a:-a);}doublemyfabs(doublea){ return(a>=0?a:-a);}longmyfabs(longa){ return(a>=0?a:-a);}實驗結(jié)果程序填空:設(shè)計源程序3:讀入9個雙精度的數(shù),把他們存放在一個存儲塊里,然后求出它們的積。使用動態(tài)分配和指針操作。#include<iostream>usingnamespacestd;constintSIZE=9;double*init(){returnnewdouble[SIZE];}voidreadin(double*a)//從a指向的存儲單元開始讀{inti;cout<<"\nplealseenter"<<SIZE<<"value:";for(i=0;i<SIZE;i++)(1)cin>>a[i];//讀入數(shù)據(jù)到a+i指向的存儲單元}//計算從arr指向的存儲單元開始的連續(xù)size個存儲單元的乘積voidproduct(double*arr,intsize,double*result){for(size--,*result=*(arr+size);--size>=0;*result*=*(arr+size));//乘積的結(jié)果放入result指向的存儲單元}intmain(){double*x,res,*init();if((x=init())==NULL)return;(2)readin(x);product(x,SIZE,&res);cout<<"Theproductis:"<<res<<endl;(3)deletex;return0;}實驗結(jié)果設(shè)計源程序4:分別利用指針和引用作為函數(shù)參數(shù)實現(xiàn)交換兩個整型變量的值,寫出主函數(shù)進行驗證。//指針函數(shù)參數(shù)#include“iostream”usingnamespacestd;intmain(){voidswarp(int&p1,int&p2)inti,j;cout<<”請輸入兩個數(shù):”;cin>>i;cin>>j;swarp(i,j);cout<<i<<”“<<j<<endl;}voidswarp(int&p1,int&p2){inttemp;temp=p1;p1=p2;p2=temp;}實驗結(jié)果://引用作為函數(shù)參數(shù)#include“iostream"usingnamespacestd;voidswap(int&a,int&b){inttemp;temp=a;a=b;b=temp; }intmain(){inta,b;cout<<"請輸入a,b值:";cin>>a>>b;swap(a,b);cout<<"交換后為:"<<a<<""<<b<<endl;return0;}實驗結(jié)果:實驗總結(jié):實驗三實驗名稱:類與對象(一)、實驗性質(zhì):設(shè)計性學(xué)時數(shù):4、實驗成績_____一、實驗?zāi)康恼莆疹悺㈩惖臄?shù)據(jù)成員、類的成員函數(shù)的定義方式理解類成員的訪問控制方式掌握對象的定義和操作對象的方法理解構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義與執(zhí)行過程掌握重載構(gòu)造函數(shù)的方法類聲明和成員函數(shù)定義的分離二、實驗要求實驗前預(yù)習(xí)教材第2章,事先按要求填充或編寫好實驗程序,上機調(diào)試和運行程序,分析實驗中遇到的問題。三、實驗所需器材與軟件微型計算機;C++集成開發(fā)工具軟件(VC++6.0、CFree、VS等)四、實驗過程:設(shè)計源程序1:聲明一個時間類,時間類中有3個私有數(shù)據(jù)成(hour,minute,second)和兩個公有成員函數(shù)(setTime和printTime),setTime根據(jù)傳遞的3個參數(shù)為對象設(shè)置時間;printTime負(fù)責(zé)將對象表示的時間顯示輸出。在主函數(shù)中,建立一個時間類的對象,設(shè)置時間為9點20分30秒并顯示該時間。程序填空:#include<iostream>usingnamespacestd;classTime{public: voidsetTime(intc,intm,ints) { clock=c; minute=m; second=s; } voidprintTime() { cout<<clock<<":"<<minute<<":"<<second<<endl; }private: intclock,minute,second;};intmain(){ Timetime1;(1)time1.setTime(9,20,30);(2)time1.printTime();}實驗結(jié)果:設(shè)計源程序2:2.使用構(gòu)造函數(shù)代替上面的settime成員函數(shù),并在主函數(shù)中使用構(gòu)造函數(shù)設(shè)置時間為10點40分50秒,并顯示該時間。#include<iostream>usingnamespacestd;classTime{public: Time(intc,intm,ints) {(1)clock=c;(2)minute=m;(3)second=s; } voidprint_Time() { cout<<clock<<":"<<minute<<":"<<second<<endl; }private: intclock,minute,second;};intmain(){ Timetime1((4)10,40,50); time1.print_Time();}實驗結(jié)果:3.重載時間類的構(gòu)造函數(shù)(不帶參數(shù))使小時,分,秒均為0。#include<iostream>usingnamespacestd;classTime{ public: Time() { clock=0; minute=0; second=0;} voidprint_Time(){ cout<<clock<<":"<<minute<<":"<<second<<endl;}private:intclock,minute,second;}; intmain(){Timetime1,time2;time1.print_Time();time2.print_Time(); return0;}實驗結(jié)果:4.在時間類的析構(gòu)函數(shù)中輸出“Goodbye!”#include<iostream>usingnamespacestd;classTime{ public: Time() { clock=0; minute=0; second=0;} ~Time() { cout<<"goodbye!"<<endl;} voidprint_Time(){ cout<<clock<<":"<<minute<<":"<<second<<endl;}private:intclock,minute,second;}; intmain(){Timetime1,time2;time1.print_Time();time2.print_Time(); return0;}實驗結(jié)果:5.綜合以上程序1至程序4,聲明一個完善的時間類,時間類中有時、分、秒3個私有數(shù)據(jù)成員、兩個公有成員函數(shù)(setTime和print_time)、帶參數(shù)和不帶參數(shù)兩個構(gòu)造函數(shù)及一個析構(gòu)函數(shù)。在主函數(shù)中,定義三個時間類的對象,分別采用setTime、帶參構(gòu)造、不帶參構(gòu)造來為其設(shè)置時間并顯示各對象時間。此題要求類的定義與實現(xiàn)分離,即采用多文件編程方法。Time.h文件:usingnamespacestd;classTime{public:Time() { hour=0; min=0; sec=0; } Time(inth,intm,ints) { hour=h; min=m; sec=s; } voidsetTime(); voidprint_time();private: inthour; intmin; intsec;};time.cpp文件:#include“iostream"#include"Time.h"voidTime::setTime(){ cout<<"請輸入時間時,分,秒:"; cin>>hour>>min>>sec;}voidTime::print_time(){ cout<<"現(xiàn)在時間為:"<<endl; cout<<hour<<":"<<min<<":"<<sec<<endl;}主函數(shù):#include“iostream"#include"Time.h"usingnamespacestd;intmain(){ Timet1,t2,t3(10,10,10); t1.print_time(); t2.setTime(); t2.print_time(); t3.print_time(); return0;}實驗結(jié)果:五、實驗總結(jié):實驗四實驗名稱:類與對象(二)、實驗性質(zhì):設(shè)計性學(xué)時數(shù):4、實驗成績_____一、實驗?zāi)康恼莆諏ο髷?shù)組定義與使用方法理解對象指針的概念,學(xué)會使用指針引用對象了解this指針的工作方式掌握靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)的基本使用方法理解友元與友元函數(shù)的作用,掌握其使用方法熟悉類模板的聲明與使用方法二、實驗要求實驗前預(yù)習(xí)教材第3章,事先按要求填充或編寫好實驗程序,上機調(diào)試和運行程序,分析實驗中遇到的問題。三、實驗所需器材與軟件微型計算機;C++集成開發(fā)工具軟件(VC++6.0、CFree、VS等)四、實驗過程:設(shè)計源程序1:使用股票類stock,在主函數(shù)中定義一個對象數(shù)組存放連續(xù)5個交易日的股票信息。編寫一個add函數(shù),根據(jù)兩個stock對象(前后兩日)的當(dāng)日收盤價,計算當(dāng)日漲幅。用指針引用對象數(shù)組中的兩個對象。在主函數(shù)中調(diào)用該函數(shù)計算從第2個交易日開始每天的當(dāng)日漲幅。#include"iostream"usingnamespacestd;constintN=5;classStock{public:Stock(){};Stock(intn,floatma,floatmi,floatb,floate);voidSet_Stock(intn,floatma,floatmi,floatb,floate);voidSet_Stock();floatGet_End();voidShow_Stock();private:intNumber;floatMax,Min,Begin,End;};Stock::Stock(intn,floatma,floatmi,floatb,floate){Number=n;Max=ma;Min=mi;Begin=b;End=e;}voidStock::Set_Stock(intn,floatma,floatmi,floatb,floate){Number=n;Max=ma;Min=mi;Begin=b;End=e;}floatStock::Get_End(){returnEnd;}voidStock::Show_Stock(){cout<<"編號:"<<Number<<"\t";cout<<"最高盤價:"<<Max<<"\t";cout<<"最低盤價:"<<Min<<"\t";cout<<"開盤價:"<<Begin<<"\t";cout<<"收盤價:"<<End<<"\n";}voidStock::Set_Stock(){cout<<"Number:";cin>>Number;cout<<"Max:";cin>>Max;cout<<"Min:";cin>>Min;cout<<"Begin:";cin>>Begin;cout<<"end:";cin>>End;}//編寫主函數(shù):intmain(){ inti; Stock*a,*b; voidadd(Stock&a,Stock&b); Stockp[N]; Stockm(0,0,0,0,0); m.Show_Stock(); for(i=0;i<5;i++) { p[i].Set_Stock(); } for(i=0;i<5;i++) { p[i].Show_Stock(); } for(i=0;i<4;i++) { intj; j=i+1; add(*(p+i),*(p+j));或add(p[i],p[j]); } return0;}//編寫add函數(shù):(提示:公式(今天收盤價-昨天收盤價)/昨天收盤價*100%)floatadd(Stock&p1,Stock&p2){voidadd(Stock&a,Stock&b){ floatn;n=(b.Get_End()-a.Get_End())/a.Get_End();cout<<n<<endl;}}實驗結(jié)果:設(shè)計源程序2:在stock類中定義一個靜態(tài)數(shù)據(jù)成員,記錄當(dāng)前stock對象的數(shù)量。#include"iostream"usingnamespacestd;constintN=2;classStock{public:Stock(){N_count++;};Stock(intn,floatma,floatmi,floatb,floate);voidSet_Stock(intn,floatma,floatmi,floatb,floate);voidSet_Stock();floatGet_End();voidShow_Stock();staticintGet_N_count();private:staticintN_count;intNumber;floatMax,Min,Begin,End;};intStock::N_count=0;Stock::Stock(intn,floatma,floatmi,floatb,floate){N_count++;Number=n;Max=ma;Min=mi;Begin=b;End=e;}voidStock::Set_Stock(intn,floatma,floatmi,floatb,floate){Number=n;Max=ma;Min=mi;Begin=b;End=e;}floatStock::Get_End(){returnEnd;}voidStock::Show_Stock(){cout<<"編號:"<<Number<<"\t";cout<<"最高盤價:"<<Max<<"\t";cout<<"最低盤價:"<<Min<<"\t";cout<<"開盤價:"<<Begin<<"\t";cout<<"收盤價:"<<End<<"\n";}voidStock::Set_Stock(){cout<<"Number:";cin>>Number;cout<<"Max:";cin>>Max;cout<<"Min:";cin>>Min;cout<<"Begin:";cin>>Begin;cout<<"end:";cin>>End;}intStock::Get_N_count(){returnN_count;}編寫主函數(shù)代碼:intmain(){ inti; floatadd(Stock&a,Stock&b),m; Stockp[N]; for(i=0;i<N;i++) { p[i].Set_Stock(); } for(i=0;i<N;i++) { p[i].Show_Stock(); } intj=0; for(i=0;i<N-1;i++) { j=i+1; m=add(*(p+i),*(p+j)); cout<<m<<endl; } cout<<"一共有數(shù)據(jù)為:"; cout<<Stock::Get_N_count()<<endl;}floatadd(Stock&a,Stock&b){ floatn; n=(b.Get_End()-a.Get_End())/a.Get_End(); returnn;}實驗結(jié)果:設(shè)計源程序3:設(shè)計一個成員函數(shù)Assign_Stock為對象賦值,其中的形式參數(shù)是對另一個Stock對象的引用,使用this指針避免對自己的賦值,在主函數(shù)中顯示用Assign_Stock賦值的對象。#include"iostream"usingnamespacestd;classStock{public:Stock(){};Stock(intn,floatma,floatmi,floatb,floate);voidSet_Stock(intn,floatma,floatmi,floatb,floate);voidSet_Stock();floatGet_End();voidShow_Stock();voidAssign_Stock(Stock&p);private:intNumber;floatMax,Min,Begin,End;};Stock::Stock(intn,floatma,floatmi,floatb,floate){ Number=n;Max=ma;Min=mi;Begin=b;End=e;}voidStock::Set_Stock(intn,floatma,floatmi,floatb,floate){Number=n;Max=ma;Min=mi;Begin=b;End=e;}floatStock::Get_End(){returnEnd;}voidStock::Show_Stock(){ cout<<"編號:"<<Number<<"\t";cout<<"最高盤價:"<<Max<<"\t";cout<<"最低盤價:"<<Min<<"\t";cout<<"開盤價:"<<Begin<<"\t";cout<<"收盤價:"<<End<<"\n";}voidStock::Set_Stock(){cout<<"Number:";cin>>Number;cout<<"Max:";cin>>Max;cout<<"Min:";cin>>Min;cout<<"Begin:";cin>>Begin;cout<<"end:";cin>>End;}voidStock::Assign_Stock(Stock&p){if(this!=&p){Number=p.Number;Max=p.Max;Min=p.Min;Begin=p.Begin;End=p.End;}}編寫主函數(shù)代碼:intmain(){ Stockp1[2]; inti; for(i=0;i<2;i++) p1[i].Set_Stock(); for(i=0;i<2;i++) p1[i].Assign_Stock(p1[i]); for(i=0;i<2;i++) p1[i].Show_Stock(); return0;}實驗結(jié)果:設(shè)計源程序4:定義一個友元函數(shù)計算Stock對象的當(dāng)日開盤價是否高于當(dāng)日收盤價。若是,返回真;否則,返回假。#include"iostream"usingnamespacestd;classStock{public:Stock(){};Stock(intn,floatma,floatmi,floatb,floate);voidSet_Stock(intn,floatma,floatmi,floatb,floate);voidSet_Stock();floatGet_End();floatGet_Begin();voidShow_Stock();voidAssign_Stock(Stock&p); friendintadd(Stock&a);private:intNumber;floatMax,Min,Begin,End;};Stock::Stock(intn,floatma,floatmi,floatb,floate){ Number=n;Max=ma;Min=mi;Begin=b;End=e;}voidStock::Set_Stock(intn,floatma,floatmi,floatb,floate){Number=n;Max=ma;Min=mi;Begin=b;End=e;}floatStock::Get_End(){returnEnd;}voidStock::Show_Stock(){ cout<<"編號:"<<Number<<"\t";cout<<"最高盤價:"<<Max<<"\t";cout<<"最低盤價:"<<Min<<"\t";cout<<"開盤價:"<<Begin<<"\t";cout<<"收盤價:"<<End<<"\n";}voidStock::Set_Stock(){cout<<"Number:";cin>>Number;cout<<"Max:";cin>>Max;cout<<"Min:";cin>>Min;cout<<"Begin:";cin>>Begin;cout<<"end:";cin>>End;}floatStock::Get_Begin(){returnBegin;}intadd(Stock&a){return(a.Get_Begin()-a.Get_End());}intmain(){Stockp1[2];inti;for(i=0;i<2;i++)p1[i].Set_Stock();for(i=0;i<2;i++)p1[i].Show_Stock();for(i=0;i<2;i++){intm;m=add(p1[i]);if(m==0)cout<<"今日開盤價等于當(dāng)日收盤價"<<endl;if(m<0)cout<<"今日開盤價低于當(dāng)日收盤價"<<endl;if(m>0)cout<<"今日開盤價高于于當(dāng)日收盤價"<<endl;}return0;}實驗結(jié)果:設(shè)計源程序4:定義類模板實現(xiàn)棧的基本操作,棧的數(shù)據(jù)結(jié)構(gòu)用帶表頭結(jié)點的單向鏈表實現(xiàn)。#include<iostream>usingnamespacestd;template<classType>classnode{ public: Typedata; node<Type>*next;};template<classType>classStacklink{ private: node<Type>*top; public: Stacklink(); ~Stacklink(); voidpush(Typevalue); Typepop(); intisnull();};template<classType>Stacklink<Type>::Stacklink(){ node<Type>*T; T=newnode<Type>; T->next=NULL; top=T;}template<classType>Stacklink<Type>::~Stacklink(){ node<Type>*N,*Temp; for(N=top;N!=NULL;) { Temp=N; N=N->next; deleteTemp; }}template<classType>voidStacklink<Type>::push(Typevalue){ node<Type>*T; T=newnode<Type>; if(T!=NULL) { T->next=top; T->data=value; top=T; } else { cout<<endl<<"TheStackisNULL!"; exit(1); }}template<classType>intStacklink<Type>::isnull(){ if(top->next==NULL) return1; else return0;}template<classType>TypeStacklink<Type>::pop(){ Typevalue; node<Type>*Temp; if(top->next==NULL) { cout<<endl<<"TheStackisNULL!"; return(0); } value=top->data; Temp=top; top=top->next; deleteTemp; returnvalue;}intmain(){ intj; Stacklink<int>ss; for(inti=1;i<5;i++) { ss.push(i); } cout<<endl; while(!ss.isnull()) { j=ss.pop(); cout<<j<<"\t"; } cout<<endl; return0;}實驗結(jié)果:設(shè)計源程序5:利用棧的類模板實現(xiàn)將輸入的整數(shù)轉(zhuǎn)換成八進制并輸出#include<iostream>#include"stack.h"usingnamespacestd;template<classT>classStack{public:Stack(intstacksize=10);//構(gòu)造函數(shù)建立具有10元素的默認(rèn)棧~Stack();voidpush(Tx);Tpop();inthowMany();intsize;//棧的容量private:T*data;//存放棧數(shù)據(jù)intcount;//存放棧頂指};template<classT>Stack<T>::Stack(intstacksize){if(stacksize>0){size=stacksize;data=newT[stacksize];for(inti=0;i<SIZE;i++)data[i]=0;}else{data=NULL;size=0;}count=0;}template<classT>Stack<T>::~Stack(){deletedata;}template<classT>voidStack<T>::push(Tx){if(count<size){data[count]=x;count++;}else{cout<<"堆棧已滿,不能再壓入數(shù)據(jù):"<<x<<endl;}}template<classT>TStack<T>::pop(){if(count<=0){cout<<endl<<"堆棧已空!"<<endl;exit(1);//堆棧操作失敗,退出程序!}count--;returndata[count];}template<classT>intStack<T>::howMany(){returncount;}intmain(){Stack<int>s;inta,i,b;cout<<"Inputyourdecimaldata:";cin>>a;intm=a;while(a>0){b=a%8;a=a/8;s.push(b);}cout<<"十進制數(shù)"<<m<<"轉(zhuǎn)化為八進制數(shù)為:";for(i=0;i<s.size;i++){cout<<s.pop(); }cout<<endl;return0;}實驗結(jié)果:實驗五實驗名稱:運算符重載、實驗性質(zhì):設(shè)計性學(xué)時數(shù):4、實驗成績_____一、實驗?zāi)康牧私膺\算符重載的概念和使用方法掌握常用的雙目、單目及流運算符重載方法二、實驗要求實驗前預(yù)習(xí)教材第4章,事先編寫好實驗程序,上機調(diào)試和運行程序,分析實驗中遇到的問題。三、實驗所需器材與軟件微型計算機;C++集成開發(fā)工具軟件(VC++6.0、CFree、VS2005等)四、實驗過程:設(shè)計源程序1:定義一個有理數(shù)Rational類,私有數(shù)據(jù)成員有分子、分母、構(gòu)造函數(shù)有默認(rèn)參數(shù)(分子默認(rèn)為0,分母默認(rèn)為1),重載比較運算符<、<=、==、!=。#include<iostream>#include<stdlib.h>classRational{public: Rational(intnum=0,intdenom=1); intoperator<(Rationalr)const; intoperator<=(Rationalr)const; intoperator==(Rationalr)const; intoperator!=(Rationalr)const;private: longnum,den;};Rational::Rational(intp,intq){1)_______num=p_______________________________;2)_______den=q_______________________________;}intRational::operator<(Rationalr)const{ returnnum*r.den<r.num*den;}intRational::operator<=(Rationalr)const{ returnnum*r.den<=r.num*den;}intRational::operator!=(Rationalr)const{ returnnum*r.den!=r.num*den;}intRational::operator==(Rationalr)const{ return3)_num*r.den==.num*den_______________;}intmain(){Rationala(4,5),b(8,5); if(a<b) cout<<"a<b"<<endl; elsecout<<"a>b"<<endl;}實驗結(jié)果設(shè)計源程序2:使用二目算術(shù)四則運算符+、-、*、/和單目求反運算符‘-‘實現(xiàn)有理數(shù)Rational類的算術(shù)運算操作。#include<iostream>#include<stdlib.h>classRational{public: Rational(intnum=0,intdenom=1); Rationaloperator-(); Rationaloperator+(Rationalr); Rationaloperator-(Rationalr); Rationaloperator*(Rationalr); Rationaloperator/(Rationalr); voiddisplay();private: longnum,den;};Rational::Rational(intp,intq){ num=p; den=q;}RationalRational::operator-(){ returnRational(-num,den);}Rational::operator+(Rationalr){ returnRational(num*r.den+den*r.num,r.den*den);}RationalRational::operator-(Rationalr){ returnRational(num*r.den-den*r.num,r.den*den);}RationalRational::operator*(Rationalr){ returnRational(num*r.num,den*r.den);}RationalRational::operator/(Rationalr){ returnRational(num*r.den,den*r.num);}voidRational::display(){longm,n;intres;m=num;n=den;res=m%n;while(res!=0){m=n;n=res;res=m%n;}num=num/n;den=den/n; cout<<num<<"/"<<den<<endl;}intmain(){ Rationala(4,5),b(8,5),c; c=-a; c.display(); c=a+b; c.display(); c=a-b; c.display(); c=a*b; c.display(); c=a/b; c.display(); return0;}實驗結(jié)果:設(shè)計源程序3:對有理數(shù)Rational類,重載“<<”和“>>”運算符。#include<iostream>#include<stdlib.h>classRational{public: Rational(intnum=0,intdenom=1); Rationaloperator-(); Rationaloperator+(Rationalr); Rationaloperator-(Rationalr); Rationaloperator*(Rationalr); Rationaloperator/(Rationalr);friendistream&operator>>(istream&,Rational&);friendostream&operator<<(ostream&,Rational&);private: longnum,den;};istream&operator>>(istream&input,Rational&r){cout<<"請輸入數(shù):"; input>>r.num>>r.den; returninput;}ostream&operator<<(ostream&output,Rational&r){ output<<r.num<<"/"<<r.den<<endl; returnoutput;}Rational::Rational(intp,intq){longm,n;intres;m=p;n=q;res=m%n;while(res!=0){m=n;n=res;res=m%n;}p=p/n;q=q/n; num=p; den=q;}RationalRational::operator-(){ returnRational(-num,den);}RationalRational::operator+(Rationalr){ returnRational(num*r.den+den*r.num,r.den*den);}RationalRational::operator-(Rationalr){ returnRational(num*r.den-den*r.num,r.den*den);}RationalRational::operator*(Rationalr){ returnRational(num*r.num,den*r.den);}RationalRational::operator/(Rationalr){ returnRational(num*r.den,den*r.num);}intmain(){ Rationala,b,c; cin>>a>>b; c=-a; cout<<c; c=a+b; cout<<c; c=a-b; cout<<c; c=a*b; cout<<c; c=a/b; cout<<c; return0;}實驗結(jié)果:五、實驗總結(jié):實驗六實驗名稱:派生類與繼承、實驗性質(zhì):設(shè)計性學(xué)時數(shù):4、實驗成績_____一、實驗?zāi)康睦斫忸惖睦^承的概念,能夠定義和使用類的繼承關(guān)系掌握派生類的聲明與定義方法熟悉公有派生和私有派生的訪問特性學(xué)習(xí)虛基類在解決二義性問題中的作用二、實驗要求實驗前預(yù)習(xí)教材第5章,事先編寫好實驗程序,上機調(diào)試和運行程序,分析實驗中遇到的問題。三、實驗所需器材與軟件微型計算機;C++集成開發(fā)工具軟件(VC++6.0、CFree、VS2005等)四、實驗過程:設(shè)計源程序1:定義一個基類MyArray,基類中可以存放一組整數(shù),完善這個類并上機測試。classMyArray{public:MyArray(intleng);~MyArray();voidInput();voidDisplay();protected:int*alist;intlength;};基類中有構(gòu)造函數(shù)、析構(gòu)函數(shù)、輸入數(shù)據(jù)和輸出數(shù)據(jù)的函數(shù)。#include“iostream"usingnamespacestd;classMyArray{public:MyArray(intleng);~MyArray();voidInput();voidDisplay();protected:int*alist;intlength;};inti;MyArray::MyArray(intleng){ length=leng; if(length>0) { alist=newint[length]; for(i=0;i<length;i++) alist[i]=0; } else { alist=NULL; }}voidMyArray::Input(){ cout<<"請輸入數(shù)組:"; for(i=0;i<length;i++) { cin>>alist[i]; }}voidMyArray::Display(){ cout<<"該數(shù)組為:"; for(i=0;i<length;i++) { cout<<alist[i]; } cout<<endl;}MyArray::~MyArray(){ deletealist;}intmain(){ MyArrayarry(5); arry.Input(); arry.Display(); return0;}實驗結(jié)果設(shè)計源程序2:定義一個類SortArray繼承自MyArray,在該類中定義函數(shù)實現(xiàn)排序功能。#include“iostream"usingnamespacestd;classMyArray{public:MyArray(intleng);~MyArray(){}voidInput();voidDisplay();protected:int*alist;intlength;};classSortArray:publicMyArray{public:~SortArray(){}SortArray(intleng):MyArray(leng){} voidsort(); };inti,j;intflag=0;MyArray::MyArray(intleng){ length=leng; if(length>0) { alist=newint[length]; for(i=0;i<length;i++) { alist[i]=0; } } else { alist=NULL; }}voidMyArray::Input(){ cout<<"請輸入數(shù)組:"; for(i=0;i<length;i++) { cin>>alist[i]; }}voidMyArray::Display(){ if(flag==0) { cout<<"該數(shù)組為:"; flag=1; } else cout<<"排完序后的數(shù)組為:"; for(i=0;i<length;i++) { cout<<alist[i]<<"\t"; } cout<<endl;}voidSortArray::sort(){ intk,temp; for(i=0;i<length;i++) { k=i; for(j=k+1;j<length;j++) if(alist[j]>alist[k]) k=j; temp=alist[i]; alist[i]=alist[k]; alist[k]=temp; }}intmain(){ SortArrays(5); s.Input(); s.Display(); s.sort(); s.Display(); return0;}實驗結(jié)果設(shè)計源程序3:定義一個類ReArray繼承自MyArray,在該類中定義函數(shù)實現(xiàn)逆轉(zhuǎn)功能。#include“iostream"usingnamespacestd;classMyArray{public:MyArray(intleng);~MyArray(){}voidInput();voidDisplay();protected:int*alist;intlength;};classReArray:publicMyArray{ public: ReArray(intlength):MyArray(length){} ~ReArray(){} voidreorder();};inti,j;intflag=0;MyArray::MyArray(intleng){ length=leng; if(length>0) { alist=newint[length]; for(i=0;i<length;i++) { alist[i]=0; } } else alist=NULL;}voidMyArray::Input(){ cout<<"請輸入數(shù)組:"; for(i=0;i<length;i++) { cin>>alist[i]; }}voidMyArray::Display(){ if(flag==0) { cout<<"該數(shù)組為:"; flag=1; } else cout<<"逆轉(zhuǎn)序后的數(shù)組為:"; for(i=0;i<length;i++) { cout<<alist[i]<<"\t"; } cout<<endl;}voidReArray::reorder(){ for(i=0,j=length-1;i<j;i++,j--) { alist[i]=alist[i]+alist[j]; alist[j]=alist[i]-alist[j]; alist[i]=alist[i]-alist[j]; }}intmain(){ ReArrayr(5); r.Input(); r.Display(); r.reorder(); r.Display(); return0;}實驗結(jié)果設(shè)計源程序4:定義一個類AverArray繼承自MyArray,在該類中定義函數(shù)求解整數(shù)的平均值。#include“iostream"usingnamespacestd;classMyArray{public:MyArray(intleng);~MyArray(){}voidInput();voidDisplay();protected:int*alist;intlength;};classAverArray:publicMyArray{ public: AverArray(intlength):MyArray(length){} ~AverArray(){} doubleave();};inti,j;intflag=0;MyArray::MyArray(intleng){ length=leng; if(length>0) { alist=newint[length]; for(i=0;i<length;i++) { alist[i]=0; } } else alist=NULL;}voidMyArray::Input(){ cout<<"請輸入數(shù)組:"; for(i=0;i<length;i++) { cin>>alist[i]; }}voidMyArray::Display(){ if(flag==0) { cout<<"該數(shù)組為:"; flag=1; } else cout<<"逆轉(zhuǎn)序后的數(shù)組為:"; for(i=0;i<length;i++) { cout<<alist[i]<<"\t"; } cout<<endl;}doubleAverArray::ave(){ doublesum=0,aver; for(i=0;i<length;i++) { sum=sum+alist[i]; } returnsum/length;}intmain(){ AverArraya(5); a.Input(); a.Display(); cout<<"該組數(shù)的平均值為:"; cout<<a.ave()<<endl; return0;}實驗結(jié)果設(shè)計源程序5:定義類NewArray,同時繼承了SortArray,ReArray和AverArray,使得類的對象同時具有排序、逆轉(zhuǎn)、和求平均值的功能。在繼承的過程中聲明為虛基類,體會虛基類在解決二義性問題中的作用。#include“iostream"usingnamespacestd;classMyArray{public:MyArray(intleng);~MyArray(){}voidInput();voidDisplay();protected:int*alist;intlength;};classAverArray:virtualpublicMyArray{ public: AverArray(intleng):MyArray(leng){} ~AverArray(){} doubleave();};classSortArray:virtualpublicMyArray{public:~SortArray(){}SortArray(intleng):MyArray(leng){} voidsort(); };classReArray:virtualpublicMyArray{ public: ReArray(intleng):MyArray(leng){} ~ReArray(){} voidreorder();};classNewArray:virtualpublicMyArray,virtualpublicAverArray,virtualpublicReArray,virtualpublicSortArray{ public: ~NewArray(){} NewArray(intleng):MyArray(leng),AverArray(leng),ReArray(leng),SortArray(leng){}};inti,j;MyArray::MyArray(intleng){ length=leng; if(length>0) { alist=newint[length]; for(i=0;i<length;i++) { alist[i]=0; } } else alist=NULL;}voidMyArray::Input(){ cout<<"請輸入數(shù)組:"; for(i=0;i<length;i++) { cin>>alist[i]; }}voidMyArray::Display(){ intflag=0; if(flag==0) { cout<<"該數(shù)組為:"; flag=1; } else cout<<"逆轉(zhuǎn)序后的數(shù)組為:"; for(i=0;i<length;i++) { cout<<alist[i]<<"\t"; } cout<<endl;}doubleAverArray::ave(){ doublesum=0,aver; for(i=0;i<length;i++) { sum=sum+alist[i]; } returnsum/length;}voidSortArray::sort(){ intk,temp; for(i=0;i<length;i++) { k=i; for(j=k+1;j<length;j++) if(alist[j]>alist[k]) { k=j; } temp=alist[i]; alist[i]=alist[k]; alist[k]=temp; }}voidReArray::reorder(){ for(i=0,j=length-1;i<j;i++,j--) { alist[i]=alist[i]+alist[j]; alist[j]=alist[i]-alist[j]; alist[i]=alist[i]-alist[j]; }}intmain(){ NewArrayn(5); n.Input(); n.Display(); n.sort(); n.Display(); n.reorder(); n.Display(); cout<<"該組數(shù)據(jù)的平均值為:"; cout<<n.ave()<<endl; return0;}實驗結(jié)果實驗七實驗名稱:虛函數(shù)與多態(tài)性、實驗性質(zhì):設(shè)計性、學(xué)時數(shù):4、實驗成績_____一、實驗?zāi)康睦斫忪o態(tài)多態(tài)性和動態(tài)多態(tài)性掌握運算符重載的基本方法掌握虛函數(shù)的定義與使用方法二、實驗要求實驗前預(yù)習(xí)教材第6章,事先按要求填充或編寫好實驗程序,上機調(diào)試和運行程序,分析實驗中遇到的問題。三、實驗所需器材與軟件微型計算機;C++集成開發(fā)工具軟件(VC++6.0、CFree、VS2005等)四、實驗過程:設(shè)計源程序1:定義一個類Animal,該類中可以存放動物的名字,并有一個Identify函數(shù)用于顯示動物的種類。#include<iostream>#include<strength>classAnimal{public:Animal(){name=NULL;} Animal(char*n); ~Animal() {deletename;}virtualvoidIdentify();protected: char*name;};Animal::Animal(char*n){name=newchar[stolen(n)+1]; strcpy(name,n);}voidAnimal::Identify(){cout<<"\negenericanimal:"<<name<<endl;}intmain(){Animala("cat"); a.Identify();return0;}實驗結(jié)果:設(shè)計源程序3:定義兩個類Cat和Dog,都繼承自Animal,并重載Identify函數(shù),不但要顯示動物的種類,還要顯示動物的名字。#include<iostream>#include<strength>classAnimal{public:Animal(char*n){ name=newchar[strlen(n)+1_____________];__________strcpy(name,n)________________;}virtualvoidIdentify();protected: char*name;};voidAnimal::Identify(){ cout<<"genericanimal"<<name<<endl;}classCat:publicAnimal{public:Cat(char*n):Animal(n){ } voidIdentify();};voidCat::Identify(){ cout<<"Iamacatcalled"<<name<<endl;}classDog:publicAnimal{public:Dog(char*n):Animal(n){ }voidIdentify();};voidDog::Identify(){ cout<<"Iamadogcalled"<<name<<endl;}intmain(){ Catcat("貓咪"); cat.__Identify()_____________; Dogdog("虎子"); dog.Identify();}實驗結(jié)果:設(shè)計源程序4:定義Tiger類,繼承自Cat,重載Identify函數(shù),顯示動物的種類和名字。#include<iostream>#include"string"usingnamespacestd;classAnimal{public:Animal(stringn){name=n;}virtualvoidIdentify();protected: stringname;};voidAnimal::Identify(){cout<<"genericanimal:"<<name<<endl;}classCat:publicAnimal{public: Cat(stringn):Animal(n){} voidIdentify();};voidCat::Identify(){cout<<"Iamacatcalled"<<name<<endl;}classTiger:publicCat{public:Tiger(stringn):Cat(n){}voidIdentify();};voidTiger::Identify(){cout<<"IamaTigercalled"<<name<<endl;}intmain(){Catcat("貓咪"); cat.Identify(); Tigertiger("老虎"); tiger.Identify(); return0;}實驗結(jié)果五、實驗總結(jié):實驗八實驗名稱:輸入輸出格式的控制、實驗性質(zhì):設(shè)計性、學(xué)時數(shù):2、實驗成績_____一、實驗?zāi)康氖煜ち骷傲黝悗斓淖饔檬炀氄莆樟黝悗熘谐S玫念惣捌涑蓡T函數(shù)的使用方法掌握重載“<<”和“>>”的方法掌握控制輸出寬度的函數(shù)width和setw掌握函數(shù)setionsflags和resetonflags設(shè)置和恢復(fù)對齊方式、精度、大小寫、進制等。二、實驗要求實驗前預(yù)習(xí)教材第7章,事先按要求填充或編寫好實驗程序,上機調(diào)試和運行程序,分析實驗中遇到的問題。三、實驗所需器材與軟件微型計算機;C++集成開發(fā)工具軟件(VC++6.0、CFree、VS等)四、實驗過程:設(shè)計源程序1:對Rational類,重載“<<”和“>>”.#include<iostream>#include<stdlib.h>classRational{public:Rational(intnum=0,intdenom=1);friendistream&operator>>(istream&istr,Ratinal&r);friendostream&operator<<(ostream&ostr,constRational&d);private:longnum,den;voidstandardize(void);};voidRational::Standardize(void){if(den<0){//使分母大于0,符號在分子上den=-den;num=-num;}}Rational::Rational(intp,intq):num(p),den(q){if(den==0){cerr<<”AZerodenominatorisinvalid”<<endl;exit(1);}}填寫類成員函數(shù)的實現(xiàn)代碼:代碼填寫在方框中//
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中介服務(wù)協(xié)議合同
- 物流貨運服務(wù)合同
- 2025年上海道路客貨運輸從業(yè)資格證b2考試題庫
- 2025年廣西貨運從業(yè)資格證500道題目和答案大全
- 2025年山西貨運從業(yè)資格證模擬考試0題答案解析
- 電力供應(yīng)保障合同(2篇)
- 2024-2025學(xué)年高中英語Unit16Stories模擬高考強化練含解析北師大版選修6
- 教師個人培訓(xùn)總結(jié)報告
- 物業(yè)公司安全隱患排查大總結(jié)
- 品質(zhì)部年度工作計劃
- 灌腸操作評分標(biāo)準(zhǔn)
- 企業(yè)年金基金管理機構(gòu)基本服務(wù)和收費標(biāo)準(zhǔn)規(guī)范規(guī)范行業(yè)自律公約
- 小學(xué)二年級部編人教版上冊語文期末整理復(fù)習(xí)題
- 東華醫(yī)院麻醉科QoR-40隨訪表
- DB5106∕T 16-2021 機插水稻育秧基質(zhì)制備技術(shù)規(guī)程
- 堤壩工程施工組織設(shè)計
- 常用鋼材化學(xué)成分及力學(xué)性能
- CPIM BSCM__v3_0_VC(課堂PPT)
- 常用的螺紋底孔及公差規(guī)定
- 雀巢面試的開放性問題
- 會議審批表模板
評論
0/150
提交評論