C程序設(shè)計(jì)與應(yīng)用基礎(chǔ)第五章多態(tài)性習(xí)題答案_第1頁(yè)
C程序設(shè)計(jì)與應(yīng)用基礎(chǔ)第五章多態(tài)性習(xí)題答案_第2頁(yè)
C程序設(shè)計(jì)與應(yīng)用基礎(chǔ)第五章多態(tài)性習(xí)題答案_第3頁(yè)
C程序設(shè)計(jì)與應(yīng)用基礎(chǔ)第五章多態(tài)性習(xí)題答案_第4頁(yè)
C程序設(shè)計(jì)與應(yīng)用基礎(chǔ)第五章多態(tài)性習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第五章 多態(tài)性1、填空題1)在一個(gè)成員函數(shù)內(nèi)調(diào)用一個(gè)虛函數(shù)時(shí),對(duì)該虛函數(shù)的調(diào)用進(jìn)行_動(dòng)態(tài)_聯(lián)編。2)動(dòng)態(tài)聯(lián)編是在_虛函數(shù)_的支持下實(shí)現(xiàn)的,它通過(guò)_指針和引用_來(lái)調(diào)用該函數(shù)操作。3)下列程序的運(yùn)行結(jié)果如下:base's cons.derived's cons.derived's des.base's des.根據(jù)結(jié)果將程序補(bǔ)充完整。#incude <iostream.h>class basepublic:base()cout<<"base's cons."<<endl;_varitual base()

2、_cout<<"base's des."<endl;class derived:public basepublic:derived()cout<<"derived's cons."<<endl;derived()cout<<"derived's des."<<endl;void main()base *ptr=_new derived;_delete ptr;4)c+中_不支持_虛構(gòu)造函數(shù),但_支持_虛析構(gòu)函數(shù)5)帶有_純虛函數(shù)_的類稱為抽象類,

3、它只能作為_基類_來(lái)使用。6)下列程序的運(yùn)行結(jié)果如下:derive1's print() called.derive2's print() caiied.根據(jù)結(jié)果將程序補(bǔ)充完整。#include <iostream.h>class basepublic:base(int i)b=i;_vitual void print ()_protected:int b;class derive1:public basepublic:_derivel1(int i):base(i)_void print()cout<<"derive1's print

4、() called."<<endl; ;class derive2:public base_derivel2(int i):base(i)void print()cout<<"derive1's print() called."<<endl; _;void fun(_base* obj_)obj->print();void main()_dervel1* d1=new dervel1(1); dervel2* d1=new dervel2(2);_fun(d1);fun(d2);2、編程題1)設(shè)計(jì)一個(gè)小型公司的人員

5、信息管理系統(tǒng)。該公司主要有四類人員:經(jīng)理、兼職技術(shù)人員、銷售經(jīng)理和兼職推銷員。要求存儲(chǔ)這些人員的姓名、編號(hào)、級(jí)別、當(dāng)月薪水總額并顯示全部信息,具體要求如下所述。_人員編號(hào)基數(shù)為1000,每輸入一個(gè)人員信息,編號(hào)順序加1。_程序具有對(duì)所有人員提升級(jí)別的功能。經(jīng)理為4級(jí),兼職技術(shù)人員和銷售經(jīng)理為3級(jí),推銷員為1級(jí)。_月薪計(jì)算方法是:經(jīng)理拿固定月薪8000元;兼職技術(shù)人員按每小時(shí)100元領(lǐng)取月薪;兼職推銷員的月薪按該推銷員當(dāng)月銷售額的4%提成;銷售經(jīng)理既拿固定月薪也領(lǐng)取銷售提成,固定月薪為5000元,銷售提成為所管轄部門當(dāng)月銷售額的5。答案:#include <iostream.h>#i

6、nclude <string.h>class employeepublic:employee();employee()delete name;virtual void pay()=0;virtual void promote(int increment=0)grade+=increment;virtual void display()=0;protected:char *name;int no;int grade;double pay;static int maxno;class technician:public employeepublic:technician()hourly

7、rate=100;void promote(int)employee:promote(2);void pay();void display();private:double hourlyrate;int workhours;class salesman:virtual public employeepublic:salesman()commrate=0.04;void promote(int)employee:promote(2);void pay();void display();protected:double commrate;double sales;class manager:vir

8、tual public employeepublic:manager()monthlypay=8000;void promote(int)employee:promote(3);void pay();void display();protected:double monthlypay;class salesmanager:public manager,public salesmanpublic:salesmanager()monthlypay=5000;commrate=0.005;void promote(int)employee:promote(2);void pay();void dis

9、play();int employee:maxno=1000;employee:employee()char namestr50;cout<<"請(qǐng)輸入雇員姓名:"cin>>namestr;name=new charstrlen(namestr)+1;strcpy(name,namestr);no=maxno+;grade=1;pay=0.0;void technician:pay()cout<<"請(qǐng)輸入"<<name<<"本月的工作時(shí)間:"cin>>workhou

10、rs;pay=hourlyrate*workhours;cout<<"兼職技術(shù)人員"<<name<<"的編號(hào)為:"<<no<<"t本月工資為:"<<pay<<endl;void technician:display()cout<<"兼職技術(shù)人員"<<name<<"的編號(hào)為:."<<no<<"t級(jí)別為:"<<grade<

11、;<"級(jí),己付本月工資:"<<pay<<endl;void salesman:pay()cout<<"請(qǐng)輸入."<<name<<"本月的銷售額:"cin>>sales;pay=sales*commrate;cout<<"推銷員"<<name<<"的編號(hào)為:"<<no<<"t本月工資為:"<<pay<<endl;voi

12、d salesman:display()cout<<"推銷員"<<name<<"的編號(hào)為:"<<no<<"t級(jí)別為:"<<grade<<"級(jí),己付本月工資:"<<pay<<endl;void manager:pay()pay=monthlypay;cout<<"經(jīng)理"<<name<<"的編號(hào)為:"<<no<<&

13、quot;t本月工資為:"<<pay<<endl;void manager:display()cout<<"經(jīng)理"<<name<<"的編號(hào)為:"<<no<<"t級(jí)別為:"<<grade<<"級(jí),己付本月工資:"<<pay<<endl;void salesmanager:pay()cout<<"請(qǐng)輸入"<<employee:name&

14、lt;<"所管轄部門本月的銷售總額:"cin>>sales;pay=monthlypay+commrate*sales;cout<<"銷售經(jīng)理"<<name<<"的編號(hào)為:"<<no<<"t本月工資為:"<<pay<<endl;void salesmanager:display()cout<<"銷售經(jīng)理"<<name<<"的編號(hào)為:"<

15、;<no<<"t級(jí)別為:"<<grade<<"級(jí),己付本月工資:"<<pay<<endl;void main()manager m1;technician t1;salesmanager sm1;salesman s1;employee *emp4=&m1,&t1,&sm1,&s1;int i;for(i=0;i<4;i+)empi->promote();empi->pay();empi->display();2)編寫一個(gè)程序,建立兩

16、種類型的表:隊(duì)列與堆錢,使它們可以共用一個(gè)接口訪問。答案:#include <iostream.h>#include <stdlib.h>#include <ctype.h>class listpublic:list()head=tail=next=null;virtual void store(int i)=0;virtual int retrieve()=0;list *head, *tail, *next;int num;class quene:public listpublic:void store(int i);int retrieve();voi

17、d quene:store(int i)list *item;item=new quene;if(!item)cout<<"allocation error."<<endl;abort();item->num=i;if(tail)tail->next=item;tail=item;item->next=null;if(!head)head=tail;int quene:retrieve()int i;list *p;if(!head)cout<<"quene empty."<<endl;r

18、eturn 0;i=head->num;p=head;head=head->next;delete p;return i;class stack :public listpublic:void store(int i);int retrieve();void stack:store(int i)list *item;item=new stack;if(!item)cout<<"allocation error."<<endl;abort();item->num=i;if(head)item->next=head;head=it

19、em;if(!tail)tail=head;int stack:retrieve()int i;list *p;if(!head)cout<<"stack empty."<<endl;return 0;i=head->num;p=head;head=head->next;delete p;return i;void main()list *p;quene qobj;p=&qobj;for(int i=0;i<3;i+)p->store(i+1);cout<<"quene."for(i=0

20、;i<3;i+)cout<<p->retrieve();stack sobj;p=&sobj;for(i=0;i<3;i+)p->store(i+1);cout<<endl<<"stack:"for(i=0;i<3;i+)cout<<p->retrieve();3)編寫一個(gè)程序,先設(shè)計(jì)一個(gè)整數(shù)鏈表list類,然后從此鏈表派生出一個(gè)整數(shù)集合類set,在集合舉中增加一個(gè)元素個(gè)數(shù)的數(shù)據(jù)項(xiàng)。集合類的插入操作與鏈表相似(只是不插入重復(fù)元素),并且插入后,表示元素個(gè)數(shù)的數(shù)據(jù)成員需增值。集合類的刪

21、除操作是在鏈表刪除操作的基礎(chǔ)上對(duì)元素個(gè)數(shù)做減1操作:而查找和顯示操作是相同的。答案:#include <iostream.h>enum boolean false,true;struct nodeint val;node *next;class listpublic:list()nodes=0;list()node *temp=nodes;for(node *n=nodes;nodes!=0;)temp=nodes;nodes=nodes->next;delete temp;virtual boolean insert(int val)node *temp=new node;

22、if(temp!=0)temp->val=val;temp->next=nodes;nodes=temp;return true;elsereturn false;virtual boolean delete(int val)if(nodes=0)return false;node *temp=nodes;if(nodes->val=val)nodes=nodes->next;delete temp;return true;elsefor(node *n=nodes;n->next!=0;n=n->next)if(n->next->val=val

23、)temp=n->next;n->next=temp->next;delete temp;return true;return false;boolean iscontain(int val)if(nodes=0)return false;if(nodes->val=val)return true;elsefor(node *n=nodes;n->next!=0;n=n->next)if(n->next->val=val)return true;return false;void print()if(nodes=0)return;for(node

24、 *n=nodes;n!=0;n=n->next)cout<<n->val<<" "cout<<endl;private:node *nodes;class set:public listpublic:set()count=0;boolean insert(int val)if(!iscontain(val) && list:insert(val)+count;return true;boolean delete(int val)if(list:delete(val)-count;return true;ret

25、urn false;private:int count;void main()list *p,list1;set set1;p=&list1;p->insert(10);p->insert(20);p->insert(30);p->insert(40);p->print();p->delete(30);p->print();p=&set1;p->insert(12);p->insert(22);p->insert(32);p->print();p->delete(22);p->print();4)某人

26、喜歡飼養(yǎng)寵物。假定他擁有的放置寵物的窩的數(shù)目是固定的。請(qǐng)?jiān)O(shè)計(jì)一個(gè)程序,使得某人可以飼養(yǎng)任意種類任意數(shù)目的寵物。要求能夠知道現(xiàn)在飼養(yǎng)了多少只寵物, 每只寵物所在的位置及其種類和姓名。答案:#include <iostream.h>#include <stdlib.h>#include <string.h>#include <stdio.h>class animalpublic:animal()name=null;animal(char *n)name=strdup(n);virtual animal()delete name;virtual voi

27、d whoami()cout<<"generic animal."<<endl;protected:char *name;class cat: public animal public:cat()cat(char *n):animal(n)virtual void whoami()cout<<"i am a cat named"<<name<<endl;class pig: public animal public:pig()pig(char *n):animal(n)virtual void

28、whoami()cout<<"i am a pig named"<<name<<endl;class dog: public animalpublic:dog()dog(char *n):animal(n)virtual void whoami()cout<<"i am a dog named"<<name<<endl;class kennelpublic:kennel(int max);virtual kennel()delete residents;int accept(animal *d);animal *release(int pen);void listanimals();private:int maxanimals,numanimals;animal *residents;kennel:kennel(int max)maxanimals=max;numanimals=0;residents=new animal *maxanimals;for(int i=0;i<maxanimals;i+)residentsi=null;int kennel:accept(animal *d)if(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論