版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上1. 實(shí)現(xiàn)一個(gè)大小固定的整型數(shù)據(jù)元素集合及其相應(yīng)操作(元素的添加、刪除;判斷兩個(gè)集合是否相等;判斷一個(gè)數(shù)是否為集合中的元素;交集;并集)。P76.列3.24#include const maxCard = 16; / 集合中元素個(gè)數(shù)的最大值,默認(rèn)為int型enum ErrCode noErr, overflow; / 錯(cuò)誤代碼enum Bool False, True; / Bool類型定義class Set / 定義集合類 int elemsmaxCard; / 存儲(chǔ)元素的數(shù)組 int card; / 集合中元素的個(gè)數(shù)public: void EmptySet( )
2、card = 0; Bool Member(int); / 判斷一個(gè)數(shù)是否為集合中的元素 ErrCode AddElem(int); / 向集合中添加元素 void RmvElem(int); / 刪除集合中的元素 void Copy(Set *); / 把當(dāng)前集合拷貝到形參指針指向的集合中 Bool Equal(Set *); / 判斷兩個(gè)集合是否相等 void Print( ); void Intersect(Set *, Set *); / 交集 ErrCode Union(Set *, Set *); / 并集;Bool Set:Member(int elem)for(int i=0;
3、icard;+i)if(elemsi = elem)return True;return False;ErrCode Set:AddElem(int elem)if(Member(elem)return noErr;if(card maxCard)elemscard+ = elem;return noErr; return overflow;void Set:RmvElem(int elem)for(int i = 0; icard; +i)if(elemsi = elem)for(;icard-1;+i)elemsi = elemsi+1;-card; return;void Set:Cop
4、y(Set *set)for(int i = 0; i elemsi = elemsi;set-card = card;Bool Set:Equal(Set *set)if(card != set-card)return False; for(int i = 0; i Member(elemsi) return False;return True;void Set:Print( )cout;for(int i = 0; i card; +i)cout elemsi ;cout*resres-card = 0;for(int i = 0; i card; +i)for(int j = 0; j
5、card; +j)if(elemsi = set-elemsj)res-elemsres-card+ = elemsi;break;ErrCode Set:Union(Set *set,Set *res) / 并集:*set*this-*resset-Copy(res);for(int i = 0; i AddElem(elemsi) = overflow)return overflow; return noErr;/ 下面是測試用的主程序void main( )Set s1, s2, s3;s1.EmptySet( );s2.EmptySet( );s3.EmptySet( );s1.Add
6、Elem(10);s1.AddElem(20);s1.AddElem(30); s1.AddElem(40);s2.AddElem(30);s2.AddElem(50);s2.AddElem(10); s2.AddElem(60);couts1=; s1.Print( );couts2=;s2.Print( );s2.RmvElem(50);couts2-50=;s2.Print( );if(s1.Member(20)cout20 is in s1n;s1.Intersect(&s2,&s3);couts1 intsec s2 =;s3.Print( );s1.Union(&s2,&s3);c
7、outs1 union s2 =;s3.Print( );if(!s1.Equal(&s2)couts1!=s2n;2. 實(shí)現(xiàn)一個(gè)大小可變的整型數(shù)據(jù)元素集合,集合可存儲(chǔ)的數(shù)據(jù)元素個(gè)數(shù)在對(duì)象構(gòu)造時(shí)給定,由構(gòu)造函數(shù)為數(shù)據(jù)元素分配存儲(chǔ)空間,在對(duì)象被釋放時(shí)由析構(gòu)函數(shù)釋放存儲(chǔ)空間。P78 .3.25#include const maxCard=16; / 集合中元素個(gè)數(shù)的缺省最大值enum ErrCode noErr, overflow; / 錯(cuò)誤代碼enum Bool False, True; / Bool類型定義class Set int size; / 元素的最大個(gè)數(shù) int *elems; /
8、存儲(chǔ)元素的數(shù)組 int card; / 集合中元素的個(gè)數(shù) public:Set(int sz=maxCard)card=0;size=sz;elems=new intsize;Set( )delete elems;Bool Member(int);ErrCode AddElem(int);void RmvElem(int);void Copy(Set *);Bool Equal(Set *);void Print( );void Intersect(Set *, Set *);ErrCode Union(Set *, Set *);Bool Set:Member(int elem)for(in
9、t i=0;icard;+i)if(elemsi=elem)return True;return False;ErrCode Set:AddElem(int elem)if(Member(elem)return noErr;if(cardsize)elemscard+=elem; return noErr; return overflow;void Set:RmvElem(int elem)for(int i=0;icard;+i)if(elemsi=elem)for(;isizeelems;set-elems = new intsize;set-size = size;for(int i=0
10、;ielemsi=elemsi;set-card=card;Bool Set:Equal(Set *set)if(card!=set-card)return False; for(int i=0;iMember(elemsi)return False;return True;void Set:Print( )cout;for(int i=0;icard-1;+i)coutelemsi0)coutelemscard-1;coutsizeelems; res-elems = new intsize; res-size = size;res-card=0;for(int i=0;icard;+i)f
11、or(int j=0;jcard;+j)if(elemsi=set-elemsj)res-elemsres-card+=elemsi;break;ErrCode Set:Union(Set *set, Set *res)if(res-sizesize)delete res-elems;res-elems = new intsize+set-size;res-size = size+set-size;set-Copy(res);for(int i=0;iAddElem(elemsi)=overflow)return overflow;return noErr;void main( )Set s1
12、, s2, s3;s1.AddElem(10);s1.AddElem(20);s1.AddElem(30); s1.AddElem(40);s2.AddElem(30);s2.AddElem(50);s2.AddElem(10); s2.AddElem(60);couts1=; s1.Print( );couts2=;s2.Print( );s2.RmvElem(50);couts2-50=;s2.Print( );if(s1.Member(20)cout20 is in s1n;s1.Intersect(&s2,&s3);couts1 intsec s2 =;s3.Print( );s1.U
13、nion(&s2,&s3);couts1 union s2 =;s3.Print( );if(!s1.Equal(&s2)couts1!=s2n;3. 設(shè)計(jì)一個(gè)學(xué)生類student,它具有的私有數(shù)據(jù)成員是:注冊號(hào)、姓名、數(shù)學(xué)成績、英語成績、計(jì)算機(jī)成績;具有的公有成員函數(shù)是:求三門課程總成績的函數(shù)sum();求三門課平均成績average();顯示學(xué)生數(shù)據(jù)信息的函數(shù)print();獲取學(xué)生注冊號(hào)的函數(shù)get_reg_num;設(shè)置學(xué)生數(shù)據(jù)信息的函數(shù)set_stu_inf()。P81。6編制主函數(shù),說明一個(gè)student類對(duì)象的數(shù)組并進(jìn)行全班學(xué)生信息的輸入與設(shè)置,而后求出每一個(gè)學(xué)生的總成績、平均成績
14、、全班學(xué)生總成績最高分、全班學(xué)生總平均分,并在輸入一個(gè)注冊號(hào)后,輸出該學(xué)生有關(guān)的全部數(shù)據(jù)信息。#include#includeusing namespace std;class Student private: int num; char name10; float math; float english; float computer;public:void set_stu_inf(int n,char *ch,float m,float e,float c)num=n; strcpy(name,ch); math=m; english=e; computer=c; float sum()r
15、eturn (math+english+computer);float average()return (math+english+computer)/3;int get_reg_num()return num;void print()cout學(xué)號(hào):numendl姓名:nameendl數(shù)學(xué):mathendl英語:englishendl計(jì)算機(jī):computerendl總分:sum()endl平均分:average()endl; int main() Student stu50;int i,q,a,z,x,max=0,aver=0; / i為循環(huán)變量,q:學(xué)號(hào);a:數(shù)學(xué)成績;/ z:英語成績;x:
16、計(jì)算機(jī)成績int count = 0; /表示學(xué)生人數(shù)char* we=new char10;/ 輸入學(xué)生信息for(;)cout請輸入學(xué)生的學(xué)號(hào)、姓名、數(shù)學(xué)成績、英語成績、計(jì)算機(jī)成績:(若輸入的學(xué)號(hào)為0則表示退出) qweazx;if (q =0 )break;stucount+.set_stu_inf(q,we,a,z,x);if(maxa+z+x);else max=a+z+x;aver+=(a+z+x);/ 輸出所有學(xué)生信息cout學(xué)生信息為:endlendl;for( i = 0; i count; i+)stui.print();coutendl;cout全班學(xué)生總成績最高分為ma
17、xendl全班學(xué)生總平均分為aver/3endlendl;cout請輸入要查的學(xué)生的學(xué)號(hào):q;for( i = 0; i count; i+)if (q=stui.get_reg_num()cout此學(xué)生信息為:endl;stui.print();break;if (i=count)cout查無此人endl;return 0;4. 定義復(fù)數(shù)類complex,使用友元函數(shù),完成復(fù)數(shù)的加法、減法、乘數(shù)運(yùn)算,以及復(fù)數(shù)的輸出。P95. 4.8#includeclass Complexdouble real;double image;public:Complex(double r = 0, double
18、 i = 0)real = r; image = i;friend void inputcomplex(Complex &comp);friend Complex addcomplex(Complex &c1, Complex &c2); friend Complex subcomplex(Complex &c1, Complex &c2);friend Complex mulcomplex(Complex &c1, Complex &c2);friend void outputcomplex(Complex &comp);void inputcomplex(Complex &comp)cin
19、 comp.real comp.image;Complex addcomplex(Complex &c1, Complex &c2)Complex c;c.real = c1.real + c2.real;c.image = c1.image + c2.image;return c;Complex subcomplex(Complex &c1, Complex &c2)Complex c;c.real = c1.real - c2.real;c.image = c1.image - c2.image;return c;Complex mulcomplex(Complex &c1, Comple
20、x &c2)Complex c;c.real = c1.real * c2.real - c1.image * c2.image;c.image = c1.real * c2.image + c1.image * c2.real;return c;void outputcomplex(Complex &comp)cout ( comp.real , comp.image );void main()Complex c1,c2,result;cout請輸入第一個(gè)復(fù)數(shù)的實(shí)部和虛部:endl;inputcomplex(c1);cout請輸入第二個(gè)復(fù)數(shù)的實(shí)部和虛部:endl;inputcomplex(c
21、2);result=addcomplex(c1,c2);outputcomplex(c1);cout+;outputcomplex(c2);cout=;outputcomplex(result);coutn-endl;result=subcomplex(c1,c2);outputcomplex(c1);cout-;outputcomplex(c2);cout=;outputcomplex(result);coutn-endl;result=mulcomplex(c1,c2);outputcomplex(c1);cout*;outputcomplex(c2);cout=;outputcomple
22、x(result);coutendl;5. 某單位所有員工根據(jù)領(lǐng)取薪金的方式分為如下幾類:時(shí)薪工(hourlyworker)、計(jì)件工(pieceworker)、經(jīng)理(manager)、傭金工(commissionworker)。時(shí)薪工按工作的小時(shí)支付工資,對(duì)于每周超過50小時(shí)的加班時(shí)間,按照附加50%薪水支付工資。按生產(chǎn)的每件產(chǎn)品給計(jì)件工支付固定工資,假定該工人僅制造一種產(chǎn)品。經(jīng)理每周得到固定的工資。傭金工每周得到少許的固定保底工資,加上該工人在一周內(nèi)總銷售的固定百分比。試編制一個(gè)程序來實(shí)現(xiàn)該單位的所有員工類,并加以測試。P125 5.15#include#include class empl
23、oyee / 雇員類protected:char name10; / 姓名char emp_id8; / 職工號(hào)double salary; / 薪金數(shù)public: void setinfo(char *empname,int empsex,char*empid) / 設(shè)置雇員的基本信息strcpy(name,empname);strcpy(emp_id,empid);void getinfo(char*empname,char*empid) / 取得雇員的基本信息strcpy(empname,name);strcpy(empid,emp_id);double getsalary() / 取
24、得所應(yīng)得的總薪金數(shù)return salary;class hourlyworker:public employee / 時(shí)薪工protected:int hours; / 工作的小時(shí)數(shù)double perhourpay; / 每小時(shí)應(yīng)得的報(bào)酬public:hourlyworker()hours=0;perhourpay=15.6;int gethours() / 取得某人工作的小時(shí)數(shù)return hours;void sethours(int h) / 設(shè)置某人工作的小時(shí)數(shù)hours=h;double getperhourpay() / 取得每小時(shí)應(yīng)得的報(bào)酬return perhourpay;
25、void setperhourpay(double pay) / 設(shè)置每小時(shí)應(yīng)得的報(bào)酬perhourpay=pay;void computepay() / 計(jì)算工資if(hours=40) salary=perhourpay*hours;elsesalary=perhourpay*40+(hours-40)*1.5*perhourpay;class pieceworker:public employee / 計(jì)件工protected:int pieces; / 每周所生產(chǎn)的工件數(shù)double perpiecepay; / 每個(gè)工件所應(yīng)得的工資數(shù)public:pieceworker()piece
26、s=0;perpiecepay=26.8;int getpieces()return pieces;void setpieces(int p) / 設(shè)置生產(chǎn)的工件總數(shù)pieces=p;double getperpiecepay()return perpiecepay;void setperpiecepay(double ppp) perpiecepay=ppp;void computepay() salary=pieces*perpiecepay;class manager:public employee / 經(jīng)理類public:void setsalary(double s) / 設(shè)置經(jīng)理的
27、工資數(shù)salary=s;class commissionworker:public employee / 傭金工類protected:double basesalary; / 保底工資double total; / 一周內(nèi)的總銷售額double percent; / 提成的額度public:commissionworker()basesalary=500;total=0;percent=0.01;double getbase() return basesalary;void setbase(double base) basesalary=base;double gettotal() retur
28、n total;void settotal(double t) total =t;double getpercent() return percent;double setpercent(double p) percent=p;void computepay() salary=basesalary+total*percent;void main()char name10,emp_id9;hourlyworker hworker; / 小時(shí)工hworker.setinfo(John,0,001);hworker.sethours(65);hworker.getinfo(name,emp_id);
29、putepay();couthourlyworker names id is: emp_id and salary is:hworker.getsalary()endl;pieceworker pworker; / 計(jì)件工pworker.setinfo(Mark,0,002);pworker.setpieces(100);putepay();pworker.getinfo(name,emp_id);coutpieceworker names id is: emp_id and salary is:pworker.getsalary()endl;commissionworker cworker;
30、 / 傭金工cworker.settotal(234.6);cworker.setinfo(Jane,0,003);putepay();cworker.getinfo(name,emp_id);coutcommissionworker names id is: emp_id and salary is:cworker.getsalary()endl;manager mana;mana.setinfo(Mike,1,004);mana.setsalary(3500);mana.getinfo(name,emp_id);coutmanager names id is: emp_id and sal
31、ary is:mana.getsalary()endl;6. 考慮大學(xué)的學(xué)生情況,試?yán)脝我焕^承來實(shí)現(xiàn)學(xué)生和畢業(yè)生兩個(gè)類,設(shè)計(jì)相關(guān)的數(shù)據(jù)成員及函數(shù),編寫程序?qū)^承情況進(jìn)行測試。P133. 11 實(shí)P57提示:作為學(xué)生一定有學(xué)號(hào)、姓名、性別、學(xué)校名稱及入學(xué)時(shí)間等基本信息,而畢業(yè)生除了這些信息外,還應(yīng)有畢業(yè)時(shí)間、所獲學(xué)位的信息,可根據(jù)這些內(nèi)容設(shè)計(jì)類的數(shù)據(jù)成員,也可加入一些其他信息,除了設(shè)計(jì)對(duì)數(shù)據(jù)進(jìn)行相應(yīng)操作的成員函數(shù)外,還要考慮到成員類型、繼承模式,并在main()函數(shù)中進(jìn)行相應(yīng)測試??稍O(shè)計(jì)多種繼承模式來測試?yán)^承的屬性。#include#includeusing namespace std;cla
32、ss Student/ 定義基類Studentpublic: / 公有函數(shù)成員Student(int n,char *na,int g):number(n),grade(g)strcpy(name,na);int getNumber()return number;char * getName()return name;int getGrade()return grade;void display()cout學(xué)號(hào):numberendl姓名:nameendl年級(jí):gradeendl;private:/ 私有數(shù)據(jù)成員 int number;/ 學(xué)號(hào) char name20;/ 姓名 int grad
33、e;/ 年級(jí);class Graduate:public Student /定義畢業(yè)生類char designSubject20;public:Graduate(int n,char *na,char * deSub,int g=4):Student(n,na,g) strcpy(designSubject,deSub);void display()Student:display();cout設(shè)計(jì)題目:designSubjectendl;int main()/創(chuàng)建對(duì)象Student li(2,Li Ming,3);Graduate zhang(3,Zhang Gang,學(xué)生成績管理系統(tǒng));/
34、顯示對(duì)象的相關(guān)信息li.display();cout endl- endl;zhang.display();return 0;7 定義一個(gè)哺乳動(dòng)物類,再由此派生出人類、狗類和貓類,這些類中均有speak()函數(shù),觀察在調(diào)用過程中,到底使用了哪一個(gè)類的speak()函數(shù)。P133. 12#include#includeusing namespace std;class Animalfloat weight;public:void speak()void setWeight(float wt)weight = wt;float getWeight()return weight;class Huma
35、n:public Animalpublic:void speak()cout說話endl;class Cat:public Animalpublic:void speak()cout喵喵endl;class Dog:public Animalpublic:void speak()cout汪汪endl;int main()/ 定義三個(gè)對(duì)象Human hm;Cat cat;Dog dog;/ 調(diào)用不同類的speak函數(shù)cout人:;hm.speak();cout貓:;cat.speak();cout狗:;dog.speak();return 0;8 設(shè)計(jì)一個(gè)能細(xì)分為矩形、三角形、圓形和橢圓形的圖形
36、類。使用繼承將這些圖形分類,找出能作為基類部分的共同特征(如寬、高、中心點(diǎn)等)和方法(如初始法、求面積等),并看看這些圖形能否進(jìn)一步劃分為子類。P133. 10#includeusing namespace std;class Figure/ 定義基類圖形類public:/ 公有函數(shù)成員 Figure(int wid)width = wid; float area() int getWidth()return width;private:/ 私有數(shù)據(jù)成員 int width;/ 寬度或半徑;class Rectangle:public Figure / 定義矩形類int height;publ
37、ic:Rectangle(int wid, int hei):Figure(wid)height = hei; float area()return getWidth() * height;class Triangle:public Figure / 定義三角形類int height;public:Triangle(int wid, int hei):Figure(wid)height = hei;float area()return 1.0/2* getWidth() * height;class Circle:public Figure / 定義圓類public:Circle(int wi
38、d):Figure(wid)float area()return 3.14 * getWidth() * getWidth();int main()Rectangle rect(5,4);Triangle tri(5,4);Circle cir(5);cout矩形的面積是:rect.area()endl三角形的面積是:tri.area()endl圓的面積是:cir.area()endl;return 0;9.設(shè)計(jì)一個(gè)基類animal和它的派生類tiger、sheep,實(shí)現(xiàn)虛函數(shù)。提示:可自行定義這些類的成員變量,但animal基類中應(yīng)有動(dòng)物性別的成員變量,但要說明每種動(dòng)物的叫soar()及吃e
39、at()的成員函數(shù),可用cout輸出來表示。要求每個(gè)派生類生成兩個(gè)對(duì)象,打亂次序存于一個(gè)數(shù)組中,然后用循環(huán)程序訪問其叫與吃的成員函數(shù),必須用到虛函數(shù)。P173 .9#includeusing namespace std;class animalprotected:char sex;public:virtual void soar()=0;virtual void eat()=0;class tiger:public animalpublic:tiger(char s=f)sex = s;void soar()couttiger 吼endl;void eat()couttiger吃肉endl;c
40、lass sheep:public animalpublic:sheep(char s=f)sex = s;void soar()coutsheep: 咩endl;void eat()coutsheep吃草endl;int main()tiger t1,t2;sheep s1,s2;animal *array4 =&t1,&s1,&t2, &s2;for(int i = 0; i eat();arrayi-soar();return 0;10.有三角形、正方形和圓形三種圖形,求它們各自的面積??梢詮闹谐橄蟪鲆粋€(gè)基類,在基類中聲明一個(gè)虛函數(shù),用來求面積,并利用單界面、多實(shí)現(xiàn)版本設(shè)計(jì)各個(gè)圖形求面積
41、的方法。P173. 10#includeusing namespace std;class shape / 抽象類的定義public:virtual float area()=0;class triangle:public shape / 三角形類protected: float h,w;public:triangle(float hh,float ww)h=hh;w=ww;float area()return h*w*0.5;class rectangle:public triangle / 矩形類public:rectangle(float h,float w):triangle(h,w)
42、float area()return h*w;class circle:public shape / 圓類private: float radius;public:circle(float r)radius=r;float area()return radius*radius*3.14;int main()shape*s4; / 指針數(shù)組s0=new triangle(3,4);s1=new rectangle(2,4);s2=new circle(5);cout三角形、矩形和圓的面積分別為:endl;for (int i=0;i3;i+)coutarea()t;coutendl;return 0;1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 虛擬現(xiàn)實(shí)藝術(shù)表演-洞察分析
- 化工普通員工個(gè)人工作總結(jié)(7篇)
- 單位消防滅火演練方案(6篇)
- 消防安全監(jiān)管平臺(tái)建設(shè)-洞察分析
- 寫給對(duì)象的道歉信500字(19篇)
- 其他特色銷售業(yè)績總結(jié)
- 以創(chuàng)新為核心的學(xué)生自主學(xué)習(xí)能力培養(yǎng)模式探索
- 醫(yī)學(xué)與小學(xué)科學(xué)實(shí)驗(yàn)教學(xué)的結(jié)合點(diǎn)
- 關(guān)于數(shù)字科技助力校園飲料零售市場轉(zhuǎn)型升級(jí)的探索和研究報(bào)告
- 農(nóng)業(yè)生產(chǎn)過程中的科技與創(chuàng)新案例分析
- 個(gè)案SOAP表-催眠案例記錄表
- 肌肉注射操作評(píng)分標(biāo)準(zhǔn)
- 萬用表校準(zhǔn)報(bào)告
- 2022年風(fēng)力發(fā)電運(yùn)行檢修技能理論題庫(含答案)
- 2022年WET工藝介紹
- 《熱泵式污泥干化機(jī)組》
- 萬m3h合成氨原料氣脫碳工藝設(shè)計(jì)畢業(yè)
- 礦產(chǎn)資源儲(chǔ)量報(bào)告及評(píng)審中的若干問題--標(biāo)準(zhǔn)
- 乙烯飽和蒸汽壓與溫度的關(guān)系
- TX-1C單片機(jī)實(shí)驗(yàn)板使用手冊
- 球閥設(shè)計(jì)計(jì)算EXCEL
評(píng)論
0/150
提交評(píng)論