《面向對象程序設計》編程題復習及其答案.doc_第1頁
《面向對象程序設計》編程題復習及其答案.doc_第2頁
《面向對象程序設計》編程題復習及其答案.doc_第3頁
《面向對象程序設計》編程題復習及其答案.doc_第4頁
《面向對象程序設計》編程題復習及其答案.doc_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

面向對象程序設計復習題1、 (C+的輸入輸出)天貓優(yōu)惠券,我就要券定義一個函數max,實現輸入兩個數a、b,比較并從小到大輸出。2、 (函數的重載)(1)定義一個帶兩個參數的函數max,輸出最大值。(2)再定義一個帶三個參數的函數max,輸出最大值。(3)主函數測試之。3、(有默認參數的函數) 將題2用帶默認參數的函數實現。4、(變量的引用) (1)定義一個swap1函數,以普通形參傳入兩個變量a、b,互換a、b的值。 (2)定義一個swap2函數,以指針形參傳入兩個變量a、b,互換a、b的值。 (3)定義一個swap3函數,以引用形參輸入兩個變量a、b,互換a、b的值。 (4)主函數定義兩個變量x、y傳入三個函數,觀察x、y值前后的變化。5、(類的定義)定義一個student類,數據成員包括:學號num,姓名name,年齡age,性別sex,成員函數包括:(1) set函數,鍵盤輸入學號,姓名,年齡,性別(2) display函數,輸出學生信息。6、(構造函數和析構函數)定義一個student類,數據成員包括:學號num,姓名name,年齡age,性別sex,成員函數包括:(1)構造函數,初始化學號,姓名,年齡,性別(2)display函數,輸出學生信息。(3)析構函數,輸出學生學號。(4)主函數定義多個對象,并注意構造函數和析構函數的調用順序。7、(構造函數的重載)在題6基礎上增加一個默認構造函數,實現構造函數的重載8、將題6用帶默認參數的構造函數實現。9、(對象數組和對象的動態(tài)建立及釋放)在題8基礎上,實現如下主函數:(1) 在主函數中定義一個包含三個學生的數組,并初始化之。(2) 在主函數中定義一個student類指針p并用new運算符分配動態(tài)內存(3) 用delete刪除p指向的動態(tài)內存。(4) 觀察構造函數和析構函數的調用。10、(復制構造函數)在題8基礎上新增加一個復制構造函數,并主函數新增復制構造對象。11、(靜態(tài)成員)定義一個student類,數據成員包括:學號num,姓名name,成績score,累加總分sum,累計人數count。成員函數包括:構造函數統(tǒng)計人數count;(1) 非靜態(tài)成員total函數,求sum。(2) 靜態(tài)成員average函數,求平均成績。(3) 主函數定義包含3個學生的數組,求三個學生的平均成績。 12、(友元函數)定義一個Time類,私有數據成員包括: 時hour、分minute、秒second成員函數:構造函數Time()定義一個友元函數display,使之訪問私有成員輸出時分秒。13、(運算符重載)(1)定義一個復數類,實現對“+”,f; coutfendl;return 0;(2)定義一個Time類,實現對“+”的前綴、后綴重載。P134i+:單目運算符天貓優(yōu)惠券,我就要券14、(單繼承及派生類構造函數)(1)定義一個person類,數據成員包括:姓名name,年齡age,性別sex成員函數:構造函數及display函數(2)定義一個派生類student,公有繼承與person類,新增成員:專業(yè)major,入學日期enterdate(Date類自定義)。(3)主函數定義student對象,各類構造函數的調用順序。15、(多繼承)在14題基礎上由person類再派生出teacher類,新增成員:職稱title,工資wage16、(虛繼承)由student類和teacher類共同派生出graduate類,新增成員: 年級grade,將person類定義成虛基類,實現用虛繼承解決二義性。17、(抽象類及多態(tài)性)定義一個抽象基類Shape,由它派生出5個派生類,Circle(圓形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangel(三角形)。用虛函數分別計算幾何圖形面積,并求他們的和。要求定義一個基類指針,使它指向每一個派生類對象,體現其多態(tài)性。1、#includeusing namespace std;void max()int a,b;cout請輸入兩個數:ab;if(ab)coutb aendl;elsecouta bendl;int main()max();return 0;2、#includeusing namespace std;void max(int a,int b)if(ab)coutaendl;elsecoutbb & ac)coutac)coutbendl;elsecoutcendl;int main()max(2,5);max(7,5,3);return 0;3、#includeusing namespace std;void max(int a,int b,int c=0)if(ab & ac)coutac)coutbendl;elsecoutcendl;int main()max(2,5);max(7,5,3);return 0;4、#includeusing namespace std;void swap1(int a,int b)int temp;temp=a;a=b;b=temp;void swap2(int *a,int *b)int temp;temp=*a;*a=*b;*b=temp;void swap3(int &a,int &b)int temp;temp=a;a=b;b=temp;int main()int x,y;x=5;y=7;swap1(x,y);coutx=x y=yendl;x=5;y=7;swap2(&x,&y);coutx=x y=yendl;x=5;y=7;swap3(x,y);coutx=x y=yendl;return 0;5、#include#include using namespace std;class studentprivate:int num;string name;int age;char sex;public:void set() cout請輸入:學號,姓名,年齡,性別(f or m)numnameagesex;void display()cout學號:numendl;cout姓名:nameendl;cout年齡:ageendl;cout性別:sexendl;int main()student s;s.set();s.display();return 0;6、#include#include using namespace std;class studentprivate:int num;string name;int age;char sex;public:/*void set() cout請輸入:學號,姓名,年齡,性別(f or m)numnameagesex;*/student(int num,string name,int a,int s)cout調用構造函數 num=numnum=num;this-name=name;age=a;sex=s;天貓優(yōu)惠券,我就要券void display()cout學號:numendl;cout姓名:nameendl;cout年齡:ageendl;cout性別:sexendl;student()cout析構函數 學號:numendl;int main()student s(1001,張三,25,f),s1(1002,李四,24,m);/s.set();s.display(); s1.display();return 0;7、#include#include using namespace std;class studentprivate:int num;string name;int age;char sex;public:/*void set() cout請輸入:學號,姓名,年齡,性別(f or m)numnameagesex;*/student()cout調用構造函數 num=0endl;num=0;name=;age=18;sex=f;student(int num,string name,int a,int s)cout調用構造函數 num=numnum=num;this-name=name;age=a;sex=s;void display()cout學號:numendl;cout姓名:nameendl;cout年齡:ageendl;cout性別:sexendl;student()cout析構函數 學號:numendl;int main()student s(1001,張三,25,f),s1(1002,李四,24,m),s2;/s.set();s.display();coutendl; s1.display();coutendl;s2.display();coutendl;return 0;8、#include#include using namespace std;天貓優(yōu)惠券,我就要券class studentprivate:int num;string name;int age;char sex;public:student(int num=0,string name=,int a=18,int s=f)cout調用構造函數 num=numnum=num;this-name=name;age=a;sex=s;void display()cout學號:numendl;cout姓名:nameendl;cout年齡:ageendl;cout性別:sexendl;student()cout天貓優(yōu)惠券,我就要券 學號:numendl;int main()student s(1001,張三,25,f),s1(1002,李四,24,m),s2;/s.set();s.display();coutendl; s1.display();coutendl;s2.display();coutendl;return 0;9、#include#include using namespace std;class studentprivate:int num;string name;int age;char sex;public:student(int num=0,string name=,int a=18,int s=f)cout調用構造函數 num=numnum=num;this-name=name;age=a;sex=s;void display()cout學號:numendl;cout姓名:nameendl;cout年齡:ageendl;cout性別:sexendl;student()cout析構函數 學號:numendl;int main()student s3=student(1001,張三,25,f),student(1002,李四,24,m);for (int i=0;i3;i+)天貓優(yōu)惠券,我就要券si.display();coutdisplay();coutendl;delete p;return 0;10、#include#include using namespace std;class studentprivate:int num;string name;int age;char sex;public:student(int num=0,string name=,int a=18,int s=f)cout調用構造函數 num=numnum=num;this-name=name;age=a;sex=s;student(student& s)天貓優(yōu)惠券,我就要券num=s.num;name=;age=s.age;sex=s.sex;void display()cout學號:numendl;cout姓名:nameendl;cout年齡:ageendl;cout性別:sexendl;student()cout析構函數 學號:numendl;int main()student s1(1001,張三,25,f);student s2(s1);s1.display();s2.display();return 0;11、#include#include using namespace std;class studentprivate:int num;string name;float score;static float sum;static int count;public:student(int num=0,string name=,float s=80)this-num=num;this-name=name;score=s;count+;void display()cout學號:numendl;cout姓名:nameendl;cout成績:scoreendl;void total();static float average();float student:sum=0.0;int student:count=0;void student:total()sum+=score;float student:average()return sum/count;int main()student s3=student(1001,張三,87),student(1002,李四),student(1003,王五,90);for (int i=0;i3;i+)si.total();cout平均成績:student:average()endl;return 0; 12、#include/ #include / using namespace std;class Timeprivate:int hour;int minute;int second;public:Time(int h=12,int m=0,int s=0)hour=h;minute=m;second=s;friendvoid display(Time&);void display(Time& t)coutt.hour時t.minute分t.second秒endl;int main()Time t,t1(13,12,22);display(t);display(t1);return 0; 13、(1)/方法1:多次重載+#include/ #include / using namespace std;class Complexprivate:float real;float image;public:Complex(float real,float image)this-real=real;this-image=image;Complex()real=0;image=0;friend Complex operator+(Complex &a,Complex &b);friend Complex operator+(Complex &a,float b);friend Complex operator+(float a,Complex &b);friend ostream& operator(istream& input,Complex a);Complex operator+(Complex &a,Complex &b)return Complex(a.real+b.real,a.image+b.image);Complex operator+(Complex &a,float b)return Complex(a.real+b,a.image);Complex operator+(float a,Complex &b)return Complex(b.real+a,b.image);ostream& operator0)outputa.real+a.imageiendl;elseoutputa.reala.imagei(istream& input,Complex a)inputa.reala.image;return input;int main()Complex a(3,4),b(1,2),c,d,e,f;c=a+b;d=a+5;e=3+b;coutcf;coutfendl;return 0;/方法2:使用轉換構造函數實現#includeclass Complexprivate:float real;float image;public:Complex(float real,float image)this-real=real;this-image=image;Complex()real=0;image=0;/定義轉換構造函數Complex(float r)real=r;image=0;friend Complex operator+(Complex &a,Complex &b);friend ostream& operator(istream& input,Complex a);Complex operator+(Complex &a,Complex &b)return Complex(a.real+b.real,a.image+b.image);ostream& operator0)outputa.real+a.imageiendl;elseoutputa.reala.imagei(istream& input,Complex a)inputa.reala.image;return input;int main()Complex a(3,4),b(1,2),c,d,e,f;c=a+b;d=a+5;e=3+b;coutcf;coutfendl;return 0;(2)#include using namespace std;class Timepublic: Time()minute=0;sec=0; Time(int m,int s):minute(m),sec(s) Time operator+(); Time operator+(int); void display()coutminute:sec=60) sec-=60; +minute; return *this;Time Time:operator+(int)Time temp(*this); sec+; if(sec=60) sec-=60; +minute; return temp; int main()Time time1(34,59),time2; cout time1 : ; time1.display(); +time1; cout+time1: ; time1.display(); time2=time1+; couttime1+: ; time1.display(); cout time2 : ; time2.display(); return 0;14、#include#include using namespace std;class Dateprivate:int year;int month;int day;public:Date(int y=2013,int m=1,int d=1)year=y;month=m;day=d;void display()coutyear年month月day日endl;class personprivate:string name;int age;char sex;public:person(string n,int a,char s)name=n;age=a;sex=s;void display()cout姓名:nameendl;cout年齡:ageendl;cout性別:sexendl;class student:public personpublic:student(string n,int a,char s,string maj,int y,int m,int d ):person(n,a,s),enterdate(y,m,d)major=maj;void display()person:display();cout專業(yè):majorendl;cout入學日期:;enterdate.display();private:string major;Date enterdate;/入學日期;int main()student s(張三,20,f,通信,2012,9,6);s.display();return 0;15、#include#include using namespace std;class Dateprivate:int year;int month;int day;public:Date(int y=2013,int m=1,int d=1)year=y;month=m;day=d;void display()coutyear年month月day日endl;class personprivate:string name;int age;char sex;public:person(string n,int a,char s)name=n;age=a;sex=s;void display()cout姓名:nameendl;cout年齡:ageendl;cout性別:sexendl;class student:public personpublic:student(string n,int a,char s,string maj,int y,int m,int d ):person(n,a,s),enterdate(y,m,d)major=maj;void display()person:display();cout專業(yè):majorendl;cout入學日期:;enterdate.display();private:string major;Date enterdate;/入學日期;天貓優(yōu)惠券,我就要券class teacher:public personpublic:teacher(string n,int a,char s,string t,float w):person(n,a,s)title=t;wage=w;void display()person:display();cout職稱:titleendl;private:string title;float wage;int main()student s(張三,20,f,通信,2012,9,6);s.display();teacher t(李四,30,m,講師,3000);t.display();return 0;16、#include#include using namespace std;class Dateprivate:int year;int month;int day;public:Date(int y=2013,int m=1,int d=1)year=y;month=m;day=d;void display()coutyear年month月day日endl;class personprivate:string name;int age;char sex;public:person(string n,int a,char s)name=n;age=a;sex=s;void display()cout姓名:nameendl;cout年齡:ageendl;cout性別:sexendl;class student:virtual public personpublic:student(string n,int a,char s,string maj,int y,int m,int d ):person(n,a,s),enterdate(y,m,d)major=maj;void display()person:display();cout專業(yè):majorendl;cout入學日期:;enterdate.display();private:protected:string major;Date enterdate;/入學日期;class teacher:virtual public personpublic:teacher(string n,int a,char s,string t,float w):person(n,a,s)title=t;wage=w;void display()person:display();cout職稱:titleendl;private:protected:string title;float wage;class graduate:public student,public teacherpublic:graduate(string n,int a,char s,string maj,int y,int m,int d,string t,float w,string g):person(n,a,s),student(n,a,s,maj,y,m,d),teacher(n,a,s,t,w)grade=g;void display()person:display();cout專業(yè):majorendl;cout入學日期:;enterdate.display();co

溫馨提示

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

評論

0/150

提交評論