C 程序設計教程 面向對象分冊鄭秋生完整答案_第1頁
C 程序設計教程 面向對象分冊鄭秋生完整答案_第2頁
C 程序設計教程 面向對象分冊鄭秋生完整答案_第3頁
C 程序設計教程 面向對象分冊鄭秋生完整答案_第4頁
C 程序設計教程 面向對象分冊鄭秋生完整答案_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第1章 類和對象一、 選擇題 1.C 2.B 3.C 4.A 5.C 6.A 7.C 8 C 9A 10 C 二、閱讀題 1x=2,y=3 2x=2,y=3 x!=y 3 Cstatic:va1=0 cs1.vaI=1 cs2.val=2 cs1.val=4 cs2.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 c

2、alled.endl; void display( coutum: endl ; coutame: endl ; coutsex: endl endl ; 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 CBox public : CBox(double l=0,

3、double 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、4,5,6; cout endl ; cout endl ; 5.2 #include using namespace std; class CPoint public : CPoint(double a=0,double b=0 x=a; y=b; CPoint(CPoint & p x=p.x; y=p.y; void print( cout( private : double x,y; ; class CLine public: CLine(double x1=0,double y1=0,double x2=0,double y2=0:p1(x1,y1,p2(x2,y2 CLine(CP

5、oint x,CPoint y:p1(x,p2(y CLine(CLine &lin p1=lin.p1; p2=lin.p2; void DrawLine( coutLine form; p1.print(; couto; 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,poin

6、t3(20,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

7、&c; /復數(shù)類的拷貝構造函數(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; 潣瑵?調用兩個參數(shù)的構造函數(shù)endl; CComplex:CComplex (CComplex &c /復數(shù)類的拷貝構造函數(shù)定義 real = c.real; imag = c.imag; 潣瑵?調用拷貝構造函數(shù)endl; double CComplex:GetR

8、eal(return real; 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; /調用復數(shù)類

9、的拷貝構造函數(shù) cout a = ; a.Print(; cout = ; 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;

10、 private: char *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:CStuden

11、t( delete name; void CStudent:display( int i; coutame: endl ; for(i=0;i3;i+ coutgradi: i endl ; float avg(CStudent &s /普通函數(shù),需要引用私有成員,聲明為學生類的友元函數(shù) return (s.grad0+s.grad1 +s.grad2/3; int main( 千疇敤瑮猠疇?尨張三,79,98,82; /定義對象 stud1.display(; 潣瑵?尼平均成績:avg(stud1endl; return 0; 5.5 #include using namespace std

12、; class CString public : CString(; /缺省構造函數(shù),初始化為空串 CString(char ch,int nRepeat;/用一個字符重復n次,初始化字符串 CString(const char*psz; /用一個字符串初始化 CString(CString &stringser; /拷貝構造函數(shù) CString(; int GetLength( const; bool IsEmpty( const; char GetAt(int nindex const; void Setat(int nindex,char ch; void Print(; int com

13、pare(CString& string; int compare(const char* pszconst; 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;

14、 snRepeat=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( const if(s=NULL return 1; else return 0; void CString:Vacate( s0=0; coutNow have vacated string.1&nindex1&nindex=GetLength(

15、+1 s nindex-1=ch; void CString:Print( cout0 return 1; else if(strcmp(s,string.s0 return 1; else if(strcmp(s,psz0 return -1; else return 0; CString:CString( ?潣瑵?湥湯?析構: endl ; if(s!=NULL deletes; void main( char a4=y;char b4; CString c1(Hellow,c2(c1; coutStringc1 is: ; c1.Print(; coutendl; coutStringc

16、2 is: ; c2.Print(; coutendl; CString c3(b,3; coutStringc3 is: ; c3.Print(; coutendl; cout*以下是對串的基本操作*endl; int num=c1.GetLength(; char ch; coutc1的長度是: endl ; ch=c1.GetAt(5; 潣瑵?獲得字符串c1中第?個字符是:chendl; 潣瑵?下面是插入字符串c1中一個特殊字符dendl; c1.Setat(5,d; 潣瑵?插入后字符串c1變?yōu)? ; c1.Print(; / coutendl; if(c1.IsEmpty(=1 cou

17、tString is empty.endl; else coutString isnt empty.endl; 潣瑵?下面是判斷字符串c1清空endl; c1.Vacate(; 潣瑵?清空后輸出字符串c1: n; c1.Print(; 潣瑵?字符串已被清空endl; 潣瑵?請按任意鍵繼續(xù)b; / cout*以下是對串的賦值*endl; CString c5=c2; coutString c5=c2 is: ;c5.Print(; coutendl; cout*以下是對串的比較*endl; int temp=pare(c3; 潣瑵?以下比較c2與c30 coutStringc3endl; els

18、e if(temp0 coutStringc2 endl ; else coutStringc9=Stringc4endl; coutendl; 潣瑵?以下比較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.14 class Circle public

19、: Circle(r=0; Circle (double dr=d; double area(return(PAI*r*r; 潶摩搠獩汰祡?捻畯?尼桌子的面積: endl ; private: double r; ; class Table public: Table(heig=0; Table (double h heig=h; 潶摩搠獩汰祡?捻畯?尼桌子的高度:heigendl; private: double heig; ; class Roundtable : public Circle,public Table public: 潒湵瑤扡敬笨瑳捲祰挨汯牯尬白色; Roundtable(

20、double a,double b,char* c:Circle(a,Table(bstrcpy(color,c; void display ( display1(; display2(; 潣瑵?桌子的顏色: endl ; private: char color20; ; void main( 潒湵瑤扡敬猠?尬黑色; s.display(; 4.2 如果Age在基類中被定義為私有的,SetAge(int n不能直接給Age賦值,如果Age是基類的公有成員變量,則可以直接賦值。 class Animal public: Animal(; int Age; ; class Dog:public A

21、nimal public: Dog(; Void SetAge(int n Age=n; ; 4.3 #include class Rectangle public: Rectangle (double l,double wlength=l,width=w double area(return length*width; 霸州市第二屆中小學試題庫優(yōu)秀試題征集評比活動一年級(上冊)語文學科試題 上報單位:王莊子鄉(xiāng)靳家堡村學校 設計人姓名:劉婧 十 八九六 四 五 七 二一 三十題 一號 得 分 得分評卷人 按順序填空( 一、10分) a o u b p m n l g h yi ye yue 得

22、分 評卷人 二、 填補下列不全的音節(jié)。(8分) ( z jin ) (d (zh i ( l n 再 見 大 樹 竹 排 兩 岸 (d qu ) ( l s ( din sh ( w ba 打 球 綠 色 電 視 尾 巴 得分 評卷人 三、 把下列拼讀的部分補充完整。(5分) g ( ( ) guo b ( ) ba l ( ) li q ( ) qu 得分 評卷人 四、 看拼音寫詞語。(16分) sh f shn t mo jn ch zi ( ( ( ( xio nu fi j zhng ch din ch ( ( ( ( 得分 評卷人 五、寫反義詞。(12分) 近 早 大 黑 有 出 得

23、分 評卷人 六、 連線。(8分) z zh c ch 子 足 真 座 紙 春 唱 草 穿 得分 評卷人 七、照樣子,填寫合適的量詞。(5分) 一( 朵 )花 一( )小河 一( )小鴨 一( )雨傘 一( )紅旗 兩( )兔子 得分 評卷人 八、寫出下列字的筆順。(6分) 左: 今: 火: 得分 評卷人 分)九、按古詩填空。(10 ( , ) 有 ()看 ( )聲。 ( 近 聽 () ()在, ( ) 春去 驚。 )()不 ()( 評卷人得分 分)十、按課文填空,回答問題。(7 誰的尾巴長? 誰的尾巴短? 誰的尾巴好像一把傘? 猴子的尾巴( ), 兔子的尾巴( ), 松鼠的尾巴好像( )。 1

24、. 把課文內容補充完整。 2. 短文告訴了我們 種動物的尾巴的特點。 3. 你喜歡誰的尾巴?為什么? 得分 評卷人 十一、寫話。(13分) 小朋友,你喜歡吃水果嗎?你最喜歡吃什么水果?請你說出它的顏色,外形特點,為什么喜歡吃?不少于20字,不會寫的字可以用拼音代替。 答案 一、按順序填空(10分) a o e i u b p m f d t n l g k h yi wu yu ye yue yuan (每空1分 二、填補下列不全的音節(jié)。(8分) ( zi jin ) (d sh (zh pi ( ling n 再 見 大 樹 竹 排 兩 岸 (d qu ) ( l s ( din sh (

25、wi ba 打 球 綠 色 電 視 尾 巴?長: endl每空; cout 三、; ( o ) guo b ( a ),double w,double class Cuboid:public Rectangleh:Rectangle(L,whigh=h,volume=L*w*high ; double vol(return area(*high; void show (; private: double high; 看拼音寫詞語。(16分)(每字0.5分) display1(; 潣瑵?高: endl ; 潣瑵?體積:vol(endl; void main( Cuboid cub (10,20,

26、30; cub.show(; 4.4 #include class Vehicle public: Vehicle(:maxspeed(0,weight(0 出 Vehicle(void run ( cout 可以奔跑endl; void stop ( cout 可以停止奔跑endl; private: double maxspeed; double weight; ; class Bicycle:virtual public Vehicle public: Bicycle (double m,double w,double h:Vehicle(m,w,height(hprivate: dou

27、ble height; ; class Motorcar : virtual public Vehicle public: Motorcar (double m,double w,double s:Vehicle(m,w,setnum(s private: double setnum; ; class Motorcycle:public Bicycle,public Motorcar public: Motorcycle(double m,double w,double h,double s:Bicycle(m,w,h,Motorcar(m,w,s, Vehicle(m,w ; void ma

28、in( s1.run(; Motorcycle s1(300,10,6,30;s1.stop(; 如果不把Vehicle設置為虛基類 近 聽 水 ) (無 第33.1 簡答題 春 去 ):(還 )在, ( 人 )( 來 )( 鳥 3.1.2 運算符重載后,優(yōu)先級和結合性如何?在每一種編譯系統(tǒng)中,運算符實際上都對應一個函數(shù),只是這種運算對用戶具有透明性,使用者并不知道函數(shù)的存在。運算符重載實際上是運算符函數(shù)的重載,所以運算符的重載實際上是函數(shù)的重載。 編譯程序對運算符重載的選擇,遵循著函數(shù)重載的選擇原則。當遇到不很明顯的運算符時,編譯程序將去尋找參數(shù)相匹配的運算符函數(shù)。 3.1.4 十、按課文填

29、空,回答問題。(7 (1) 不可臆造新的運算符 (2) 堅持四個不能改變。 ), ?兔子的尾巴(?短?), 松鼠的尾巴好像( 一把傘 運算符的返回類型 3:、 “3)C+規(guī)定,運算符中,參數(shù)類型都是內部類型時,不允許重載。(種 (3.1.5 運算符重載必須遵循哪些原則? 3. (答案略(2 十一、寫話。(13分) (2)說出它的顏色,外形特點,為什么喜歡吃,語句通順,不少于20 3.2.1 C+中多態(tài)性包括兩種多態(tài)性: (1) 和 (2) 。前者是通過 (3) 實現(xiàn) 的,而后者是通過 (4) 和 (5) 來實現(xiàn)的。 答案:(1)編譯時的 (2)運行時的 (3)函數(shù)和運算符的重載 (4)類繼承關

30、系 (5)虛函數(shù) 3.2.2 純虛函數(shù)定義時在函數(shù)參數(shù)表后加 (1) ,它表明程序員對函數(shù) (2) ,其 本質是將指向函數(shù)體的指針定為 (3) 。 答案:(1)=0 (2)不定義 (3)NULL 3.2.3在基類中將一個成員函數(shù)說明成虛函數(shù)后,在其派生類中只要 (1) 、 (2) 和 (3) 完全一樣就認為是虛函數(shù),而不必再加關鍵字 (4) 。如有任何不 同,則認為是 (5) 而不是虛函數(shù)。除了非成員函數(shù)不能作為虛函數(shù)外, (6) 、 (7) 和 (8) 也不能作為虛函數(shù)。 答案:(1)同虛函數(shù)名 (2)同參數(shù)表 (3)同返回類型。如基類中返回基類指針,而派生類中返回派生類指針是允許的 (4)

31、virtual (5)重載 (6)靜態(tài)成員函數(shù) (7)內聯(lián)函數(shù) (8)構造函數(shù) 第三大題答案: 31答案: #include #include class CStudent char name20; char nativeplace20; char code30; int age; float score; public : CStudent(char *, char*,char*,int ,float; CStudent(CStudent &s; void display(; float operator+(CStudent s1; ; CStudent:CStudent(char *nam

32、e, 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(this-nativeplace,s.nativeplace; strcpy(this-code,s.code; this-age=s.age; this-score

33、=s.score; void CStudent:display( cout nativeplace score+s1.score; void main( CStudent w(whl,zhengzhou,_83580182,30,90; w.display(; CStudent c(ctm,zhengzhou,_83580182,30,90; c.display(; coutw+cendl; 32答案: #include #include #include class CTriangle float a,b,c; public: CTriangle(float a,float b,float

34、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; cout endl ; 33答案: #include class BaseClass public: virtual void f1( coutBaseClass:f1(endl; void f2

35、( coutBaseClass:f2(endl; ; class DerivedClass: public BaseClass public: 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+中起著怎樣的作用? 答:流是一種抽象,它負責在數(shù)據(jù)的生產(chǎn)者(程序/文件)和數(shù)據(jù)的消費者(文件/程序)之間建

36、立聯(lián)系,并管理數(shù)據(jù)的流動。 一般意義下的讀操作在流數(shù)據(jù)抽象中被稱為(從流中)提取,寫操作被稱為(向流中)插入。 完成數(shù)據(jù)從動態(tài)(內存)到靜態(tài)(外存)的轉換,或著是從靜態(tài)(外存)到動態(tài)(內存)的轉換。 2什么是字節(jié)流、字符流和二進制流? 答:根據(jù)對字節(jié)內容的解釋方式,字節(jié)流分為字符流(也稱文本流)和二進制流。 字符流將字節(jié)流的每個字節(jié)按ASC字符解釋,它在數(shù)據(jù)傳輸時需作轉換,效率較低。例如源程序文件和文本文件都是字符流。由于ASC字符是標準的,所以字符流可以直接編輯,顯示或打印,字符流產(chǎn)生的文件通行于各類計算機。 二進制流將字節(jié)流的每個字節(jié)以二進制方式解釋,它在數(shù)據(jù)傳輸時不作任何轉換,故效率高。

37、但各類計算機對數(shù)據(jù)的二進制存放格式各有差異,且無法人工閱讀,故二進制流產(chǎn)生的文件可移植性較差。 3cerr和clog作用是什么?有何區(qū)別? 答:對于輸入提示信息或輸出結果而言, cerr和clog的用法相同,但作用不同。cerr的作用是向標準錯誤設備(standard error device輸出有關出錯信息。cerr流中的信息只能在顯示器輸出。當調試程序時,往往不希望程序運行時的出錯信息被送到其他文件,而要求在顯示器上及時輸出,這時應該用cerr,cerr流中的信息是用戶根據(jù)需要指定的。clog流對象也是標準錯誤流,它是console log的縮寫。它的作用和cerr相同,都是在終端顯示器上

38、顯示出錯信息。不同的是cerr不經(jīng)過緩沖區(qū),直接向顯示器上輸出有關信息,而clog中的信息存放在緩沖區(qū)中,緩沖區(qū)滿后或遇endl時向顯示器輸出。 4用什么方法來控制輸入輸出流中出現(xiàn)的錯誤? 答:為提高程序的可靠性,應在程序中檢測I/O流的操作是否正常。當檢測到流操作出現(xiàn)錯誤時,可以通過異常處理來解決問題。 5比較讀寫文本文件與二進制文件的異同。 答:從文件編碼的方式來看,文件可分為ASCII碼文件和二進制碼文件兩種。 ASCII文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應一個字節(jié),用于存放對應的ASCII碼。例如,數(shù)5678的存儲形式為: ASC碼: 00110101 0011011

39、0 00110111 00111000 十進制碼: 5 6 7 8 共占用4個字節(jié)。ASCII碼文件可在屏幕上按字符顯示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可顯示文件的內容。 由于是按字符顯示,因此能讀懂文件內容。 二進制文件是按二進制的編碼方式來存放文件的。 例如, 數(shù)5678的存儲形式為: 00010110 00101110只占二個字節(jié)。二進制文件雖然也可在屏幕上顯示, 但其內容無法讀懂。C+系統(tǒng)在處理這些文件時,并不區(qū)分類型,都看成是字符流,按字節(jié)進行處理。 輸入輸出字符流的開始和結束只由程序控制而不受物理符號(如回車符的控制。 因此也把這種文件稱作“流式文件”。

40、6隨機讀寫是什么意思,常用于哪種類型的文件? 答:在C+中可以由程序移動文件指針,從而實現(xiàn)文件的隨機訪問,即可讀寫流中任意一段內容。一般文本文件很難準確定位,所以隨機訪問多用于二進制文件。 7文件流和字符串流有什么區(qū)別? 答:文件在C+看來是字符流或二進制流,文件流是以外存文件為輸入輸出對象的數(shù)據(jù),所以文件流是與設備相關的??梢园蚜鞯母拍顟玫阶址⊿tring) 上。這樣字符串就可以看作字符串流。字符串流不是以外存文件為輸入輸出的對象,而以內存中用戶定義的字符數(shù)組為輸入輸出的對象。字符串流是與內存相關,所以也稱內存流??梢杂幂斎胼敵霾僮鱽硗瓿勺址鞯牟僮?。 三、編程題 1 x= 468y= -3.42565

溫馨提示

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

評論

0/150

提交評論