復(fù)習(xí)試卷及答案_第1頁(yè)
復(fù)習(xí)試卷及答案_第2頁(yè)
復(fù)習(xí)試卷及答案_第3頁(yè)
復(fù)習(xí)試卷及答案_第4頁(yè)
復(fù)習(xí)試卷及答案_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一、選擇題(每題2分,20題,共40分)1 下列關(guān)鍵字中,( )不是類(lèi)定義中使用的關(guān)鍵字。A class B. public C. switch D. private2關(guān)于友元函數(shù)的描述中,錯(cuò)誤的是( )。A友元函數(shù)說(shuō)明在類(lèi)體內(nèi)B友元函數(shù)不是成員函數(shù)C友元函數(shù)必須用對(duì)象來(lái)引用D友元函數(shù)可直接訪問(wèn)類(lèi)中私有成員3下列關(guān)于對(duì)象引用的描述中,錯(cuò)誤的是( )。A對(duì)象引用不能作數(shù)組元素B對(duì)象引用可作為函數(shù)的參數(shù)和返回值C定義對(duì)象引用時(shí)需用同類(lèi)對(duì)象的地址值進(jìn)行初始化 D對(duì)象引用成員表示與對(duì)象相同4下列函數(shù)參數(shù)默認(rèn)值定義錯(cuò)誤的是() A. Fun(int x, int y=0) B. Fun(int x =

2、100) C. Fun(int x = 0, int y) D. Fun(int x = f( ) (假定函數(shù)f()已經(jīng)定義)class B: public A int k;public:void make()k=m;k=i*j; ;5若類(lèi)A和類(lèi)B的定義如下:class A int i,j;protected:int m;public:int geti()return i;則上述中, ( )是非法的表達(dá)式。 A. void make(); B. int k; C. k=m; D. k=i*j;6下面類(lèi)的定義,有( )處錯(cuò)誤.class MyClassint i=0;public:void My

3、Class();MyClass(int n);A. 1 B. 2 C. 3 D. 47下列是構(gòu)造函數(shù)的特點(diǎn),( )是錯(cuò)誤的。A.構(gòu)造函數(shù)是一種成員函數(shù),它具有一般成員函數(shù)的特點(diǎn)。B.構(gòu)造函數(shù)的名稱(chēng)與其類(lèi)名相同。C.構(gòu)造函數(shù)必須指明其類(lèi)型。D.一個(gè)類(lèi)中可以定義一個(gè)或多個(gè)構(gòu)造函數(shù)。8已知:p是一個(gè)指向類(lèi)A數(shù)據(jù)成員m的指針,a是類(lèi)A的一個(gè)對(duì)象。在給m賦值為5的下列表達(dá)式中,( )是正確的。A. a.p=5 B. a->p=5 C. a.*p=5 D. *a.p=59關(guān)于靜態(tài)成員的描述中,( )是錯(cuò)誤的。A.靜態(tài)成員可分為靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)B.靜態(tài)數(shù)據(jù)成員定義后必須在類(lèi)體內(nèi)進(jìn)行初始化C.

4、靜態(tài)數(shù)據(jù)成員初始化不使用其構(gòu)造函數(shù)D.靜態(tài)成員函數(shù)中不能直接引用非靜態(tài)成員10下列關(guān)于new運(yùn)算符的描述中,錯(cuò)誤的是( )。A. new運(yùn)算符組成的表達(dá)式的值是地址值B. 創(chuàng)建對(duì)象時(shí)不調(diào)用構(gòu)造函數(shù)C.用它創(chuàng)建的對(duì)象須用delete來(lái)刪除D.可用它來(lái)創(chuàng)建動(dòng)態(tài)的對(duì)象和對(duì)象數(shù)組 11下列對(duì)派生類(lèi)的描述中,( )是錯(cuò)誤的。A.一個(gè)派生類(lèi)可以作為另一個(gè)派生類(lèi)的基類(lèi)。B.派生類(lèi)至少應(yīng)有一個(gè)基類(lèi)。C.基類(lèi)中成員訪問(wèn)權(quán)限繼承到派生類(lèi)中都保持不變。D.派生類(lèi)的成員除了自己定義的成員外,還包含了它的基類(lèi)成員。12派生類(lèi)的對(duì)象對(duì)它的哪一類(lèi)基類(lèi)成員是可以訪問(wèn)的( ) A.公有繼承的基類(lèi)的公有成員B.公有繼承的基類(lèi)的保

5、護(hù)成員C.公有繼承的基類(lèi)的私有成員D.保護(hù)繼承的基類(lèi)的公有成員13關(guān)于基類(lèi)和派生類(lèi)的描述中,錯(cuò)誤的是( )。A基類(lèi)和派生類(lèi)間是包含關(guān)系 B派生類(lèi)中可以定義自己的成員 C基類(lèi)成員在派生類(lèi)中的訪問(wèn)權(quán)限與繼承方式有關(guān)D派生類(lèi)中繼承了基類(lèi)中的全部成員14下列對(duì)運(yùn)算符重載的描述中,正確的是( )。A. 運(yùn)算符重載可以改變結(jié)合性 B.運(yùn)算符重載可以改變優(yōu)先級(jí)C.運(yùn)算符重載可以改變操作數(shù)的個(gè)數(shù) D.運(yùn)算符重載不改變優(yōu)先級(jí)和結(jié)合性157.p具有指向CSample類(lèi)的指針類(lèi)型; 執(zhí)行語(yǔ)句 p = new CSample5 會(huì)使CSample類(lèi)構(gòu)造函數(shù)執(zhí)行 ( )次.A. 0B. 1C. 5D. -116要讓一個(gè)

6、類(lèi)中的所有對(duì)象具有共同的數(shù)據(jù),請(qǐng)使用()。A. 常數(shù)成員變量 B. 私有數(shù)據(jù)成員 C. 靜態(tài)數(shù)據(jù)成員 D. 以上都是17給定一個(gè)基類(lèi)Person和一個(gè)派生類(lèi) Man,下面哪個(gè)代碼片段是不正確的。()A.Person pp; Man *mm=&pp;BMan aa; Person *bb=&aa;C. Man jj; Person &dd=jj;D. Person pp; Man aa; pp=aa;18在下列打開(kāi)磁盤(pán)文件的訪問(wèn)方式常量中,以讀方式打開(kāi)文件時(shí)應(yīng)選用( )。A. in B. out C. ate D. app19下列關(guān)于抽象類(lèi)的描述中,錯(cuò)誤的是( )。A.抽

7、象類(lèi)中至少有一個(gè)純虛函數(shù)B.抽象類(lèi)不能定義對(duì)象C.抽象類(lèi)可以定義對(duì)象引用D.抽象類(lèi)的派生類(lèi)一定不再是抽象類(lèi)20控制輸出格式的控制符中,( )是設(shè)置輸出寬度的。A. ws B. ends C. setfill() D. setw()得分二、判斷題(每題1分,15題,共15分)1用class定義的類(lèi)中,默認(rèn)的訪問(wèn)權(quán)限是公有的。( )2如果一個(gè)類(lèi)中沒(méi)有定義任何構(gòu)造函數(shù),則該類(lèi)的對(duì)象便無(wú)法初始化。( )3在c+中,只能重載已有的運(yùn)算符。( )4友元函數(shù)是成員函數(shù),它可以訪問(wèn)類(lèi)中私有成員。( )5對(duì)象數(shù)組的元素必須是同一個(gè)類(lèi)的對(duì)象。( )6子對(duì)象的初始化可以不放在該類(lèi)的構(gòu)造函數(shù)中。( )7運(yùn)算符new可

8、以創(chuàng)建變量或?qū)ο螅?也可以創(chuàng)建數(shù)組。( )8基類(lèi)中私有成員派生類(lèi)不可直接訪問(wèn)。( )9公有繼承方式下,基類(lèi)中公有成員和保護(hù)成員在派生類(lèi)中仍然是公有的和保護(hù)的。( )10私有繼承方式下,基類(lèi)中公有成員和保護(hù)成員在派生類(lèi)中都是私有的。( )11派生類(lèi)的構(gòu)造函數(shù)中顯式或隱含的包含著直接基類(lèi)的構(gòu)造函數(shù)。( )12派生類(lèi)的對(duì)象不可以給基類(lèi)對(duì)象賦值。( )13派生類(lèi)的構(gòu)造函數(shù)中應(yīng)包含直接基類(lèi)的構(gòu)造函數(shù)。( )14基類(lèi)中的保護(hù)成員在其派生類(lèi)中可以訪問(wèn),而派生類(lèi)對(duì)象不可訪問(wèn)。( )15、C+中使用const定義常量。( )得分三、填空題(每空1分,10空,共10分)1面向?qū)ο蟮某绦蛟O(shè)計(jì)區(qū)別于面向過(guò)程的程序設(shè)計(jì)

9、,最大的特點(diǎn)是引入了_和_的概念。2面向?qū)ο蟮娜筇匦裕篲、_、_。3C+中虛基類(lèi)的引入,其真正目的是_。4C+中函數(shù)的重載有兩種,一種是_、一種是_。5在多繼承方式下,處于同一層次的各基類(lèi)構(gòu)造函數(shù)的執(zhí)行順序取決于_。6this指針是一個(gè)隱含于每一個(gè)類(lèi)的成員函數(shù)的特殊指針,該指針?biāo)赶虻膶?duì)象是_;得分四、寫(xiě)出程序運(yùn)行結(jié)果(每題5分,4題,共20分)1#include <iostream.h>#include <string.h>class Apublic:A(int i=0) a=i+b; void Print(); A() cout<<"Dest

10、ructorn" private:int a;static int b; ;void A:Print() cout<<'('<<a<<','<<b<<')'<<endl; int A:b=5; void main()A array3; array0=A(1); array1=A(3);A *parr3; for(int i=0;i<3;i+) parri=&arrayi;for(i=0;i<3;i+) parri->Print();2#in

11、clude <iostream.h>class Studentpublic:Student(int i=0,double j=0) num=i;score=j; void print() cout<<num<<,<<score<<endl; friend void fun(Student &rs);private:int num;double score;void fun(Student &rs) rs.num=1100;rs.score=80;rs.print();void main() Student s1(100

12、2,50),s2; s1.print(); fun(s2);3 #include<iostream>using namespace std;class Afriend double count(A&);public:A(double t, double r):total(t),rate(r)private:double total;double rate;double count(A&a)a.total+=a.rate*a.total;return a.total;int main(void )A x(100,0.5),y(50,0.1);cout<<c

13、ount(x)<<','<<count(y)<<'n'cout<<count(x)<<'n'return 0;4#include <iostream >using namespace std;class BASEchar c; public: BASE(char n):c(n) virtual BASE()cout<<c<<endl;class DERIVED:public BASE char c; public:DERIVED(char n):BAS

14、E(n+1),c(n)DERIVED()cout<<c<<endl;int main(void) DERIVED('X'); return 0; 得分五、程序設(shè)計(jì)題(15分,第1題5分,第2題10分)1有兩個(gè)長(zhǎng)方體,其長(zhǎng)、寬、高分別為:(1)12,25,30;(2)15,30,20。分別求它們的體積。編寫(xiě)一個(gè)程序,使用類(lèi)來(lái)定義長(zhǎng)方體,在類(lèi)中使用帶參數(shù)的構(gòu)造函數(shù),并在主函數(shù)中,完成兩個(gè)長(zhǎng)方體的實(shí)現(xiàn)。2編寫(xiě)程序:定義抽象基類(lèi)Shape,由它派生出五個(gè)派生類(lèi):Circle(圓形)、Square(正方形)、 Rectangle( 長(zhǎng)方形)、Trapezoid (

15、梯形)和Triangle (三角形),用虛函數(shù)分別計(jì)算各種圖形的面積,并求出它們的和。要求用基類(lèi)指針數(shù)組。使它的每一個(gè)元素指向一個(gè)派生類(lèi)的對(duì)象。 注:主函數(shù)中定義如下對(duì)象Circle circle(12.6); Square square(3.5); Rectangle rectangle(4.5,8.4);Trapezoid trapezoid(2.0,4.5,3.2);Triangle triangle(4.5,8.4); 一、 選擇題(每題2分,20題,共40分)1-5 CCCCD 6-10CCCBB 11-15CADDC 16-20CABDD二、1-5FFTFT 6-10FTTTT 1

16、1-15TFTTT1、類(lèi) 、對(duì)象2、封裝、繼承、多態(tài)3、解決多重繼承下的二義性問(wèn)題4、函數(shù)參數(shù)個(gè)數(shù)不同、函數(shù)參數(shù)類(lèi)型不同5、聲明基類(lèi)的順序6、當(dāng)前正在操作類(lèi)的成員的對(duì)象四、寫(xiě)出程序運(yùn)行結(jié)果(每題5分,4題,共20分)1、DestructorDestructor(6,5)(8,5)(5,5)DestructorDestructorDestructor2、1002,501100,803150,552254. X Y六、程序設(shè)計(jì)題(15分,第1題5分,第2題10分)1、#include <iostream>Using namespace std;class Box public:Box(

17、int,int,int);Int volume(); private:int height;int width;int length;Box:Box(int h,int w,int len) height=h; width=w; length=len;int Box:volume()return(height*width*length);int main()Box box1(12,25,30);cout<<”The volume of box1 is”<<box1.volume()<<endl;Box box2(15,30,21);cout<<”

18、The volume of box2 is”<<box2.volume()<<endl;Return0; 2、#include <iostream>using namespace std;class Shapepublic: virtual double area() const =0; ;class Circle:public Shapepublic:Circle(double r):radius(r) virtual double area() const return 3.14159*radius*radius; protected: double r

19、adius; ;class Square:public Shapepublic: Square(double s):side(s) virtual double area() const return side*side; protected: double side;class Rectangle:public Shapepublic: Rectangle(double w,double h):width(w),height(h) virtual double area() const return width*height; protected: double width,height;

20、;class Trapezoid:public Shapepublic: Trapezoid(double t,double b,double h):top(t),bottom(t),height(h) virtual double area() const return 0.5*(top+bottom)*height; protected: double top,bottom,height; ;class Triangle:public Shapepublic: Triangle(double w,double h):width(w),height(h) virtual double are

21、a() const return 0.5*width*height; protected: double width,height; ;int main() Circle circle(12.6); Square square(3.5); Rectangle rectangle(4.5,8.4); Trapezoid trapezoid(2.0,4.5,3.2); Triangle triangle(4.5,8.4); Shape *pt5=&circle,&square,&rectangle,&trapezoid,&triangle; double a

22、reas=0.0; for(int i=0;i<5;i+) areas=areas+pti->area(); cout<<"totol of all areas="<<areas<<endl; return 0;。一、填空題(每空一分,共15分,15%)1、面向?qū)ο蟪绦蛟O(shè)計(jì)的三大特性是:封裝性、_、_。用來(lái)定義C+類(lèi)的關(guān)鍵字是_。2、要使用C+中的輸入輸出流函數(shù),在程序中必須包含的頭文件是_;要使用字符串處理函數(shù),需包含的頭文件是_。3、任何類(lèi)中允許有三種類(lèi)型的數(shù)據(jù):_、_、_;在默認(rèn)情況下,類(lèi)的成員的操作屬性是_。4、一個(gè)類(lèi)

23、有_個(gè)構(gòu)造函數(shù)。5、this指針是一個(gè)隱含于每一個(gè)類(lèi)的成員函數(shù)的特殊指針,該指針?biāo)赶虻膶?duì)象是_;6、C+中按照對(duì)象生存期的不同,把對(duì)象分為三種:_、_、_。7、C+中虛基類(lèi)的引入,其真正目的是_。得分二、選擇題(每小題2分,共40分,40%)1、下列關(guān)于構(gòu)造函數(shù)和析構(gòu)函數(shù)的描述中,正確的是_。(A)構(gòu)造函數(shù)和析構(gòu)函數(shù)都不能有參數(shù);(B)構(gòu)造函數(shù)和析構(gòu)函數(shù)都可以重載;(C)構(gòu)造函數(shù)和析構(gòu)函數(shù)都沒(méi)有類(lèi)型;(D)構(gòu)造函數(shù)和析構(gòu)函數(shù)都可以繼承;2、下列關(guān)于C+中常量的描述中,正確的是_。(A)定義常量的關(guān)鍵字是static;(B)常成員函數(shù)可以更改常量的值;(C)常量定義時(shí)必須進(jìn)行初始化;(D)定義

24、一般常量時(shí),常量關(guān)鍵字?jǐn)[放的位置無(wú)關(guān);3、下列關(guān)于函數(shù)重載的描述中,正確的是_。(A)函數(shù)名不同,也可進(jìn)行函數(shù)重載;(B)函數(shù)名相同,函數(shù)類(lèi)型不同,也是函數(shù)重載;(C)函數(shù)名相同,函數(shù)類(lèi)型相同,肯定不是函數(shù)重載;(D)函數(shù)名相同,函數(shù)類(lèi)型相同,函數(shù)參數(shù)不同,是函數(shù)的重載;4、下述靜態(tài)成員的特性中,_是錯(cuò)誤的。(A)說(shuō)明靜態(tài)數(shù)據(jù)成員時(shí)前邊要加修飾符staic;(B)靜態(tài)數(shù)據(jù)成員要在類(lèi)體外進(jìn)行初始化;(C)引用靜態(tài)數(shù)據(jù)成員時(shí),要在靜態(tài)數(shù)據(jù)成員名前加<類(lèi)名>和域作用運(yùn)算符;(D)靜態(tài)數(shù)據(jù)成員是屬于類(lèi)的,因此它不能被對(duì)象所操作;5、char a=”student”; const char

25、*ptr=&a; ptr應(yīng)該是_。(A)指向字符常量的指針;(B)指向字符的常量指針;(C)指向字符串常量的指針;(D)指向字符串的常量指針;6、已知:print()函數(shù)時(shí)一個(gè)類(lèi)的常成員函數(shù),并且無(wú)返回值,下列表示中,_是正確的。(A)void print() const;(B)const void print();(C)void const print();(D)void print(const);7、運(yùn)算符>*的功能是_。(A)用來(lái)表示指向?qū)ο笾羔槍?duì)指向類(lèi)成員指針的操作;(B)用來(lái)表示對(duì)象對(duì)指向類(lèi)成員指針的操作;(C)用來(lái)表示指向?qū)ο笾羔槍?duì)類(lèi)成員的操作;(D)用來(lái)表示對(duì)象對(duì)類(lèi)

26、成員的操作;8、下列對(duì)派生類(lèi)的描述中,_是錯(cuò)誤的。(A)一個(gè)派生類(lèi)可以作為另一個(gè)派生類(lèi)的基類(lèi);(B)派生類(lèi)至少有一個(gè)基類(lèi);(C)派生類(lèi)的成員除了它自己的成員外,還包含了它的基類(lèi)的成員;(D)派生類(lèi)中繼承的基類(lèi)成員的訪問(wèn)權(quán)限到派生類(lèi)保持不變;9、派生類(lèi)的構(gòu)造函數(shù)的成員初始值表中,不能包含_。(A)基類(lèi)的構(gòu)造函數(shù);(B)派生類(lèi)的子對(duì)象的初始化;(C)基類(lèi)的子對(duì)象的初始化;(D)派生類(lèi)中一般數(shù)據(jù)成員的初始化;10、下列表達(dá)式中,_是非法的。已知:int a=5;float b=5.5;(A)a%3+b;(B)b*b&&+a;(C)(a>b)+(int (b)%2);(D)+a+

27、b;11、在未對(duì)基類(lèi)中的可繼承成員重新做屬性聲明時(shí),派生類(lèi)的對(duì)象對(duì)它的基類(lèi)成員中_是可以訪問(wèn)的。(A)公有繼承的公有成員;(B)公有繼承的私有成員;(C)公有繼承的保護(hù)成員;(D)私有繼承的公有成員;12、下列存儲(chǔ)類(lèi)標(biāo)識(shí)符中,_的可見(jiàn)性與存在性不一致。(A)外部類(lèi) (B)自動(dòng)類(lèi) (C)內(nèi)部靜態(tài)類(lèi)(D)寄存器類(lèi)13、在C+中,下列關(guān)于設(shè)置函數(shù)參數(shù)默認(rèn)值的描述中,正確的是_。(A)當(dāng)設(shè)置了參數(shù)的默認(rèn)值后,就不能用從主調(diào)函數(shù)傳來(lái)的數(shù)據(jù);(B)設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)該是先設(shè)置左邊的,再設(shè)置右邊的;(C)設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)該是先設(shè)置右邊的,再設(shè)置左邊的;(D)設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)該全部參數(shù)都設(shè)置;14、

28、下列說(shuō)法中不正確的是_。(E)公有繼承時(shí)基類(lèi)中的public成員在派生類(lèi)中仍是public的;(F)公有繼承時(shí)基類(lèi)中的private成員在派生類(lèi)中仍是private的;(G)私有繼承時(shí)基類(lèi)中的public成員在派生類(lèi)中是private的;(H)保護(hù)繼承時(shí)基類(lèi)中的public成員在派生類(lèi)中是protected的;15、以下說(shuō)法中不正確的是_。(A)構(gòu)造函數(shù)和析構(gòu)函數(shù)不可以被繼承;(B)基類(lèi)的友元關(guān)系不可以被繼承;(C)派生類(lèi)中的友元可以訪問(wèn)基類(lèi)中的private成員;(D)當(dāng)派生類(lèi)和基類(lèi)中出現(xiàn)同名成員函數(shù)時(shí),派生類(lèi)覆蓋基類(lèi);16、關(guān)于多繼承二義性的描述中,_是錯(cuò)誤的。(A)一個(gè)派生類(lèi)的兩個(gè)基類(lèi)中

29、都有某個(gè)同名成員,在派生類(lèi)中對(duì)這個(gè)成員的訪問(wèn)可能出現(xiàn)二義性;(B)解決二義性的最常用的方法是對(duì)成員名的限定法;(C)基類(lèi)和派生類(lèi)中同時(shí)出現(xiàn)的同名函數(shù),也存在訪問(wèn)上的二義性;(D)一個(gè)派生類(lèi)是從兩個(gè)基類(lèi)中派生出來(lái)的,而這兩個(gè)基類(lèi)又有一個(gè)共同的基類(lèi),對(duì)該基類(lèi)成員進(jìn)行訪問(wèn)時(shí),也可能出現(xiàn)二義性;17、帶有虛基類(lèi)的多層派生類(lèi)構(gòu)造函數(shù)的成員初始化列表中都要列出虛基類(lèi)的構(gòu)造函數(shù),這樣將對(duì)虛基類(lèi)的子對(duì)象初始化_。(A)與虛基類(lèi)下面的派生類(lèi)個(gè)數(shù)有關(guān);(B)多次;(C)二次;(D)一次;18、作用域運(yùn)算符的功能是_。(A)標(biāo)識(shí)作用域的級(jí)別;(B)指出作用域的范圍;(C)給定作用域的大??;(D)標(biāo)識(shí)某個(gè)成員是屬于哪

30、個(gè)類(lèi)的;;19、對(duì)于派生類(lèi)中的構(gòu)造函數(shù),在定義對(duì)象時(shí)構(gòu)造函數(shù)的執(zhí)行順序?yàn)開(kāi)。(A)基類(lèi)構(gòu)造函數(shù)>派生類(lèi)構(gòu)造函數(shù)>成員對(duì)象的構(gòu)造函數(shù);(B)派生類(lèi)構(gòu)造函數(shù)>基類(lèi)構(gòu)造函數(shù)>成員對(duì)象的構(gòu)造函數(shù);(C)成員對(duì)象的構(gòu)造函數(shù)>派生類(lèi)構(gòu)造函數(shù)>基類(lèi)構(gòu)造函數(shù);(D)基類(lèi)構(gòu)造函數(shù)>成員對(duì)象的構(gòu)造函數(shù)>派生類(lèi)構(gòu)造函數(shù);20、已知int a,b;下列增量和減量表達(dá)式正確的是_。(A)(a+)+;(B)a+b;(C)+(a+)+(+b);(D)a+b;得分三、程序改錯(cuò)。如果程序有錯(cuò)誤(可能有多處),請(qǐng)說(shuō)明錯(cuò)誤的理由,并改正;沒(méi)有不用改正,只需判斷;(每題2分,共10分,

31、10%)1、char *ptr=new char20;delete ptr;2、class A private:int x=2,y=6;3、聲明類(lèi)Tdate的析構(gòu)函數(shù):void date(int ,int ,int);4、int a=8,b=9;int *const pa=&a;int const *pb=&b;*pa=b;*pb=a;5、class Apublic:A(int x,int y)X=x;Y=y;private:int X,Y;class B:public Apublic:B(int p,int q)P=p;Q=q;privare:int P,Q;得分四、寫(xiě)出程序

32、的運(yùn)行結(jié)果(每題3分,共6分)1、#include <iostream.h>int f(int a);void main()int a=2,i;for(i=0;i<3;i+)cout<<f(a)<<” “;static int c=3; int f(int a)int b=0;b+;c+;return(a+b+c);2、#include <iostream.h>class Apublic:A(int i,int j)a=i;b=j;void Move(int x,int y)a+=x;b+=y;void Show()cout<<

33、"("<<a<<","<<b<<")"<<endl;private:int a,b;class B:public Apublic:B(int i,int j,int k,int l):A(i,j),x(k),y(l)void Show()cout<<x<<","<<y<<endl;void fun()Move(3,5);void f1()A:Show();private:int x,y;void main()

34、A e(1,2);e.Show();B d(3,4,5,6);d.fun();d.A:Show();d.B:Show();d.f1();得分五、問(wèn)答題(第一題4分,第二題4分,第三題6分,共14分,14%)1、從下面的描述中,體現(xiàn)出面向?qū)ο笾械氖裁锤拍睿浚?)“小兔兒過(guò)橋,蹦蹦跳;小鴨子過(guò)橋,搖啊搖;小螃蟹過(guò)橋,橫著爬;小袋鼠過(guò)橋,媽媽抱?!?。(2)“在某些情況下,石頭可以起到錘子的作用”。2、如果我們要編寫(xiě)一個(gè)Tdate的日期類(lèi),在類(lèi)中,我們要完成如下功能:(1)對(duì)任意設(shè)定的日期,能夠進(jìn)行日期的加減N天的操作;(0<N<31)(2)對(duì)任意設(shè)定的日期,能夠計(jì)算它等于星期幾;(設(shè)定1

35、900/1/1星期一為基準(zhǔn))為了達(dá)到以上的程序效果,思考(1)如何處理日期計(jì)算中的不同月份天數(shù)不同的問(wèn)題(也就是你采用何種數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)數(shù)據(jù))?(2)對(duì)于功能二,要計(jì)算等于星期幾,你是如何思考的;函數(shù)的功能實(shí)現(xiàn)中著重要處理什么問(wèn)題,你如何處理?3、閱讀以下程序,回答問(wèn)題。#include <iostream.h>class Apublic:void f1();A()i1=10,j1=11;protected:int j1;private:int i1;class B:public Apublic:void f2();B()i2=20;j2=21;protected:int j2;p

36、rivate:int i2;class C:private Bpublic:void f3();C()i3=30;j3=31;protected:int j3;private:int i3;回答下列問(wèn)題:(1)派生類(lèi)B中的成員函數(shù)f2( ),能否訪問(wèn)基類(lèi)A中成員:f1( ),i1,j1;(2)派生類(lèi)B的對(duì)象b能否發(fā)訪問(wèn)基類(lèi)A中的成員:f1( ),i1,j1;(3)派生類(lèi)C中的成員函數(shù)f3( )能否訪問(wèn)直接基類(lèi)B中的成員:f2( )和j2;能否訪問(wèn)間接基類(lèi)A中的成員f1( ),j1,i1;(4)派生類(lèi)C的對(duì)象c能否訪問(wèn)直接基類(lèi)B中的成員f2( )和j2;能否訪問(wèn)間接基類(lèi)A中的成員f1( ),j1

37、,i1;得分六、程序設(shè)計(jì)題(每題15分,共一題,共15分)1 分別定義Teacher(教師)類(lèi)和Cadre(干部)類(lèi),采用多重繼承方式由這兩個(gè)類(lèi)派生出新類(lèi)Teacher_Cadre(教師干部)類(lèi)。要求:(1) 在兩個(gè)基類(lèi)中都包含姓名、年齡、性別、地址、電話數(shù)據(jù)成員;(2) 在Teacher類(lèi)中還包含數(shù)據(jù)成員title(職稱(chēng)),在Cadre類(lèi)中還包含數(shù)據(jù)成員post(職務(wù)),在Teacher_Cadre類(lèi)中還包含數(shù)據(jù)成員wages(工資)。(3) 對(duì)兩個(gè)基類(lèi)中的姓名、年齡、性別、地址、電話等數(shù)據(jù)成員用相同的名字,在引用這些數(shù)據(jù)成員時(shí),指定作用域。(4) 在類(lèi)中聲明成員函數(shù),在類(lèi)外定義成員函數(shù)。(

38、5) 在派生類(lèi)Teacher_Cadre的成員函數(shù)show中調(diào)用Teacher類(lèi)中的display函數(shù),輸出姓名、年齡、性別、地址、電話,然后用cout語(yǔ)句輸出織物與工資。一、填空題:(每空1分,15%) 1、繼承、多態(tài)、class; 2、iostream.h、string.h; 3、public、private、protected、private; 4、1個(gè)或多個(gè) 5、正在操作該成員函數(shù)的對(duì)象; 6、局部對(duì)象、靜態(tài)對(duì)象、全局對(duì)象 7、消除二義性、二、選擇題:(每題2分,40%) 1-5C(C,D) DDC 6-10AADCD 11-15ACCBC 16-20CDDDD三、程序改錯(cuò)。如果程序有

39、錯(cuò)誤,請(qǐng)說(shuō)明錯(cuò)誤的理由,并改正;沒(méi)有不用改正,只需判斷;(每題2分,共10分,10%)1、指針ptr指向的是字符型數(shù)組,所以使用delete撤銷(xiāo)new運(yùn)算符開(kāi)辟的空間時(shí),應(yīng)在delete后使用;delete ptr; 2、在類(lèi)的定義中,不能對(duì)類(lèi)的數(shù)據(jù)成員賦予默認(rèn)值。int x ,y;3、析構(gòu)函數(shù)沒(méi)有返回值類(lèi)型,所以不能用void,不能帶參數(shù)。 date( );4、pb是常指針,不能重新賦值。去除*pb=a;5、派生類(lèi)的構(gòu)造函數(shù)要完成基類(lèi)數(shù)據(jù)成員的初始化B(int x,int y,int p,int q) :X(x),Y(y)P=p;Q=q;四、寫(xiě)出程序輸出結(jié)果(每題3分,共6分)1.

40、 7 8 92. (1,2)(6,9)5,6(6,9) 1、(1)多態(tài)性 (2)繼承性2、(1)定義數(shù)組來(lái)進(jìn)行每個(gè)月份的天數(shù)的存儲(chǔ)。 int month12=31,28,31,30,31,30,31,31,30,31,30,31; (2)可以設(shè)定一個(gè)基準(zhǔn)計(jì)算的日期,如2001年的1月1號(hào)為星期一,然后計(jì)算當(dāng)前時(shí)間與基準(zhǔn)日期之前的天數(shù),然后除以7,得余數(shù),就可以得到當(dāng)前時(shí)間是星期幾。需要處理的是,中間的閏年的2月份天數(shù)+1的問(wèn)題。3、(1)派生類(lèi)B中的成員函數(shù)f2,能訪問(wèn)基類(lèi)A中f1和j1,不能訪問(wèn)i1; (2)派生類(lèi)B的對(duì)象b,能訪問(wèn)基類(lèi)A中的f1,不能訪問(wèn) j1和 i1; (3)派生類(lèi)C中的

41、成員函數(shù)f3能訪問(wèn)直接基類(lèi)B中的f2和j2;能訪問(wèn)間接基類(lèi)A中的f1和j1,不能訪問(wèn)i1; (4)派生類(lèi)C的對(duì)象c不能訪問(wèn)直接基類(lèi)B中的成員f2( )和j2;不能訪問(wèn)間接基類(lèi)A中的成員f1( ),j1,i1;六、程序設(shè)計(jì)題(第一題5分,第二題10分,共15分)#include <string>#include <iostream>using namespace std;class Teacherpublic:Teacher(string nam,int a,char s,string tit,string ad,string t);void display(); protected:string name;int age;char sex;string title;string addr;string tel;Teacher:Teacher(string nam,int a,char s,string tit,string ad,string t): name(name),age(a),sex(s),title(tit),addr(ad),tel(t)void Teacher:display()

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論