面向?qū)ο蟪绦蛟O(shè)計-試卷試題-A(附答案)_第1頁
面向?qū)ο蟪绦蛟O(shè)計-試卷試題-A(附答案)_第2頁
面向?qū)ο蟪绦蛟O(shè)計-試卷試題-A(附答案)_第3頁
面向?qū)ο蟪绦蛟O(shè)計-試卷試題-A(附答案)_第4頁
面向?qū)ο蟪绦蛟O(shè)計-試卷試題-A(附答案)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、姓名: 學(xué)號: 系別: 年級專業(yè): 密封線線_ _ 東莞理工學(xué)院(本科)試卷(A卷)2012 -2013學(xué)年第二學(xué)期面向?qū)ο蟪绦蛟O(shè)計試卷開課單位: 計算機學(xué)院,考試形式:閉卷,允許帶 入場題序一二三四五六總 分得分評卷人 一單項選擇題 (15小題,每小題2分,共30分,請將正確答案填寫在以下對應(yīng)的答題表格中)題號12345678910答案題號1112131415答案1、在類定義的外部,可以被訪問的成員有( )A、所有類成員 B、private的類成員C、public或private的類成員 D、public的類成員 2、下列關(guān)于C+語言類的描述中錯誤的是( ) 。 A 、類用于描述事物的屬性和

2、對事物的操作 B、 類與類之間通過封裝而具有明確的獨立性 C、 類與類之間必須是平等的關(guān)系,而不能組成層次結(jié)構(gòu) D、 類與類之間可以通過一些方法進(jìn)行通信和聯(lián)絡(luò)3、下列數(shù)組定義中,不正確的是( )。 A、 int x13; B、 int x22=1,2,3; C、 int x2=1,2,3,4 ; D、 int x2=1,2,3,4 4、定義析構(gòu)函數(shù)時,應(yīng)該注意:( )A、其名與類名完全相同 B、返回類型是void類型C、無形參,也不可重載 D、函數(shù)體中必須有delete語句5、下列函數(shù)中,正確的遞歸函數(shù)是( )。 A 、int Fun(int n) if(n<1) return 1; e

3、lse return n*Fun(n+1); B 、int Fun(int n) if (abs(n)<1) return 1; else return n*Fun(n/2); C 、int Fun(int n) if(n>1) return 1; else return n*Fun(n*2); D、 int Fun(int n) if(n>1) return 1; else return n*Fun(n-1); 6、在C+中編譯器所生成的文件的擴(kuò)展名為( )答案修改過A、 .cpp B、 .obj C、 .lib D、 .exe7、派生類的對象對它的基類成員中的( )是可以

4、訪問A、公有繼承的公有成員  B、公有繼承的私有成員 C、公有繼承的保護(hù)成員D、私有繼承的公有成員8. C+設(shè)置虛基類的目的是( )A、消除二義性 B、簡化程序 C、提高運行效率 D、減少目標(biāo)代碼9. 以下關(guān)于this指針的敘述中正確的是:( )A、任何與類相關(guān)的函數(shù)都有this指針; B、類的成員函數(shù)都有this指針;C、類的友員函數(shù)都有this指針; D、類的非靜態(tài)成員函數(shù)才有this指針;10實現(xiàn)運行時的多態(tài)性采用( )A、重載函數(shù) B、構(gòu)造函數(shù) C、析構(gòu)函數(shù) D、虛函數(shù)11、若有int a10=0,1,2,3,4,5,6,7,8,9,*p=&am

5、p;a5;則(      ) 不是對a數(shù)組元素的正確引用(其中0i<10)A、pi B、 *(*(p+i) ) C、ap-a D、* (&ai)12、int Func(int,int);不可與下列哪個函數(shù)構(gòu)成重載( )A、int Func(int,int,int); B、double Func(int,int);C、double Func(double,double); D、double Func(int,double);13、局部變量可以隱藏全局變量,那么在有同名全局變量和局部變量的情形時,可以用( )提供對全局變量的

6、訪問。 【內(nèi)層隱藏外層】 A 、域運算符 B、指針 C、重載 D、引用 14下列描述中,正確的是:( ) A、所有的運算符號都可以重載。 B、基類類型的指針可以指向子類,子類類型的指針也可以指向基類?!局挥衟ublic繼承前一個說法才成立】姓名: 學(xué)號: 系別: 年級專業(yè): 密封線線 C、可以在類體內(nèi)對靜態(tài)數(shù)據(jù)成員進(jìn)行初始化。【必須類外初始化】 D、動態(tài)聯(lián)編要滿足兩個條件:被調(diào)用的成員函數(shù)是虛函數(shù);用指針或引用調(diào)用虛函數(shù)。15、下面類的定義,有( )處錯誤。 class MyClass private: int i=0; 2 public: void MyClass(); 3 MyClass(

7、int Value); 4 1A、 1 B、 2 C 、3 D、 4二填空題(每題2分,共20分)1、static加在局部變量定義前,改變局部變量的生存期但不改變它 作用域 的。2. 類的私有成員只能被它的成員函數(shù)和 友元 函數(shù)訪問。3. 一個抽象類的派生類可以實例化的必要條件是實現(xiàn)了所有的 純虛函數(shù) 。4、假定AB為一個類,有類AB的兩個對象a1,a2;則執(zhí)行語句AB *a10=&a1,&a2;時系統(tǒng)自動調(diào)用該類的構(gòu)造函數(shù)的次數(shù)為 0 。5、通過C+語言中類的 繼承和派生 機制,可以擴(kuò)充和完善已有類以適應(yīng)新的需求?!敬鸢感薷倪^】6. 若在類的定義體中給出了一個成員函數(shù)的完整定

8、義,則該函數(shù)屬于 內(nèi)聯(lián)函數(shù) 。7. 不同對象可以調(diào)用相同名稱的函數(shù),但可導(dǎo)致完全不同的行為的現(xiàn)象稱為 多態(tài) 。8. 對象的核心概念就是通常所說的 繼承 、 封裝 和多態(tài)性 。9. 在一個類中可以定義 1 個析構(gòu)函數(shù)。10、若只需要通過一個成員函數(shù)讀取數(shù)據(jù)成員的值,而不需要修改它,則應(yīng)在函數(shù)頭的后面加上 const 關(guān)鍵字。 三判斷題,對的打T錯的打F。(5小題,每小題2分,共10分)1. 函數(shù)形參的作用域是該函數(shù)的函數(shù)體。( )2. 純虛函數(shù)必須在抽象類中,所以抽象類中的成員函數(shù)必須是純虛函數(shù)。(× )3. 派生類中至少包含了它的所有基類的成員,在這些成員中可能有的是不可訪問。( )

9、答案修改過4. 可以在類的構(gòu)造函數(shù)中對靜態(tài)數(shù)據(jù)成員進(jìn)行初始化。(× )5. 構(gòu)造函數(shù)和析構(gòu)函數(shù)都可以定義為虛函數(shù)。(×)。 四程序填空(每題6分,共18分)根據(jù)程序的功能描述,將程序下劃線空白處內(nèi)容補充完整(每空白3分)1. 閱讀下面是一段關(guān)于類的派生的程序,請完成填空。/Point.h#ifndef _POINT_H#define _POINT_Hclass Point public:void initPoint(float x = 0, float y = 0) this->x = x; this->y = y;void move(float offX, f

10、loat offY) x += offX; y += offY; float getX() const return x; float getY() const return y; private:float x, y;#endif /_POINT_H/Rectangle.h#ifndef _RECTANGLE_H#define _RECTANGLE_H#include "Point.h"class Rectangle: private Point public:void initRectangle(float x, float y, float w, float h) t

11、his->x = x;this->y= y; 姓名: 學(xué)號: 系別: 年級專業(yè): 密封線線this->w = w;this->h = h;void move(float offX, float offY) Point:move(offX,offY);float getH() const return h; float getW() const return w; private:float w, h;#endif /_RECTANGLE_H#include <iostream>#include <cmath>using namespace std

12、;int main() Rectangle rect;rect.initRectangle(2, 3, 20, 10);rect.move(3,2); cout << "The data of rect(x,y,w,h): " << endl;<< rect.getW() << ", "<< rect.getH() << endl;return 0;2. 以下程序是定義一個計數(shù)器類counter,對其重載運算符“+”,請?zhí)羁铡?class counter private: int n

13、; public: counter() n=0; counter(int i)n=i; counter operator +(counter &c) /運算符重載函數(shù) counter t; t.n=n+c.n; return t; void disp() cout<<"n="<<n<<endl; ; void main() counter c1(5),c2(10),c3; c3=c1+c2; c1.disp(); c2.disp(); c3.disp();3.下面是動態(tài)創(chuàng)建一個8x9x8的三維數(shù)組的一段程序,請按提示完成填空。#i

14、nclude <iostream>using namespace std;int main() float *cp=new float*8;/創(chuàng)建符合題目要求的指針并初始化 for(int k=0;k<8;k+) cpk=new float *9;for(int m=0;m<8;m+)for(int n=0;n<9;n+) cpmn=new float 8; float (*cp)98 = new float898 ;/兩種方法都可以,具體看填空的地方有多大 for (int i = 0; i < 8; i+) for (int j = 0; j <

15、9; j+) for (int k = 0; k < 8; k+) *(*(*(cp + i) + j) + k) =static_cast<float>(i * 100 + j * 10 + k); for ( i = 0; i < 8; i+) for (int j = 0; j < 9; j+) for (int k = 0; k < 8; k+)cout << cpijk << " "cout << endl;cout << endl;delete cp ;/釋放指針指向的空間ret

16、urn 0;五、程序執(zhí)行(每題5分,共10分)閱讀下面的程序,并分別寫出程序執(zhí)行的完整輸出結(jié)果。1. 程序1#include <iostream> using namespace std; class base public: static int n; base(int x) n=x; virtual void set(int m) n = m; cout << n <<' ' ; int base:n=0; class deriveA:public base public: deriveA(int x):base(x) void set(

17、int m) n += m; cout << n <<' ' ; class deriveB:public base 姓名: 學(xué)號: 系別: 年級專業(yè): 密封線線 public: deriveB(int x):base(x) void set(int m) n +=m; cout <<n << ' ' ; int main() deriveA dl(0); deriveB d2(1); base *pbase; pbase = &dl; pbase->set(1); pbase->base:se

18、t(0); pbase = &d2; pbase->set(1); pbase->base:set(3);cout<<endl;return 0;輸出結(jié)果:2 0 1 32. 程序2#include <iostream>using namespace std;class Base1 public:int i;Base1(int x) i=x;cout << "Constructing Base1 " << i << endl; ;class Base2: public Base1 public:

19、Base2(int j): Base1(j) cout << "Constructing Base2 " << j << endl; ;class Base3 public:Base3() cout << "Constructing Base3 *" << endl; ;class Derived: public Base2, public Base3 public:int h;Derived(int a, int b, int c, int d): member2(d), member1(c)

20、, Base2(b)h=a; private: Base1 member1;Base2 member2;Base3 member3;int main() Derived obj(1, 2, 3, 4);return 0;輸出結(jié)果:Constructing Base1 2Constructing Base2 2Constructing Base3 *Constructing Base1 3Constructing Base1 4Constructing Base2 4Constructing Base3 *六、程序設(shè)計(12分)定義一個抽象類Stereo,函數(shù)Volume為純虛函數(shù),用來計算體積

21、。由抽象類分別派生出立方體Cube類、球體Sphere類、圓柱體Cylinder類,并求其體積(其中球體的體積公式為 V=4/3*PI*R*R*R)。各立體形狀的相關(guān)數(shù)據(jù)成員(其中:r代表半徑,l代表長度,w代表寬度,h代表高度)屬性都為private,并且通過各類的構(gòu)造函數(shù)設(shè)置。total是一個通用的,用以求不同立體形狀的體積總和的全局函數(shù)。1)定義和實現(xiàn)各個類,給出相關(guān)的成員數(shù)據(jù)、構(gòu)造函數(shù)和必要的成員函數(shù)即可。(4分,每個類1分)2)定義和實現(xiàn)total函數(shù),注意該函數(shù)為全局函數(shù)不是某各類的成員函數(shù)。 (4分)3)編寫main函數(shù)進(jìn)行測試,功能要求如下:a、用基類指針數(shù)組,使它的每一個元素指向一個派生類的對象,并且所有形狀立方體對象都進(jìn)行內(nèi)存動態(tài)分配和回收(即用new和delete操作符);b、主函數(shù)內(nèi)調(diào)用total輸出所有形狀立方體的體積之和。(4分)注:主函數(shù)中用到的構(gòu)造函數(shù)和total函數(shù)如下 Cube(5.0,5.0,8.0); /實參為立方體的長、寬、高。 Sphere(6.0); /實參為球體的半徑。 Cylinder(5.0,8.0); /實參為圓柱體的底面半徑、高。 total(s,3);/ 實參s為基類指針數(shù)組,3為數(shù)組的大小。#include<iostream>using namespace std;

溫馨提示

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

評論

0/150

提交評論