版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第1章 類和對象一、 選擇題1.C 2.B 3.C 4.A 5.C6.A 7.C 8 C 9A 10 C二、閱讀題1x=2,y=32x=2,y=3x!=y3Cstatic:va1=0cs1.vaI=1cs2.val=2cs1.val=4cs2.vaI=4四、改錯題#include #include class person public: person(int n,char* nam,char s) num=n; strcpy(name,nam); sex=s; coutConstructor called.endl; person( ) coutDestructor called.endl;
2、 void display( ) coutnum: numendl; coutname: nameendl; coutsex: sexendlendl; private: int num; char name10; char sex;int main( ) person s1(10010,Wang_li,f); s1.display( ); person s2(10011,Zhang_fun,m); s2.display( ); return 0;五、編程題51#include using namespace std;class CBoxpublic :CBox(double l=0,doub
3、le w=0,double h=0);double area();double volume ();private :double lengh;double width;double high;CBox:CBox(double l,double w,double h)lengh=l;width=w;high=h;double CBox:area()return 2*(lengh*width+lengh*high+width*high);double CBox:volume ()return lengh*width*high;void main()CBox box1(4,5,6);coutbox
4、1.area()endl;coutbox1.volume()endl;5.2#include using namespace std;class CPointpublic :CPoint(double a=0,double b=0)x=a;y=b;CPoint(CPoint & p)x=p.x;y=p.y;void print()cout(x,y);private :double x,y;class CLinepublic:CLine(double x1=0,double y1=0,double x2=0,double y2=0):p1(x1,y1),p2(x2,y2)CLine(CPoint
5、 x,CPoint y):p1(x),p2(y)CLine(CLine &lin)p1=lin.p1;p2=lin.p2;void DrawLine()coutLine form;p1.print();coutto;p2.print();coutendl; void Linedel() coutdelete lineendl; void move(CPoint &x,CPoint &y) coutmove lineendl; p1=x; p2=y; private :CPoint p1,p2;void main()CPoint point1(1,5),point2(5,8),point3(20
6、,30),point4(40,50);CLine line1(point1,point2);CLine line2(2,3,8,12);line1.DrawLine ();line2.DrawLine ();line2.move(point3,point4);line2.DrawLine ();line2=line1;line2.DrawLine ();line1.Linedel ();5.3#include using namespace std;class CComplex public:CComplex(double, double);CComplex(CComplex &c); /復數(shù)
7、類的拷貝構(gòu)造函數(shù)聲明double GetReal();double GetImag();void Print();private:double real;double imag; CComplex:CComplex (double r=0.0, double i=0.0) real = r;imag = i;cout調(diào)用兩個參數(shù)的構(gòu)造函數(shù)endl;CComplex:CComplex (CComplex &c) /復數(shù)類的拷貝構(gòu)造函數(shù)定義real = c.real;imag = c.imag;cout調(diào)用拷貝構(gòu)造函數(shù)endl;double CComplex:GetReal()return rea
8、l;double CComplex:GetImag()return imag;void CComplex:Print()/ 顯示復數(shù)值cout ( real , imag ) endl;CComplex add(CComplex &x,CComplex &y) /普通函數(shù)完成兩個數(shù)的加法,對象作為函數(shù)參數(shù), return CComplex(x.GetReal() +y.GetReal() ,x.GetImag ()+y.GetImag ();void main(void)CComplex a(3.0,4.0), b(5.6,7.9);CComplex c(a); /調(diào)用復數(shù)類的拷貝構(gòu)造函數(shù)co
9、ut a = ;a.Print();cout b = ;b.Print();cout c = ;c.Print();coutc=a+bendl;c=add(a,b); cout c = ; c.Print ();5.4#include #include using namespace std;class CStudent /類聲明 public:CStudent(char *,float,float,float);CStudent(CStudent &s);CStudent();void display(); friend float avg(CStudent &s);private:char
10、 *name;float grad3; ; CStudent:CStudent(char *na,float a,float b,float c) name=new charstrlen(na)+1; strcpy(name,na); grad0=a; grad1=b; grad2=c;CStudent:CStudent(CStudent &s) name=new charstrlen()+1; strcpy(name,); grad0=s.grad0; grad1=s.grad 1; grad2=s.grad 2;CStudent:CStudent()delete n
11、ame;void CStudent:display( ) int i; coutname:nameendl;for(i=0;i3;i+)coutgradi:gradiendl; float avg(CStudent &s) /普通函數(shù),需要引用私有成員,聲明為學生類的友元函數(shù)return (s.grad0+s.grad1 +s.grad2)/3;int main( )CStudent stud1(張三,79,98,82);/定義對象stud1.display();cout 平均成績:avg(stud1)endl;return 0;5.5#include using namespace std;
12、class CStringpublic :CString(); /缺省構(gòu)造函數(shù),初始化為空串 CString(char ch,int nRepeat);/用一個字符重復n次,初始化字符串CString(const char*psz); /用一個字符串初始化 CString(CString &stringser); /拷貝構(gòu)造函數(shù)CString(); int GetLength() const;bool IsEmpty() const;char GetAt(int nindex) const;void Setat(int nindex,char ch);void Print();int comp
13、are(CString& string);int compare(const char* psz)const;void Vacate();private :char *s;CString:CString()s=NULL;CString:CString(CString& stringser) s=new charstrlen(stringser.s)+1;if(s!=0)strcpy(s,stringser.s);CString:CString(char ch,int nRepeat)s=new charnRepeat+1;for(int i=0;inRepeat;i+)si=ch;snRepe
14、at=0;CString:CString(const char*psz)s=new charstrlen(psz)+1;if(s!=0)strcpy(s,psz);int CString:GetLength() const int i=0;while (si!=0) i+;return i;bool CString:IsEmpty() constif(s=NULL)return 1;elsereturn 0;void CString:Vacate() s0=0; coutNow have vacated string.1&nindex1&nindex=GetLength()+1) s nind
15、ex-1=ch; void CString:Print()couts0)return 1;else if(strcmp(s,string.s)0)return 1;else if(strcmp(s,psz)0) return -1; else return 0;CString:CString()/coutendl析構(gòu):sendl; if(s!=NULL)deletes;void main() char a4=y;char b4; CString c1(Hellow),c2(c1); coutStringc1 is: ; c1.Print(); coutendl; coutStringc2 is
16、: ; c2.Print(); coutendl; CString c3(b,3); coutStringc3 is: ; c3.Print(); coutendl; cout*以下是對串的基本操作*endl; int num=c1.GetLength(); char ch; coutc1的長度是: numendl; ch=c1.GetAt(5); cout獲得字符串c1中第5個字符是:chendl; cout下面是插入字符串c1中一個特殊字符dendl; c1.Setat(5,d); cout插入后字符串c1變?yōu)? ; c1.Print(); / coutendl; if(c1.IsEmpt
17、y()=1) coutString is empty.endl; else coutString isnt empty.endl; cout下面是判斷字符串c1清空endl; c1.Vacate(); cout清空后輸出字符串c1: n; c1.Print(); cout字符串已被清空endl; cout請按任意鍵繼續(xù)b;/ cout*以下是對串的賦值*endl; CString c5=c2; coutString c5=c2 is: ;c5.Print(); coutendl; cout*以下是對串的比較*endl; int temp=pare(c3); cout以下比較c2與c30)cou
18、tStringc3endl; else if(temp0)coutStringc2Stringc3endl; elsecoutStringc9=Stringc4endl;coutendl; cout以下比較c2與任意字符串Goodboy!0)coutGoodboy!endl; else if(pare(Goodboy!)0)coutStringc2Goodboy!endl; else coutStringc2 =Goodboy!endl; 第二章 繼承和派生一、 選擇題1D 2.B 3. D一、 閱讀程序題四、編程題4.1 #include #include#define PAI 3.14cl
19、ass Circle public:Circle()r=0;Circle (double d)r=d;double area()return(PAI*r*r);void display1()cout桌子的面積:area()endl;private:double r;class Tablepublic:Table()heig=0;Table (double h) heig=h;void display2()cout桌子的高度:heigendl;private:double heig;class Roundtable : public Circle,public Tablepublic:Round
20、table()strcpy(color,白色);Roundtable(double a,double b,char* c):Circle(a),Table(b)strcpy(color,c);void display () display1(); display2(); cout桌子的顏色:colorendl; private:char color20;void main()Roundtable s(2.0,3.0,黑色);s.display();4.2如果Age在基類中被定義為私有的,SetAge(int n)不能直接給Age賦值,如果Age是基類的公有成員變量,則可以直接賦值。class
21、Animalpublic: Animal(); int Age;class Dog:public Animalpublic: Dog(); Void SetAge(int n) Age=n;4.3#include class Rectanglepublic:Rectangle (double l,double w)length=l,width=wdouble area()return length*width;void display1();private:double length;double width;void Rectangle:display1()cout長:lengthendl;
22、 cout寬:widthendl;class Cuboid:public Rectanglepublic:Cuboid (double L,double w,double h):Rectangle(L,w)high=h,volume=L*w*high ;double vol()return area()*high;void show ();private:double high;double volume;void Cuboid:show()display1();cout高:highendl;cout體積:vol()endl;void main()Cuboid cub (10,20,30);c
23、ub.show();4.4#include class Vehiclepublic:Vehicle():maxspeed(0),weight(0)Vehicle(double m,double w):maxspeed(m),weight(w);void run () cout 可以奔跑endl; void stop () cout 可以停止奔跑、?:”這五個運算符不能重載。3.1.5 運算符重載必須遵循哪些原則?運算符重載可以使程序更加簡潔,使表達式更加直觀,增強可讀性。但是,運算符重載使用不宜過多,否則會帶來一定的麻煩。運算符重載必須遵循以下原則:(1) 重載運算符含義必須清楚。(2) 重載
24、運算符不能有二義性。3.2 填空題3.2.1 C+中多態(tài)性包括兩種多態(tài)性: (1) 和 (2) 。前者是通過 (3) 實現(xiàn)的,而后者是通過 (4) 和 (5) 來實現(xiàn)的。答案:(1)編譯時的(2)運行時的(3)函數(shù)和運算符的重載(4)類繼承關(guān)系(5)虛函數(shù) 純虛函數(shù)定義時在函數(shù)參數(shù)表后加 (1) ,它表明程序員對函數(shù) (2) ,其本質(zhì)是將指向函數(shù)體的指針定為 (3) 。答案:(1)=0(2)不定義(3)NULL在基類中將一個成員函數(shù)說明成虛函數(shù)后,在其派生類中只要 (1) 、 (2) 和 (3) 完全一樣就認為是虛函數(shù),而不必再加關(guān)鍵字 (4) 。如有任何不同,則認為是 (5) 而不是虛函數(shù)。
25、除了非成員函數(shù)不能作為虛函數(shù)外, (6) 、 (7) 和 (8) 也不能作為虛函數(shù)。答案:(1)同虛函數(shù)名(2)同參數(shù)表(3)同返回類型。如基類中返回基類指針,而派生類中返回派生類指針是允許的(4)virtual(5)重載(6)靜態(tài)成員函數(shù)(7)內(nèi)聯(lián)函數(shù)(8)構(gòu)造函數(shù)第三大題答案:31答案:#include#includeclass CStudentchar name20;char nativeplace20;char code30;int age;float score;public : CStudent(char *, char*,char*,int ,float); CStudent(C
26、Student &s);void display(); float operator+(CStudent s1);CStudent:CStudent(char *name, char*native,char*code,int age,float score)strcpy(this-name,name);strcpy(this-nativeplace,native);strcpy(this-code,code);this-age=age;this-score=score;CStudent:CStudent(CStudent &s)strcpy(this-name,);strcpy(t
27、his-nativeplace,s.nativeplace);strcpy(this-code,s.code);this-age=s.age;this-score=s.score;void CStudent:display()coutname nativeplace code age scorescore+s1.score;void main()CStudent w(whl,zhengzhouw.display();CStudent c(ctm,zhengzhou c.display();coutw+cendl;32答案:#include#include#includeclass CTrian
28、glefloat a,b,c;public:CTriangle(float a,float b,float c)this-a=a;this-b=b;this-c=c;float GetArea() float t=(a+b+c)/2;return sqrt(t*(t-a)*(t-b)*(t-c);float operator +(CTriangle t)return this-GetArea()+t.GetArea();void main()CTriangle tr1(3,4,5),tr2(6,8,10);couttr1+tr2endl;33答案:#includeclass BaseClass
29、public:virtual void f1()coutBaseClass:f1()endl;void f2()coutBaseClass:f2()endl;class DerivedClass: public BaseClasspublic:void f1()coutDerivedClass:f1()endl;void f2()coutDerivedClass:f2()f1(); Bptr-f2(); Dptr=&d1; Dptr-f1(); Dptr-f2();習題四一、選擇題1D 2A 3B 4C 5. C 6C 7 A 二、簡答題1什么叫做流?流的提取和插入是指什么?I/O流在C+中起
30、著怎樣的作用?答:流是一種抽象,它負責在數(shù)據(jù)的生產(chǎn)者(程序/文件)和數(shù)據(jù)的消費者(文件/程序)之間建立聯(lián)系,并管理數(shù)據(jù)的流動。一般意義下的讀操作在流數(shù)據(jù)抽象中被稱為(從流中)提取,寫操作被稱為(向流中)插入。完成數(shù)據(jù)從動態(tài)(內(nèi)存)到靜態(tài)(外存)的轉(zhuǎn)換,或著是從靜態(tài)(外存)到動態(tài)(內(nèi)存)的轉(zhuǎn)換。2什么是字節(jié)流、字符流和二進制流?答:根據(jù)對字節(jié)內(nèi)容的解釋方式,字節(jié)流分為字符流(也稱文本流)和二進制流。字符流將字節(jié)流的每個字節(jié)按ASC字符解釋,它在數(shù)據(jù)傳輸時需作轉(zhuǎn)換,效率較低。例如源程序文件和文本文件都是字符流。由于ASC字符是標準的,所以字符流可以直接編輯,顯示或打印,字符流產(chǎn)生的文件通行于各類計
31、算機。二進制流將字節(jié)流的每個字節(jié)以二進制方式解釋,它在數(shù)據(jù)傳輸時不作任何轉(zhuǎn)換,故效率高。但各類計算機對數(shù)據(jù)的二進制存放格式各有差異,且無法人工閱讀,故二進制流產(chǎn)生的文件可移植性較差。3cerr和clog作用是什么?有何區(qū)別?答:對于輸入提示信息或輸出結(jié)果而言, cerr和clog的用法相同,但作用不同。cerr的作用是向標準錯誤設(shè)備(standard error device)輸出有關(guān)出錯信息。cerr流中的信息只能在顯示器輸出。當調(diào)試程序時,往往不希望程序運行時的出錯信息被送到其他文件,而要求在顯示器上及時輸出,這時應該用cerr,cerr流中的信息是用戶根據(jù)需要指定的。clog流對象也是標
32、準錯誤流,它是console log的縮寫。它的作用和cerr相同,都是在終端顯示器上顯示出錯信息。不同的是cerr不經(jīng)過緩沖區(qū),直接向顯示器上輸出有關(guān)信息,而clog中的信息存放在緩沖區(qū)中,緩沖區(qū)滿后或遇endl時向顯示器輸出。4用什么方法來控制輸入輸出流中出現(xiàn)的錯誤?答:為提高程序的可靠性,應在程序中檢測I/O流的操作是否正常。當檢測到流操作出現(xiàn)錯誤時,可以通過異常處理來解決問題。5比較讀寫文本文件與二進制文件的異同。答:從文件編碼的方式來看,文件可分為ASCII碼文件和二進制碼文件兩種。ASCII文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應一個字節(jié),用于存放對應的ASCII碼。
33、例如,數(shù)5678的存儲形式為:ASC碼: 00110101 00110110 00110111 00111000 十進制碼: 5678 共占用4個字節(jié)。ASCII碼文件可在屏幕上按字符顯示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可顯示文件的內(nèi)容。 由于是按字符顯示,因此能讀懂文件內(nèi)容。二進制文件是按二進制的編碼方式來存放文件的。 例如, 數(shù)5678的存儲形式為: 00010110 00101110只占二個字節(jié)。二進制文件雖然也可在屏幕上顯示, 但其內(nèi)容無法讀懂。C+系統(tǒng)在處理這些文件時,并不區(qū)分類型,都看成是字符流,按字節(jié)進行處理。 輸入輸出字符流的開始和結(jié)束只由程序控制而不
34、受物理符號(如回車符)的控制。 因此也把這種文件稱作“流式文件”。6隨機讀寫是什么意思,常用于哪種類型的文件?答:在C+中可以由程序移動文件指針,從而實現(xiàn)文件的隨機訪問,即可讀寫流中任意一段內(nèi)容。一般文本文件很難準確定位,所以隨機訪問多用于二進制文件。7文件流和字符串流有什么區(qū)別? 答:文件在C+看來是字符流或二進制流,文件流是以外存文件為輸入輸出對象的數(shù)據(jù),所以文件流是與設(shè)備相關(guān)的??梢园蚜鞯母拍顟玫阶址⊿tring)上。這樣字符串就可以看作字符串流。字符串流不是以外存文件為輸入輸出的對象,而以內(nèi)存中用戶定義的字符數(shù)組為輸入輸出的對象。字符串流是與內(nèi)存相關(guān),所以也稱內(nèi)存流??梢杂幂斎胼敵霾僮鱽硗瓿勺址鞯牟僮鳌H?、編程題1 x= 468y= -3.42565x=468 y=-3.42565x=+468*y=-3.43* 2 生成一個名稱為data.txt文件,內(nèi)容:This is test data 3源程序。#include #include using namespace std;int main() for(int n=8;n0;n-)coutsetw(20-n)*setfill(*)setw(2*n-1) se
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024裝修增加項目施工合同模板
- 個人經(jīng)營貸款合同樣本
- 2024建筑單包工合同范文
- 2024股份擔保借款合同范本
- 2024個人住房公積金的借款合同
- 2024動產(chǎn)家具無償寄托合同
- 房產(chǎn)項目合作開發(fā)協(xié)議書
- 三輪車買賣合同完整協(xié)議2024年
- 倉配租賃合同模板
- 工業(yè)用地投資協(xié)議
- 2024中國一汽校園招聘1000+崗位高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- GB/T 19533-2024汽車用壓縮天然氣鋼瓶定期檢驗與評定
- 婦產(chǎn)科護士晉升述職報告
- 骨髓腔內(nèi)輸液(IOI)技術(shù)
- 建筑幕墻工程(鋁板、玻璃、石材)監(jiān)理實施細則(全面版)
- 小學數(shù)學與思政融合課教學設(shè)計
- 體育公園運營管理方案
- 休閑生態(tài)農(nóng)業(yè)觀光園建設(shè)項目財務(wù)分析及效益評價
- 江西省南昌市民德學校2023-2024學年八年級上學期期中數(shù)學試題
- 國際金融(英文版)智慧樹知到期末考試答案2024年
- 2024年《藥物臨床試驗質(zhì)量管理規(guī)范》(GCP)網(wǎng)絡(luò)培訓題庫
評論
0/150
提交評論