




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、金陵科技學(xué)院實(shí)驗(yàn)報(bào)告學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(理工類)課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì) 專業(yè)班級: _13計(jì)統(tǒng)2班_ 學(xué)生學(xué)號:_1305103038 學(xué)生姓名: 曹亞孟 _ _ 所屬院部: 計(jì)算機(jī)工程學(xué)院 指導(dǎo)教師: 吳剛 20 15 20 16 學(xué)年 第 一 學(xué)期 金陵科技學(xué)院教務(wù)處制實(shí)驗(yàn)報(bào)告書寫要求實(shí)驗(yàn)報(bào)告原則上要求學(xué)生手寫,要求書寫工整。若因課程特點(diǎn)需打印的,要遵照以下字體、字號、間距等的具體要求。紙張一律采用A4的紙張。實(shí)驗(yàn)報(bào)告書寫說明實(shí)驗(yàn)報(bào)告中一至四項(xiàng)內(nèi)容為必填項(xiàng),包括實(shí)驗(yàn)?zāi)康暮鸵?;?shí)驗(yàn)儀器和設(shè)備;實(shí)驗(yàn)內(nèi)容與過程;實(shí)驗(yàn)結(jié)果與分析。各院部可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。填寫注意事
2、項(xiàng)(1)細(xì)致觀察,及時(shí)、準(zhǔn)確、如實(shí)記錄。(2)準(zhǔn)確說明,層次清晰。(3)盡量采用專用術(shù)語來說明事物。(4)外文、符號、公式要準(zhǔn)確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書寫,嚴(yán)禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。實(shí)驗(yàn)報(bào)告批改說明實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真、仔細(xì),一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績采用百分制,具體評分標(biāo)準(zhǔn)由各院部自行制定。實(shí)驗(yàn)報(bào)告裝訂要求實(shí)驗(yàn)批改完畢后,任課老師將每門課程的每個(gè)實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)報(bào)告以自然班為單位、按學(xué)號升序排列,裝訂成冊,并附上一份該門課程的實(shí)驗(yàn)大綱。實(shí)驗(yàn)項(xiàng)目名稱: C+基礎(chǔ)程序設(shè)計(jì) 實(shí)驗(yàn)學(xué)時(shí): 3 同組學(xué)生姓名: 無 實(shí)驗(yàn)地點(diǎn): A107 實(shí)驗(yàn)日
3、期: 9.18 實(shí)驗(yàn)成績: 批改教師: 吳剛 批改時(shí)間: 一、實(shí)驗(yàn)?zāi)康暮鸵?.了解Visual C+6.0或者Visual C+2005以上版本的特點(diǎn)。2.學(xué)會Visual C+6.0或者Visual C+2005以上版本的開發(fā)環(huán)境,來創(chuàng)建和調(diào)試標(biāo)準(zhǔn)的C+控制后臺應(yīng)用程序。3.學(xué)會使用Visual C+6.0或者Visual C+2005以上版本的開發(fā)環(huán)境中的程序調(diào)試功能,例如單步執(zhí)行、設(shè)置斷點(diǎn)、觀察變量值等。4.掌握string類型的用法。5.掌握C+語言編程時(shí)輸入和輸出格式控制。6.掌握多文件結(jié)構(gòu)的使用。7.掌握重載函數(shù)的使用。二、實(shí)驗(yàn)設(shè)備和環(huán)境1.計(jì)算機(jī)每人一臺。2.安裝Windows
4、XP或者以上版本操作系統(tǒng)。3.安裝Visual C+6.0或者Visual C+2005以上版本。三、實(shí)驗(yàn)內(nèi)容及步驟1.給出Visual C+調(diào)試一個(gè)簡單應(yīng)用程序的步驟,要求程序輸出字符串“Hello!Welcome to C+!”。程序:#include<iostream>using namespace std;int main() cout<<"Hello!"<<endl; cout<<"Welcome to C+!"<<endl; return 0;運(yùn)行結(jié)果:2.調(diào)試以下程序,觀察運(yùn)行結(jié)果
5、。#include<iostream>using namespace std;void main()int a,b=10;int&ra=a;a=20;cout<<a<<endl;cout<<ra<<endl;cout<<&a<<endl;cout<<&ra<<endl;ra=b;cout<<a<<endl;cout<<ra<<endl;cout<<b<<endl;cout<<&am
6、p;a<<endl;cout<<&ra<<endl;cout<<&b<<endl;運(yùn)行結(jié)果及結(jié)果分析:3.編寫一程序,實(shí)現(xiàn)九九乘法表的2中格式輸出,格式如下:(1) 1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 · · · · · · · 4 4 8 · · · · · · · 5 5 10
7、 · · · · · · · 6 6 12 · · · · · · · 7 7 14 · · · · · · · 8 8 16 · · · · · · · 9 9 18 · · · · · · ·(2) 1 2 3 4 5 6 7 8 9 1 1 2
8、 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81注:要求每種輸出格式均寫成函數(shù)形式程序:#include <iostream>using namespace std;int main()int i,j; cout<<"顯示1:"<<endl;for(i=1;i<10;i+)for(j=1;j<10;j+)cou
9、t<<i*j<<"t"cout<<endl;cout<<endl<<"顯示2:"<<endl;for(i=1;i<10;i+) for(j=1;j<=i;j+) cout<<j*i<<"t" cout<<endl; return 0;運(yùn)行結(jié)果:4將第3題改成多文件結(jié)構(gòu)實(shí)現(xiàn)。要求該工程中有3個(gè).cpp文件和1個(gè).h文件。程序:.h:#include <iostream>using namespace std
10、;int cfb1(int x,int y);int cfb2(int x,int y);.cpp:(1)#include "3head.h"void main()int i,j;cout<<cfb1(i,j)<<endl;cout<<cfb2(i,j)<<endl;(2)#include "3head.h"int cfb1(int i,int j)cout<<"顯示1:"<<endl;for(i=1;i<10;i+)for(j=1;j<10;j+)c
11、out<<i*j<<"t"cout<<endl;return 0;(3)#include "3head.h"int cfb2(int i,int j)cout<<"顯示2:"<<endl;for(i=1;i<10;i+) for(j=1;j<=i;j+) cout<<j*i<<"t" cout<<endl; return 0;5.編程實(shí)現(xiàn)比較兩個(gè)數(shù)的大小,求較大值(要求使用重載函數(shù)實(shí)現(xiàn))。程序:#includ
12、e<iostream>using namespace std;int max(int a,int b)return a>b?a:b;int main()int m,n;cout<<"Enter two integer:"cin>>m>>n;cout<<"The bigger is:"<<max(m,n)<<endl;return 0;運(yùn)行結(jié)果:6.編寫一個(gè)程序,判斷一個(gè)字符串是否為另一個(gè)字符串的子串,若是,返回字串在主串中的位置。要求不適用strstr函數(shù),自己編寫
13、一個(gè)子函數(shù)實(shí)現(xiàn)。(建議使用string類型,而非字符數(shù)組。)程序:#include <iostream>#include "string.h"using namespace std;void main()char a="how are you?"char b="are"int i=0,j,na,nb,flag;na=strlen(a);nb=strlen(b);flag=1;for(i=0;i!='0'i+)if(ai=bj) j+;運(yùn)行結(jié)果:四、實(shí)驗(yàn)體會熟悉了C+開發(fā)環(huán)境的使用,對C+編程有了初步的了解,
14、能夠編寫一些簡單的和C類似的程序。實(shí)驗(yàn)項(xiàng)目名稱: 類與對象 實(shí)驗(yàn)學(xué)時(shí): 3 同組學(xué)生姓名: 無 實(shí)驗(yàn)地點(diǎn): A107 實(shí)驗(yàn)日期: 9.25 實(shí)驗(yàn)成績: 批改教師: 吳剛 批改時(shí)間: 一、實(shí)驗(yàn)?zāi)康暮鸵?.掌握類和對象的概念、定義方法以及類與對象的簡單用法。2.掌握成員函數(shù)的實(shí)現(xiàn)與調(diào)用方法。3.深刻領(lǐng)會類與對象的區(qū)別。4.理解類實(shí)現(xiàn)數(shù)據(jù)隱藏和封裝的原理。5.掌握構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、分析構(gòu)造函數(shù)的定義和使用,尤其注意組合類中它們的調(diào)用順序。二、實(shí)驗(yàn)設(shè)備和環(huán)境1.計(jì)算機(jī)每人一臺。2.安裝WindowsXP或者以上版本操作系統(tǒng)。3.安裝Visual C+6.0或者Visual C+2005以上版本
15、。三、實(shí)驗(yàn)內(nèi)容及步驟1.用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法實(shí)現(xiàn)棧的操作。棧又叫堆棧,是一個(gè)常用的數(shù)據(jù)結(jié)構(gòu),它是一種運(yùn)算受限的線性表,僅允許在表的一端進(jìn)行插入和刪除運(yùn)算,是一種后進(jìn)先出表。提示:棧用一維整型數(shù)組來表示,棧的大小定義為10;棧定義為一個(gè)類stack;實(shí)現(xiàn)棧的創(chuàng)建、進(jìn)棧和出棧、棧的消亡。進(jìn)棧函數(shù):void push(int n);出棧函數(shù):int pop(void);程序:#include<iostream>using namespace std;const int maxsize=10;class stackpublic:void init()top=-1;void push(i
16、nt n);int pop();void dead();private:int top;int datamaxsize;void stack:push(int n)if(top=maxsize)cout<<"棧已滿!"<<endl;elsetop+;datatop=n;int stack:pop()if(top<0)cout<<"棧下溢!"<<endl;return 0;elsetop-;return datatop+1;void stack:dead()if(top<0)cout<<
17、;"棧下溢!"<<endl;elsetop-;cout<<"棧中還剩"<<(top+1)<<"個(gè)元素"<<endl;int main()stack seqstack;int i,x,m;seqstack.init();cout<<"請輸入10個(gè)數(shù)字:"for(i=0;i<maxsize;i+)cin>>x;seqstack.push(x);cout<<"請輸入你所需要的操作:"<<e
18、ndl;cout<<1<<""<<"元素出棧!"<<endl;cout<<2<<""<<"棧的消亡!"<<endl;cin>>m;switch(m) case 1: for(i=0;i<maxsize;i+) cout<<""<<seqstack.pop(); break; case 2: for(i=0;i<maxsize;i+) seqstack.d
19、ead(); break; return 0;運(yùn)行結(jié)果:2.將第1題中的實(shí)驗(yàn)內(nèi)容改為多文件結(jié)構(gòu)實(shí)現(xiàn)。程序:#include <iostream>using namespace std;#define N 10class stackstatic int top;int aN;public:void push(int n);void pop();void die();#include <head.h>int stack:top=0;void stack:push(int n)if(top<N)atop+=n;cout<<"進(jìn)棧數(shù)據(jù):"&
20、lt;<n<<endl;elsecout<<"堆棧已經(jīng)滿了,不能再加數(shù)進(jìn)去了!"<<endl;void stack:pop()if(top<=0)cout<<"堆棧已經(jīng)空了,沒有數(shù)據(jù)了!"<<endl;elsecout<<"出棧數(shù)據(jù):"cout<<a-top<<endl;void stack:die()int i;for(i=0;i<N;i+)ai=0;cout<<"消亡堆棧!"<&l
21、t;endl;#include "head.h"void main()int n,m;cout<<"輸入兩個(gè)你要輸入的數(shù)據(jù)N和M:"cin>>n>>m;stack s;s.push(n);s.push(m);s.pop();s.pop();s.pop();s.die();3.設(shè)計(jì)一個(gè)用于人事管理的People(人員)類??紤]到通用性,這里只抽象出所有類型人員都具有的屬性:number(編號)、sex(性別)、birthday(出生日期)、id(身份證號)等。其中“出生日期”聲明為一個(gè)“日期”類內(nèi)嵌子對象。用成員函數(shù)實(shí)現(xiàn)
22、對人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和折構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)、組合類等。程序:#include <iostream>#include <string>using namespace std;class Dateprivate: int year;int month; int day; public: Date()Date(int y,int m,int d)year=y; month=m; day=d; void set() cin>>year>>month>>day; void display() cout<
23、;<year<<"年"<<month<<"月"<<day<<"日" ; class Personprivate: int num; char sex; Date birthday; char ID18;public:Person()Person(int n,int y,int m,int d,char id18,char s='m'):birthday(y,m,d) num=n; sex=s; strcpy(ID,id);Person(Person&am
24、p; p)num=p.num;sex=p.sex;birthday=p.birthday;strcpy(ID,p.ID); void input()cout<<"錄入數(shù)據(jù):"<<endl;cout<<"編號:" cin>>num;cout<<"性別(m/f):"cin>>sex;cout<<"生日:"birthday.set();cout<<"身份證號:"cin>>ID; ID18=
25、9;0'cout<<endl;void output()cout<<"編號:"<<num<<endl;cout<<"性別:"<<sex<<endl;cout<<"生日:"birthday.display();cout<<endl;cout<<"身份證號:"<<ID<<endl; Person()cout<<" "<<num
26、<<"號人員已經(jīng)錄入"<<endl;int main()Person p1;p1.input();p1.output();return 0;運(yùn)行結(jié)果:4.設(shè)計(jì)一個(gè)計(jì)算薪水的類Payroll,它的數(shù)據(jù)成員包括:單位小時(shí)的工資、已經(jīng)工作的小時(shí)數(shù)、本周應(yīng)付工資數(shù)。在主函數(shù)定義一個(gè)具有10個(gè)元素的對象數(shù)組(代表10個(gè)雇員)(可以定義普通對象數(shù)組,也可以定義堆對象數(shù)組)。程序詢問每個(gè)雇員本周已經(jīng)工作的小時(shí)數(shù),然后顯示應(yīng)得的工資。要求:輸入有效性檢驗(yàn):每個(gè)雇員每周工作的小時(shí)數(shù)不能大于60,同時(shí)也不能為負(fù)數(shù)。程序:#include<string.h>#
27、include<stdio.h>class Payrollprivate:double money;double total;public:int time;int GetTime()doprintf("input time:");scanf("%d",&time); while(time< 0 && time >60 ); money = 100; return 0;int GetTotalMoney()return (total =time * money); void Print()printf(&q
28、uot;total:%lfn",total); ;main()Payroll p10;p0.GetTime();p0.GetTotalMoney();p0.Print();運(yùn)行結(jié)果:四、實(shí)驗(yàn)體會對多文件有了更深了解,能夠熟練的掌握多文件的使用方法。學(xué)習(xí)了C+的構(gòu)造函數(shù),以及拷貝構(gòu)造函數(shù),接觸友元組合類等新知識,需要課后多加練習(xí)。實(shí)驗(yàn)項(xiàng)目名稱: 靜態(tài)成員與友元 實(shí)驗(yàn)學(xué)時(shí): 3 同組學(xué)生姓名: 無 實(shí)驗(yàn)地點(diǎn): A107 實(shí)驗(yàn)日期: 10.09 實(shí)驗(yàn)成績: 批改教師: 吳剛 批改時(shí)間: 一、實(shí)驗(yàn)?zāi)康暮鸵?.掌握類中靜態(tài)成員的定義的方法。2.掌握靜態(tài)數(shù)據(jù)成員初始化的方法。3.掌握靜態(tài)數(shù)據(jù)成
29、員和數(shù)據(jù)函數(shù)成員的訪問和使用方法。4.掌握友元函數(shù)的定義和使用方法。5.了解友元類的使用方法。二、實(shí)驗(yàn)設(shè)備和環(huán)境1.計(jì)算機(jī)每人一臺。2.安裝WindowsXP或者以上版本操作系統(tǒng)。3.安裝Visual C+6.0或者Visual C+2005以上版本。三、實(shí)驗(yàn)內(nèi)容及步驟1.任意輸入10個(gè)數(shù),計(jì)算器總和及平均值。設(shè)計(jì)程序測試該功能(要求用類、靜態(tài)友員實(shí)現(xiàn))。程序:#include<iostream>#include<string>using namespace std;class numberint No;int figure;static double sum; sta
30、tic int sumpeople;public:number(int n,int ifigure)No=n;figure=ifigure;sum+=figure;sumpeople+;static int Sum()return sum;static double Average()return sum/sumpeople;int number:sumpeople=0;double number:sum=0;void main()int i,j;cout<<"The ten number is:"<<endl;for(i=1;i<=10;i+
31、)cin>>j;number(i,j);cout<<"The sum is:"<<number:Sum()<<endl;cout<<"The average is:"<<number:Average()<<endl;運(yùn)行結(jié)果: 2.求兩點(diǎn)之間的距離(要求定義點(diǎn)Point類,并用友員函數(shù)實(shí)現(xiàn))。程序:#include <iostream>#include <cmath>using namespace std;class Pointdouble x,y
32、;public:Point(double m,double n):x(m),y(n)friend double Distance(Point& px,Point& py);double Distance(Point& px,Point& py)double d;d=sqrt(px.x-py.x)*(px.x-py.x)+(px.y-py.y)*(px.y-py.y);return d;void main()Point p1,p2;int a1,b1,a2,b2;cin>>a1>>b1>>a2>>b2;p1=Poin
33、t(a1,b1);p2=Point(a2,b2);cout<<"the distance is"<<Distance(p1,p2)<<endl;運(yùn)行結(jié)果:3.定義一個(gè)經(jīng)理類Manager,其成員數(shù)據(jù)包括編號id,姓名name和年齡age,均聲明為private訪問屬性。再定義一個(gè)員工類Employee,其成員數(shù)據(jù)及訪問屬性與經(jīng)理類相同。將Manager類聲明為Employee類的友員函數(shù),并在Manager類中定義一個(gè)函數(shù)訪問Employee類的私有數(shù)據(jù)成員并進(jìn)行輸出。程序:#include<stdlib.h>#include
34、<iostream>using namespace std;class Employeefriend class Manager; private: int id; char *n; int age;public:Employee()id = 1;n = "abc"age = 20;class Managerprivate:int id;char name10;int age;public:Manager()Employee e; void Print(Employee &e) cout<<e.id<<endl;cout<&
35、lt;e.n<<endl;cout<<e.age<<endl; ;void main()Employee e;Manager m;m.Print(e);system("pause"); 運(yùn)行結(jié)果:四、實(shí)驗(yàn)體會懂得了靜態(tài)成員的使用、靜態(tài)成員的作用域和使用方法。理解并掌握友元的使用。實(shí)驗(yàn)項(xiàng)目名稱: 繼承與派生 實(shí)驗(yàn)學(xué)時(shí): 3 同組學(xué)生姓名: 無 實(shí)驗(yàn)地點(diǎn): A107 實(shí)驗(yàn)日期: 10.16 實(shí)驗(yàn)成績: 批改教師: 吳剛 批改時(shí)間: 一、實(shí)驗(yàn)?zāi)康暮鸵?.掌握利用單繼承和多重繼承的方式定義派生類的方法。2.理解在各種繼承方式下構(gòu)造函數(shù)和析構(gòu)函數(shù)
36、的執(zhí)行順序。3.理解和掌握public、protected、private對基類成員的訪問機(jī)制。4.理解虛基類的概念,引入虛基類的目的和作用。5. 理解在虛基類時(shí)的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序。二、實(shí)驗(yàn)設(shè)備和環(huán)境1.計(jì)算機(jī)每人一臺。2.安裝WindowsXP或者以上版本操作系統(tǒng)。3.安裝Visual C+6.0或者Visual C+2005以上版本。三、實(shí)驗(yàn)內(nèi)容及步驟1.分析以下程序,寫出運(yùn)行結(jié)果。#include<iostream>using namespace std;class Basepublic:Base() cout<<"執(zhí)行基類構(gòu)造函數(shù)"
37、;<<endl;Base() cout<<"執(zhí)行基類折構(gòu)函數(shù)"<<endl;class Derive:public Basepublic:Derive() cout<<"執(zhí)行派生類構(gòu)造函數(shù)"<<endl;Derive() cout<<"執(zhí)行派生類折構(gòu)函數(shù)"<<endl;void main()Derive d;運(yùn)行結(jié)果:2. 分析以下程序,寫出運(yùn)行結(jié)果。#include<iostream.h>calss Basepublic: Base()c
38、out<<”基類構(gòu)造函數(shù)”<<endl;Base()cout<<”基類析構(gòu)函數(shù)”<<endl;class Derive:public Base public:Derive()cout<<”派生類構(gòu)造函數(shù)”<<endl;Derive()cout<<”派生類析構(gòu)函數(shù)”<<endl;;void main()Derive *p=new Derive;Delete p;運(yùn)行結(jié)果:3.求一個(gè)三角形物體的面積,同時(shí)求一個(gè)圓形物體的面積(要求使用繼承)。#include <iostream>#inclu
39、de <cmath>using namespace std;class Objectpublic:void getData()cout<<"Input x,y,z:"cin>>x>>y>>z;protected:int x,y,z;class Triangle:public Objectpublic:void getData()cout<<"triangle:"Object:getData();double Area()double d=(x+y+z)/2;double s=sqrt
40、(d*(d-x)*(d-y)*(d-z);return s;class Circle:public Objectpublic:void getData()cout<<"circle:(only radius=x)"<<endl;Object:getData();double Area()double s=x*x*3.1415;return s;void main()Triangle t;t.getData();cout<<"The results:"<<t.Area()<<endl;Circle
41、 c;c.getData();cout<<"The results:"<<c.Area()<<endl;運(yùn)行結(jié)果:4.一個(gè)三口之家,大家知道父親會開車,母親會唱歌。但其父親還會修電視機(jī),只有家里人知道。小孩既會開車又會唱歌,甚至也會修電視機(jī)。母親瞞著任何人在外面做小工以補(bǔ)貼家用。此外小孩還會打乒乓球。編寫程序輸出者三口之家一天從事的活動:先是父親出去開車,然后母親出去工作(唱歌),母親下班后去做兩個(gè)小時(shí)的小工。小孩在俱樂部打球,在父親回家后,開車玩,后又高興地唱歌。晚上,小孩和父親一起修電視機(jī)。程序:#include<iostrea
42、m>using namespace std;class father protected:void repairTV()cout<<"Repairing TV."<<endl; public: void drive ()cout<<"Father is driving."<<endl; friend main();class mother void dootherJob()cout<<"Mother is doing other job!"public: virtual
43、 void sing()cout<<"Mother is singing songs."<<endl; friend main();class child:public father,public motherpublic: void drive() cout<<"Child is driving ."<<endl; void sing()cout<<"Child is singing."<<endl; void repair()cout<<"
44、;Child is repairing tv."<<endl; void playingPingPang()cout<<"Child is playing pingpang."int main() cout<<"main: "<<endl; father f; mother m; child c; f.drive(); m.sing(); m.dootherJob(); c.playingPingPang(); c.drive(); c.sing(); f.repairTV(); c.repair
45、(); return 0;運(yùn)行結(jié)果:5.設(shè)計(jì)定義一個(gè)哺乳動物類Mammal,再由此派生出狗類Dog和豬類Pig,從狗類Dog和豬類Pig又派生出PigDog類。定義一個(gè)PigDog類的對象,觀察基類與各派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。程序:#include <iostream>using namespace std;class Mammalpublic:Mammal()cout<<"調(diào)用mammal構(gòu)造函數(shù)"<<endl;Mammal()cout<<"調(diào)用mammal析構(gòu)函數(shù)"<<endl
46、;class Dog:public Mammalpublic:Dog()cout<<"調(diào)用dog構(gòu)造函數(shù)"<<endl;Dog()cout<<"調(diào)用dog析構(gòu)函數(shù)"<<endl;class Pig:public Mammalpublic:Pig()cout<<"調(diào)用pig構(gòu)造函數(shù)"<<endl;Pig()cout<<"調(diào)用pig析構(gòu)函數(shù)"<<endl;class PigDog:public Dog,public Pigp
47、ublic:PigDog()cout<<"調(diào)用pigdog構(gòu)造函數(shù)"<<endl;PigDog()cout<<"調(diào)用pigdog析構(gòu)函數(shù)"<<endl;void main()/* Mammal m;*/Dog d;Pig p;PigDog pd;運(yùn)行結(jié)果:四、實(shí)驗(yàn)體會本次實(shí)驗(yàn)學(xué)習(xí)了繼承和派生,對于其使用以及理解有點(diǎn)困難。實(shí)驗(yàn)項(xiàng)目名稱: 多態(tài)性 實(shí)驗(yàn)學(xué)時(shí): 3 同組學(xué)生姓名: 無 實(shí)驗(yàn)地點(diǎn): A107 實(shí)驗(yàn)日期: 10.23 實(shí)驗(yàn)成績: 批改教師: 吳剛 批改時(shí)間: 一、實(shí)驗(yàn)?zāi)康暮鸵?.加深理解繼承和多繼承
48、的概念、應(yīng)用等。2.掌握虛函數(shù)的定義方法,以及在實(shí)現(xiàn)多態(tài)性中的作用;理解掌握實(shí)現(xiàn)動態(tài)多態(tài)性的前提條件,理解靜態(tài)多態(tài)性和動態(tài)多態(tài)性的區(qū)別。3.理解運(yùn)算符重載的概念和實(shí)質(zhì);掌握預(yù)案算重載函數(shù)的定義方法;掌握運(yùn)算符重載為類的成員函數(shù)和友元函數(shù)的方法;掌握幾種常用運(yùn)算符的重載,用來解決函數(shù)。二、實(shí)驗(yàn)設(shè)備和環(huán)境1.計(jì)算機(jī)每人一臺。2.安裝WindowsXP或者以上版本操作系統(tǒng)。3.安裝Visual C+6.0或者Visual C+2005以上版本。三、實(shí)驗(yàn)內(nèi)容及步驟1.利用虛函數(shù)實(shí)現(xiàn)的多態(tài)性來求四種幾何圖形的面積。這四種幾何圖形是:三角形、矩形、正方形和圓。程序:#include <iostrea
49、m>#define PI 3.1415926using namespace std;class Areadouble x,y;public:Area(double x,double y,int z):x(x),y(y)if(z=0)cout<<"三角形的面積為:"<<x*y/2<<endl;else if(z=1)cout<<"矩形面積為:"<<x*y<<endl;Area(double x,int z):x(x)if(z=0)cout<<"正方形的面積為
50、:"<<x*x<<endl;else if(z=1)cout<<"圓的面積為:"<<PI*x*x<<endl;void main()Area a(3,4,0);Area b(3,4,1);Area c(5,0);Area d(5,1);運(yùn)行結(jié)果:2.聲明Point類,有坐標(biāo)-x,-y兩個(gè)成員變量;對Point類重載“+”(自增)、“”(自減)運(yùn)算符,實(shí)現(xiàn)對坐標(biāo)值的改變。程序:#include <iostream>using namespace std;class Pointdouble _x,
51、_y;public:Point(Point &point)_x=point._x;_y=point._y;Point(double x,double y):_x(x),_y(y)void operator +()cout<<"原來的值為:"<<_x<<endl;_x=_x+2;cout<<"改過后的值為:"<<_x<<endl;double getx()return _x;double gety()return _y;void main()double x,y;Point p
52、(1,2);p.operator +();運(yùn)行結(jié)果:3.定義一個(gè)復(fù)數(shù)類,通過重載運(yùn)算符:*,/,直接實(shí)現(xiàn)兩個(gè)復(fù)數(shù)之間的乘除運(yùn)算。編寫一個(gè)完整的程序,測試重載運(yùn)算符的正確性。要求乘法“*”用友元函數(shù)實(shí)現(xiàn)重載,除法“/”用成員函數(shù)實(shí)現(xiàn)重載。程序:#include <iostream>using namespace std;class Complexdouble r,v;public:Complex(Complex &c)r=c.r;v=c.v;Complex(double r=0,double v=0):r(r),v(v)void operator =(Complex c);v
53、oid show()cout<<r<<(v>=0?"+":"-")<<v<<"i"<<endl;friend Complex operator +(Complex a,Complex b);friend Complex operator *(Complex a,double r);Complex operator /(Complex a);double getr()return r;double fetv()return v;void Complex:operator
54、=(Complex c)r=c.r;v=c.v;Complex operator *(Complex &a,Complex &b)double ar=a.getr();double av=a.fetv();double br=b.getr();double bv=b.fetv();Complex c(ar*br-av*bv,av+bv);return c;Complex operator *(Complex a,double r)double ar=a.getr();double av=a.fetv();Complex c(ar+r,av);cout<<"
55、*的結(jié)果為:"return c;Complex Complex:operator /(Complex a)Complexc(a.r*r-a.v*(-v)/(a.r*a.r+a.v*(-a.v),(a.v)/(a.r*a.r+a.v*(-a.v);cout<<"/的結(jié)果為:"return c;void main()Complex a(2,2),b(3,4),test;test=a*b;test.show();test=a/b;test.show();運(yùn)行結(jié)果:4.在第3題基礎(chǔ)上,增加重載函數(shù)的加法和減法運(yùn)算符的功能,實(shí)現(xiàn)兩個(gè)復(fù)數(shù)的加法,一個(gè)復(fù)數(shù)和一個(gè)實(shí)數(shù)的加法;兩個(gè)復(fù)數(shù)的減法,一個(gè)復(fù)數(shù)與一個(gè)實(shí)數(shù)的減法。用成員函數(shù)實(shí)現(xiàn)加法運(yùn)算符的重載,用友元函數(shù)實(shí)現(xiàn)減法運(yùn)算符的重載。 要求:自己設(shè)計(jì)主函數(shù),完成程序的調(diào)試工作。 程序:#include <iostream>using namespace std;class Complexdouble r,v;public:Complex(Complex &
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)書語文
- 課題申報(bào)書咋寫
- 微課題研究申報(bào)書
- 借款合同范本員工向公司
- 醫(yī)學(xué)課題申報(bào)書 范文
- 學(xué)生曠課課題申報(bào)書
- 業(yè)務(wù)員用車合同范例
- 前后院老屋出租合同范本
- 合同范本文壁紙
- 創(chuàng)新專業(yè)研究課題申報(bào)書
- JGJ162-2014建筑施工模板安全技術(shù)規(guī)范-20211102195200
- 現(xiàn)代家政導(dǎo)論-課件 2.2家庭制度認(rèn)知
- 2024年天津市專業(yè)技術(shù)人員繼續(xù)教育網(wǎng)公需課答案
- 《網(wǎng)絡(luò)營銷》試題及答案2
- 重度哮喘診斷與處理中國專家共識(2024版)解讀
- 譯林版-小學(xué)五年級下冊-繪本閱讀-Home-Is-Best-課件
- 社會變革中的民事訴訟讀書筆記
- 甲狀腺術(shù)后病人護(hù)理查房
- 《創(chuàng)傷失血性休克中國急診專家共識(2023)》解讀課件
- 2024年全國體育單招英語考卷和答案
- 河北省邯鄲市磁縣2024屆中考數(shù)學(xué)模試卷含解析
評論
0/150
提交評論