




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、文檔供參考,可復(fù)制、編制,期待您的好評(píng)與關(guān)注! 程序設(shè)計(jì)(C+語言)期中考試試題班級(jí):_ 學(xué)號(hào):_ 姓名:_7 / 7一、簡(jiǎn)答題(每小題4分,共20分)1. 在C+中聲明類時(shí),如何做到多個(gè)實(shí)例共享一個(gè)全局變量?2. 引用和指針之間有什么區(qū)別?3. 什么是抽象類?析構(gòu)函數(shù)可以聲時(shí)為虛函數(shù)嗎?如果可以,在什么情況下使用?4. 什么是多態(tài)性?多態(tài)性是如何實(shí)現(xiàn)的? 5. 構(gòu)造函數(shù)與析構(gòu)函數(shù)的功能是什么? 在繼承層次上,構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序如何? 二、程序改錯(cuò)題 (每小題5分,共20分)1. 下面的程序是否有錯(cuò)誤,如果有錯(cuò),請(qǐng)說明原因并改正。# include <iostream.h>
2、; int * FuncOne() int * pint = new int(5); count <<"the value of pInt in FuncOne is:"<<* pint<<endl; return pint; int main() int * pint = FuncOne(); cout <<"the value of pInt back in main is:"<< * pint << endl return 0; 2. 下面的程序是否有錯(cuò)誤,如果有錯(cuò),請(qǐng)說明原因
3、并改正。struct A1 int i; ; class A2 int i; ; int main() A1 a1; a1.i = 0; A2 a2; a2.i = 0; 3. 下面的程序是否有錯(cuò)誤,如果有錯(cuò),請(qǐng)說明原因并改正。int main() char szTest = "hello" const char* psz = szTest; psz0 = b; 4. 下面的程序是否有錯(cuò)誤,如果有錯(cuò),請(qǐng)說明原因并改正。class Shape() public: Shape(); virtual Shape(); virtual Shape(const Shape&)
4、; 三、程序閱讀題(每小題5分,共20分)1. 分析下面的程序,并寫出運(yùn)行結(jié)果。class A public: virtual void func() cout << "I am in base" << endl; ;class B : public A public: virtual void func() cout << "I am in derived" << endl; ;void main() B* bb = new B; bb->func(); A* aa = bb; aa->fun
5、c(); 以上程序的輸出結(jié)果是 。2. 分析下面的程序,并寫出運(yùn)行結(jié)果。class Sample public:int v;Sample() ;Sample(int n):v(n) ;Sample( Sample & x) v = 2 + x.v ; ;Sample PrintAndDouble( Sample o) cout << o.v <<endl; o.v = 2 * o.v; return o;int main() Sample a(5);Sample b = a;cout << b.v << endl;Sample c = P
6、rintAndDouble( b );cout << c.v << endl;Sample d;d = a;cout << d.v << endl;以上程序的輸出結(jié)果是 。3. 分析下面的程序,并寫出運(yùn)行結(jié)果。class A public:int val;A(int = 0) val = n; ; A& GetObj() return *this; ;main() A a; cout <<a.val << endl;a.GetObj() = 5;cout << a.val << endl;以
7、上程序的輸出結(jié)果是 。4. 分析下面的程序,并寫出運(yùn)行結(jié)果。class B private: int nBVal;public: B ( int n ) nBVal = n; void Print() cout << "nBVal="<< nBVal << endl; ;class D: public B private : int nDVal;public: D( int n) : B(3*n) nDVal = n;void Print() B:Print(); cout << "nDVal="<&
8、lt;nDVal<<endl; ;main() B * pb = new B(2); pb->Print(); D d(4); d.Print (); B * p = &d; p->Print(); delete pb;以上程序的輸出結(jié)果是 。四、程序填空題(每小題10分,共20分)1. 填空使程序能編譯通過,并寫出運(yùn)行的輸出結(jié)果。class MyString private:char * p;public:MyString( char * s ) p = new charstrlen(s)+1;strcpy(p,s);MyString( MyString &a
9、mp; o ) strcpy( p, o.p);MyString() delete p; void Copy( char * s) p = new charstrlen(s)+1;strcpy(p,s);const char * c_str() ;main() MyString s1("This"), s2 =s1;s2.Copy ( "Hello");cout << s1.c_str () << endl << s2.c_str () ;該程序輸出結(jié)果為: 。2. 填空使程序能編譯通過,并寫出運(yùn)行的輸出結(jié)果。#inc
10、lude <iostream.h>template < >class myclass T i;public: myclass (T a) i = a; void show( ) cout << i << endl; ;void main() myclass< > obj("This"); obj.show();該程序輸出結(jié)果為: 。五、程序設(shè)計(jì)題(共20分)設(shè)有如下定義的幾個(gè)類,其中,Graphic是個(gè)抽象類,它定義了平面封閉圖形應(yīng)該具有的運(yùn)算求面積getArea,它可以有任意多子類,如Circle和Rectang
11、le便是它的兩個(gè)子類。GraphicContainer是一個(gè)包含Graphic對(duì)象的類,該類有兩個(gè)數(shù)據(jù)成員,其中:m_buffer是個(gè)數(shù)組,用于存放不同的Graphic對(duì)象;m_sum用來表示該數(shù)組中實(shí)際存放元素的個(gè)數(shù),即Graphic對(duì)象的總數(shù)?,F(xiàn)在要求你完成該類的求所有Graphic對(duì)象總面積函數(shù)getAllArea的實(shí)現(xiàn)代碼。為了完成該函數(shù),允許你在其它相關(guān)類中增加方法及其實(shí)現(xiàn)。程序設(shè)計(jì)(C+語言)期中考試參考答案一、簡(jiǎn)答題(每小題5分,共20分)6. 在C+中聲明類時(shí),如何做到多個(gè)實(shí)例共享一個(gè)全局變量?聲明一個(gè)類靜態(tài)成員變量。 7. 引用和指針之間有什么區(qū)別?引用是一個(gè)別名,而指針是一
12、個(gè)保存地址的變量。8. 什么是抽象類?析構(gòu)函數(shù)可以聲時(shí)為虛函數(shù)嗎?如果可以,在什么情況下使用?如果一個(gè)類中包括純虛函數(shù),則該類為抽象類,抽象類不能實(shí)例化,主要是作為接口定義。一般情況下類的析構(gòu)函數(shù)都定義成虛函數(shù),主要是考慮在使用基類指針操作派生類對(duì)象時(shí)保證類的析構(gòu)順序。9. 什么是多態(tài)性?多態(tài)性是如何實(shí)現(xiàn)的? 函數(shù)多態(tài)性是指用多個(gè)含義重載一個(gè)函數(shù)的能力,即允許創(chuàng)建多個(gè)名稱相同的函數(shù)。可通過改變同名函數(shù)變?cè)念愋突騻€(gè)數(shù)來實(shí)現(xiàn)。10. 構(gòu)造函數(shù)與析構(gòu)函數(shù)的功能是什么? 在繼承層次上,構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序如何? 構(gòu)造函數(shù)用來初始化。析構(gòu)函數(shù)用來做清除工作,一般包括內(nèi)存釋放。在繼承層次上,構(gòu)造
13、函數(shù)和析構(gòu)函數(shù)的調(diào)用順序?yàn)椋簶?gòu)造函數(shù)是先基類,后派生類;析構(gòu)函數(shù)是先派生類,后基類。二、程序改錯(cuò)題 (每小題5分,共20分)5. 下面的程序是否有錯(cuò)誤,如果有錯(cuò),請(qǐng)說明原因并改正。# include <iostream.h> int * FuncOne() int * pint = new int(5); count <<"the value of pInt in FuncOne is:"<<* pint<<endl; return pint; int main() int * pint = FuncOne(); cout &
14、lt;<"the value of pInt back in main is:"<< * pint << endl return 0; 有錯(cuò)誤,內(nèi)存泄漏。# include <iostream.h> int FuncOne() int * pint = new int(5); cout <<"the value of pInt in FuncOne is: "<<* pint<<endl; int temp = *pint; delete pint; return temp;
15、int main() int theint = FuncOne(); cout <<”the value of pInt back in main is:”<<theint << endl; return 0; 6. 下面的程序是否有錯(cuò)誤,如果有錯(cuò),請(qǐng)說明原因并改正。struct A1 int i; ; class A2 int i; ; int main() A1 a1; a1.i = 0; A2 a2; a2.i = 0; 有錯(cuò)誤,類定義中未顯示權(quán)限定義符缺省為private。 struct A1 int i; ; class A2 public:int
16、 i; ; int main() A1 a1; a1.i = 0; A2 a2; a2.i = 0; 7. 下面的程序是否有錯(cuò)誤,如果有錯(cuò),請(qǐng)說明原因并改正。int main() char szTest = "hello" const char* psz = szTest; psz0 = b; 有錯(cuò)誤,psz是一字符串指針,該指針指向的內(nèi)容是常量,指針指向的內(nèi)容不能被修改。int main() char szTest = "hello" char* const psz = szTest; psz0 = b; 8. 下面的程序是否有錯(cuò)誤,如果有錯(cuò),請(qǐng)說明原
17、因并改正。class Shape() public: Shape(); virtual Shape(); virtual Shape(const Shape&); 有錯(cuò)誤,不能聲明一個(gè)拷貝構(gòu)造函數(shù)為虛擬函數(shù)。 class Shape() public: Shape(); virtual Shape(); Shape(const Shape&); 三、程序閱讀題(每小題5分,共25分)5. 分析下面的程序,并寫出運(yùn)行結(jié)果。class A public: virtual void func() cout << "I am in base" <&
18、lt; endl; ;class B : public A public: virtual void func() cout << "I am in derived" << endl; ;void main() B* bb = new B; bb->func(); A* aa = bb; aa->func(); 以上程序的輸出結(jié)果是:I am in derived I am in derived 6. 分析下面的程序,并寫出運(yùn)行結(jié)果。class Sample public:int v;Sample() ;Sample(int n):v(n
19、) ;Sample( Sample & x) v = 2 + x.v ; ;Sample PrintAndDouble( Sample o) cout << o.v <<endl; o.v = 2 * o.v; return o;int main() Sample a(5);Sample b = a;cout << b.v << endl;Sample c = PrintAndDouble( b );cout << c.v << endl;Sample d;d = a;cout << d.v <&
20、lt; endl;以上程序的輸出結(jié)果是:79205 7. 分析下面的程序,并寫出運(yùn)行結(jié)果。class A public:int val;A(int n = 0) val = n; ; A& GetObj() return *this; ;main() A a; cout <<a.val << endl;a.GetObj() = 5;cout << a.val << endl;以上程序的輸出結(jié)果是:05 8. 分析下面的程序,并寫出運(yùn)行結(jié)果。class B private: int nBVal;public: B (
21、 int n ) nBVal = n; void Print() cout << "nBVal="<< nBVal << endl; ;class D: public B private : int nDVal;public: D( int n) : B(3*n) nDVal = n;void Print() B:Print(); cout << "nDVal="<<nDVal<<endl; ;main() B * pb = new B(2); pb->Print(); D d
22、(4); d.Print (); B * p = &d; p->Print(); delete pb;以上程序的輸出結(jié)果是:nBVal=2nBVal=12nDVal=4nBVal=12 四、程序填空題(每1小題10分,共20分)3. 填空使程序能編譯通過,并寫出運(yùn)行的輸出結(jié)果。class MyString private:char * p;public:MyString( char * s ) p = new charstrlen(s)+1;strcpy(p,s);MyString( MyString & o ) p = new charstrlen(o.p ) + 1
23、;strcpy( p, o.p);MyString() delete p; void Copy( char * s) if (p!=NULL) delete p;p = new charstrlen(s)+1;strcpy(p,s);const char * c_str() return p;main() MyString s1("This"), s2 =s1;s2.Copy ( "Hello");cout << s1.c_str () << endl << s2.c_str () ;該程序輸出結(jié)果為:ThisHell
24、o 4. 填空使程序能編譯通過,并寫出運(yùn)行的輸出結(jié)果。#include <iostream.h>template < class T >class myclass T i;public: myclass (T a) i = a; void show( ) cout << i << endl; ;void main() myclass< char * > obj("This"); obj.show();該程序輸出結(jié)果為:This 五、程序設(shè)計(jì)題(共20分)設(shè)有如下定義的幾個(gè)類,其中,Graphic是個(gè)抽象類,它定義了
25、平面封閉圖形應(yīng)該具有的運(yùn)算求面積getArea,它可以有任意多子類,如Circle和Rectangle便是它的兩個(gè)子類。GraphicContainer是一個(gè)包含Graphic對(duì)象的類,該類有兩個(gè)數(shù)據(jù)成員,其中:m_buffer是個(gè)數(shù)組,用于存放不同的Graphic對(duì)象;m_sum用來表示該數(shù)組中實(shí)際存放元素的個(gè)數(shù),即Graphic對(duì)象的總數(shù)?,F(xiàn)在要求你完成該類的求所有Graphic對(duì)象總面積函數(shù)getAllArea的實(shí)現(xiàn)代碼。為了完成該函數(shù),允許你在其它相關(guān)類中增加方法及其實(shí)現(xiàn)。#include<iostream.h>class Graphic public: virtual d
26、ouble getArea()=0;class Triangle: public Graphic protected:double height, width;public:Triangle(double h, double w) height=h; width=w; double getArea() return height*width*0.5; ;class Rectangle: public Graphic protected:double height, width; public: Rectangle(double h, double w) height=h; width=w; d
27、ouble getArea() return height*width; ;class Circle: public Graphic protected: double redius; public: Circle(double r) redius=r; double getArea() return redius*redius*3.14; ;class GraphicContainer private:Graphic *m_buffer; int m_sum; public: GraphicContainer(int sum)m_sum=sum;m_buffer=new Graphic *m_sum;char select;double he
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄭州餐飲加盟管理辦法
- 部門單獨(dú)核算管理辦法
- 部門績(jī)效管理辦法原則
- 煙臺(tái)幸福民俗活動(dòng)方案
- 煙機(jī)灶具活動(dòng)方案
- 煙草慶?;顒?dòng)方案
- 擔(dān)保機(jī)構(gòu)客戶管理辦法
- 各類人員出入管理辦法
- 邛崍轎車報(bào)廢管理辦法
- 賭資涉案資金管理辦法
- 2023年本科招生考試
- 碳捕集、利用與封存技術(shù)課件
- 碳達(dá)峰和“碳中和”環(huán)境知識(shí)科普宣傳PPT教學(xué)課件
- 中文版b4a新手指南-第14-15章語言畫圖
- 新入職護(hù)士培訓(xùn)考試試題及答案
- 《消防安全技術(shù)實(shí)務(wù)》課本完整版
- 公路工程標(biāo)準(zhǔn)施工監(jiān)理招標(biāo)文件(2018年版)
- 北師大版七年級(jí)數(shù)學(xué)下冊(cè) 與信息技術(shù)相融合的數(shù)學(xué)教學(xué)案例 教案
- 鈍針穿刺法臨床應(yīng)用護(hù)理
- 精品中文版b4a新手指南第4章開發(fā)環(huán)境
- 光纜線路的故障分析及障礙搶修
評(píng)論
0/150
提交評(píng)論