版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、封面作者: PanHongliang仅供个人学习知识模块五面向对程序设计基础一、选择题1. ( )不是构造函数的特征。A、构造函数的函数名与类名相同;B、构造函数可以重载;C、构造函数可以设置缺省参数;D构造函数必须指定类型说明。2. ()是析构函数的特征。A、 析构函数可以有一个或多个参数;B、析构函数名与类名不同;C、析构函数的定义只能在类体内;D 个类中只能定义一个析构函数;3.要运行一个C语言编写的应用程序如下:mai n() prin tf(hello world)。在VC6的开发环境中,应该建立哪种类型的工程?A, Win32 Applicatio nB, Win32 Con so
2、le Applicati onC, MFC AppWizard (exe)D, Utility Project4. 关于VC6建立的工程的说法,正确的是:A, 工程只能包含.cpp和.h类型的文件B, 工作区文件的后缀是.dspC, 用鼠标双击工作区文件可以打开整个工程D, 在VC的FileView 中可以看到工程中所有的文件,包括工作区文件,工程文件等5. 在VC6中提供了成员方法的自动列表和方法参数的自动提示功能,但有时不能正常显示,这是应该删除该工程目录下那种后缀类型的文件后,再次打开工程,就可以正常提示了。A, clwB, nebC, optD, aps6. 有关句柄(handle)的
3、说法,下列不正确的是:A句柄是一个4字节长的整数值B句柄用来标识应用程序中不同的对象或同类对象中的不同实例C消息是句柄的一种D画笔的句柄类型是 HPEN画刷的句柄类型是 HBRUSH7. C+寸C语言作了很多改进,下列描述中()使得C语言发生了质变,从面向过程变成了面向对象。A 、增加了一些新的运算符;B、允许函数重载,并允许设置缺省参数;C 、规定函数说明必须用原型;D 、引进了类和对象的概念;8. 下列描述中,()是错误的。A、内联函数主要解决程序的运行效率问题;B、内联函数的定义必须出现在内联函数第一次被调用之前;C、内联函数中可以包括各种语句;D、对内联函数不可以进行异常接口声明;9.
4、 在C+中,关于下列设置缺省参数值的描述中,()是正确的。A、不允许设置缺省参数值;B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;C、只能在函数的定义性声明中指定参数的缺省值;D、设置缺省参数值时,必须全部都设置;10. ()不是构造函数的特征。A、构造函数的函数名与类名相同;B、构造函数可以重载;C构造函数可以设置缺省参数;D构造函数必须指定类型说明。11. 是析构函数的特征。A、析构函数可以有一个或多个参数;B、析构函数名与类名不同;C析构函数的定义只能在类体内;D个类中只能定义一个析构函数12. C+对C语言作了很多改进,下列描述中()使得C语言发生了质变,从面向过程变成了
5、面向对象。A、增加了一些新的运算符;B允许函数重载,并允许设置缺省参数;C规定函数说明必须用原型;D弓I进了类和对象的概念;13. 下列描述中,( )是错误的。A、内联函数主要解决程序的运行效率问题;B、内联函数的定义必须出现在内联函数第一次被调用之前;C内联函数中可以包括各种语句;D对内联函数不可以进行异常接口声明;14. 在C+中,关于下列设置缺省参数值的描述中,()是正确的。A、不允许设置缺省参数值;B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;C只能在函数的定义性声明中指定参数的缺省值;D、设置缺省参数值时,必须全部都设置;15. 在进行完任何 C+流的操作后,都可以用C
6、+流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是 ( ) 。A failB eofC bad D good16. C+语言是从早期的 C语言逐渐发展演变而来的。与C语言相比,它在求解问题方法上进行的最大改进是 () 。A 面向过程 B 面向对象C 安全性D 复用性17. C+对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念18. C+ 源程序文件的缺省扩展名是 A. cppB. exeC. objD. lik19. 在 int a=3,i
7、nt *p=&a;中, *p 的值是 20. 类的析构函数是在 调用的。A. 类创建时B. 创建对象时C. 删除对象时D. 不自动调用AB x ;语句时将自动调用该类的B.D.21. 假定AB为一个类,则执行无参构造函数赋值构造函数实现两个AB类对象的加法,并返回相加B. AB operator+(AB &D. AB &A. 有参构造函数C. 拷贝构造函数22. 假定要对类AB定义加号操作符重载成员函数,结果,则该成员函数的声明语句为:A. AB operator+(AB & a , AB & b) a)C. operator+(AB a) operator+( )23. 假定AB为一个类,则
8、执行 AB x ;语句时将自动调用该类的 A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值构造函数)25. 假定AB为一个类,则该类的拷贝构造函数的声明语句为 .A. AB&(AB x) 。B. AB(AB x) C. AB(AB&) 。 D. AB(AB * x)26. 下列哪项不是面向对象程序设计的主要特征?A. 封装 B. 继承 C. 多态 D 结构27. 对象之间的相互作用和通信是通过消息。下列哪项不是消息的组成部分?A接受消息的对象B要执行的函数的名字C. 要执行的函数的内部结构 D 函数需要的参数28. 关于C+与 C语言关系的描述中,()是错误的。A.C语言是C+语言的一
9、个子集B.C 语言与C+语言是兼容的C.C+语言对C语言进行了一些改进 D.C+语言和C语言都是面向对象的29. 已知:类A中一个成员函数说明如下:void Set(A&a)。 其中,A&勺含义是()。A.指向类A的指针为aB将a的地址值赋给变量SetC. a是类A对象的引用,用来作函数Set ()的参数D. 变量A与a按位与作为函数 Set()的参数30. 已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的。A.void print( ) const 。 B.const void print()。C void const print( )。 D.void pr
10、int(const) 。31. 如果类A被说明成类B的友元,贝U A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元32. 假定AB为一个类,则执行 AB x ;语句时将自动调用该类的 A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值构造函33. 下面的函数声明中 , 是” void BC(int a, int b)。”的重载函数 ?A. int BC(int a, int b) B. void BC(int a, char b)C. float BC(int a, int b, int c=0) D. void BC(i
11、nt a, int b=0)34. 下面的哪一个保留字不能作为函数的返回类型 ?A. void B. intC. newD. long35. 下列关键字中,用以说明类中公有成员的是( )。A friend 。 B private 。 C protected 。 D public36. 进行文件操作时需要包含(A iostream.h 。 B stdlib.h)文件。 C stdio.h 。 D fstream.hC 指向字符串常量的指针。 D 指向字符串的指针常量37. 能用作用户自定义标识符。Afriend B-var C)3xyz DFloat38. 面向对象程序设计将数据与放在一起,做为
12、一个相互依存、不可分割的整体来处理。A 对数据的操作 B信息C数据隐藏D数据抽象39. 一个类的析构函数。A 唯一的 B 允许重载 C 至多可有两个 D 只能是缺省的40. 下列说法正确的是: 。A一个类的对象可以是另一个类的成员B 一个类可以作为另一个类的派生类C一个类定义在另一个类的说明中D 以上说法均正确41. 下列各类函数中,不是类的成员函数。A 构造函数 B 析构函数 C 友元函数 D 拷贝构造函数42. 有关析构函数的说法不正确的是。A 析构函数有且只有一个 B 析构函数无任何函数类型C 析构函数和构造函数一样可以有形参 D 析构函数的作用是在对象被撤销时收回先前 分配的内存空间4
13、3. 通常拷贝构造函数的参数是。A 某个对象名 B 某个对象的成员名C 某个对象的引用名 D 某个对象的指针名44. 已知:类A中一个成员函数说明如下:void Set(A&a)。 其中,A&勺含义是()。A.指向类A的指针为aB将a的地址值赋给变量 SetCa是类A对象的引用,用来作函数Set ()的参数D.变量A与a按位与作为函数 Set()的参数45.已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的。Avoid print( ) const C.void const print( )。 B.const void print( )。 D.void prin
14、t(const)。46. 类的析构函数是在 _调用的。A. 类创建时B.创建对象时C. 删除对象时D.不自动调用47.如果类A被说明成类B 的友元,贝 A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类 B的成员D.类B不一定是类A的友元二、填空题(1)在用 class 定义一个类时,数据成员和成员函数的默认访问权限是。(2) 含有纯虚函数的类称为。(3) 派生类的主要用途是可以定义其基类中 。(4) 当建立 ,程序自动调用该类的构造函数。(5) 类是用户定义的类型,具有类类型的变量称作 。(6) 当一个成员函数被调用时,该成员函数的_指向调用它的对象。(7) 拷
15、贝函数通过 使用引用来初始化创建中的对象。(8)静态成员函数、 友元函数、 构造函数和析构函数中, 不属于成员函数的是 (9) 对象的三大基本特性是多态性、 、封装性。(10)当一个类对象离开它的作用域时 , 系统将自动调用该类的 .(11) 假定AB为一个类,贝U执行AB a10。”语句时,系统自动调用该类构造函数的次数 为 .(12)指向基类的对象的指针变量也可以指向的对象。( 13)面向对象程序中,实体的状态由表示,其行为由表示。( 14)定义 函数时,应在参数个数或参数类型上有所不同。(15) 类是用户定义的类型,具有 称作对象。(16) 使用指向对象的指针来标识类的成员,贝必须使用的
16、运算符是_。(17) 拷贝初始化构造函数使用 来初始化创建中的对象。(18)封装要求一个对象应具备明确的功能, 并具有 以便和其它对象相互作用。(25)在删除一个动态对象时,将自动调用该动态对象所属类的 函数。三、判断题(1)在定义一个类时,不能在类说明中对数据成员使用表达式进行初始化。()(2) 如果在类声明中没有定义复制构造函数,就不能用一个对象去初始化另一个对象()(3)类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性。(对)(4)在面向对象的程序设计中, 凡操作属于同一种对象的, 就将这些操作放进该对象类中,形成该类的成员函数。( )(5)说明函数原型时不需要指
17、明每个函数参数的名字,只需要说明每个参数的类型和返回 值类型就可以了。( )(6) 所有的表达式都有值。( )(7)程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改 所带来的编译工作量。( )(8)类的静态数据成员需要在定义每个类的对象时进行初始化。(四、程序填空(1 )在下面程序的横线处填上适当的语句,使该程序执行结果为10.#include “ iostream.h ”class MyClass public:MyClass(int a)x = a 。/取x值private:int x 。int mai n() MyClass my(10)。coutmy.get
18、num( )e ndl。return 0。(2) 在下面程序的底画线处填上适当的字句,使该程序执行结果为60。# in cludeclass basei nt X 。public :void in t (i nt ini tX)X=i nitX。 int Get num() return X+7。 void mai n()cout(3) 在下面程序的底画线处填上适当的字句,完成类中成员函数的定义。# in cludeclass box private :int color 。 int upx,upy 。 int lowx,lowy 。public :frie nd int same_color
19、(l ine a,box b)。void define_box(int x1,int y1,int x2,int y2)upx=x1。 upy=y1。 。class line private :int color 。 int startx,starty 。 int len 。public :friend_int same_color(l ine a,box b)。;void define_line(int x,int y)startx=x。 。int same_color(l ine a,box b)if(a.color= =b.color)return 1。return 0 。 (4) 在下
20、面程序的底画线处填上适当的字句,完成程序。# includeclass A(int i)coutvoid g()cout” g n”。closs B : Apublic : void h()cout ” h n ”。 。void main() B d1 。d1.f(6)。d1.h() 。(5) 在下列程序的空格处填上适当的字句,使输出为:0, 8,5。# include# includeclass Magicdouble x 。public :Magic(double d=0.00): x(fabs(d)Magic return Magic(sqrt(x*x+c.x*c.x)。 (ostrea
21、m & os,Magic c)return os。void main()Magic ma 。10。cout(6) 在下面程序的底画线处填上适当的字句,使该程序执行结果为#include class baseint X 。public : /为X置值 取 X 值 。void main()base test 。test.init(3) 。couttest.Getnum() 。(7) 在下列程序的底画线处填上适当的字句,完成类中成员函数的定义。#include class box private:int color 。 int upx,upy 。 int lowx,lowy 。public:frie
22、nd int same-color(line a,box b) 。 set-color(int c)color=c 。 void define-box(int x1,int y1,int x2,int y2)upx=x1。 upy=y1 。 。class line private:int color。 int startx,starty。 int len。public:friend-int same-color(line a,box b) 。set-color(int c)color=c。 void define-line(int x,int y)startx=x。 。int same-col
23、or(line a,box b)if(a.color= =b.color)return 1 。return 0 。 (8) 在下面程序的底画线处填上适当的字句,完成程序。#include class Apublic: void f(int i)coutiendl 。 void g()cout” n”。 。class public: void h()cout ” h、n”。A : f。 。void main() B d1 。d1.f(6)。.h()。(9) 在下列程序的空格处填上适当的字句,使输出为:0, 7,5。#include #include class Magicdouble x 。pu
24、blic :(double d=0.00): x(fabs(d)Magic operator+(Magic c)return Magic(sqrt(x*x+c.x*c.x)。 friend ostream & operator(ostream & os,Magic c)return osc.x。 。void main()coutma, Magic( -7), ma+Magic(3)+Magic(4) 。(10) 在下面程序横线处填上适当字句,以使该程序执行结果为: 5 4 3 2 10 5.5 4.4 3.32.2 1.1#include template void f ();for (int
25、 i=0 。 in/2 。 i+)t=ai, ai=an-1-i, an-1-i=t 。void main ()int a5=1,2,3,4,5 。double d6=1.1,2.2,3.3,4.4,5.5 。f(a,5) 。 f(d,6) 。for (int i=0 。 i5 。 i+)cout ai。cout endl 。for (i=0。 i6 。 i+)cout di ”。cout endl 。五、程序阅读题1. 分析以下程序执行的结果 #include #include class Samplepublic: int x,y 。Sample()x=y=0 。 Sample(int a
26、,int b)x=a 。 y=b。 void disp()coutx=x,y=yendl。void main()Sample s1(2,3)。s1.disp() 。2. 分析以下程序的执行结果#includeclass Sampleint x,y 。public:Sample()x=y=0 。 Sample(int a,int b)x=a。 y=b。 Sample()if(x=y) coutx=yendl 。else coutx!=yendl 。void disp()coutx=x,y=yendl 。void main()Sample s1(2,3) 。s1.disp() 。3. 分析以下程序
27、的输出结果 #include class Sampleint x 。public:Sample(int a) x=a。 coutconstructing object:x=xendl 。void func(int n)static Sample obj(n) 。void main()func(1) 。func(10) 。4 分析以下程序的执行结果 #include class Sample int x,y 。 public: Sample()x=y=0 。 Sample(int a,int b)x=a。 y=b。 void disp()coutx=x,y=ydisp() 。5 分析以下程序的执
28、行结果 #include class Sample public: int x 。 int y 。 void disp()coutx=x,y=yendl 。 void main()int Sample:*pc 。 Sample s 。pc=&Sample:x 。 s.*pc=10 。pc=&Sample:y 。 s.*pc=20 。 s.disp() 。6 分析以下程序的执行结果#includeclass Sampleint x,y 。public:Sample()x=y=0 。 Sample(int a,int b)x=a。 y=b。 void disp()coutx=x,y=yendl 。
29、void main()Sample s1,s2(2,3) 。s1.disp() 。s2.disp() 。7 分析以下程序执行的结果#includeclass Sampleint x,y 。public:Sample() x=y=0 。 Sample(int a,int b) x=a。y=b。Sample()if(x=y)coutx=yendl 。elsecoutx!=yendl 。void disp()coutx=x,y=yendl。void main()Sample s1(2,3) 。s1.disp() 。s1.Sample() 。8 分析以下程序的执行结果#includeclass Sam
30、pleint x,y 。public:Sample() x=y=0 。 Sample(int a,int b) x=a 。y=b。Sample()if(x=y)coutx=yendl 。elsecoutx!=yendl 。void disp()coutx=x,y=yendl。void main()Sample s1,s2(2,3)。s1.disp() 。s2.disp() 。9. 分析以下程序的执行结果#include#includeclass Samplepublic:int x,y 。Sample()x=y=0 。 Sample(int a,int b)x=a 。 y=b。 void di
31、sp()coutx=x,y=yendl。Sample() if(x=y) coutx=yendl 。 else coutx!=yendl 。void main() Sample s1(2,3) 。 s1.disp() 。 if(s1.x=2) exit(0) 。10. 分析以下程序的执行结果 #include class Sample int x,y 。 public: Sample()x=y=0 。 Sample(int a,int b)x=a,y=b。 Sample() if(x=y) coutx=yendl 。else coutx!=yendl 。void disp()coutx=x,y
32、=yendl 。void main()Sample(2,3) 。11. 分析以下程序的执行结果 #include class Samplepublic: Sample() 。 Sample(int) 。Sample() 。 void display() 。protected:int x 。Sample:Sample() x=0。 coutconstructing normallyn 。Sample:Sample(int m) x=m。 coutconstructing with a number:xendl void Sample:display()coutdisplay a number:x
33、endl。Sample:Sample()coutdestructingn 。void main()Sample obj1 。Sample obj2(20) 。 obj1.display() 。 obj2.display() 。12. 分析以下程序的执行结果 #include class Sample int n 。 static int sum 。public:Sample(int x)n=x 。 void add()sum+=n 。 void disp() coutn=n,sum=sumendl 。 。int Sample:sum=0 。 / 静态数据成员赋初值 void main()Sam
34、ple a(2),b(3),c(5) 。a. add() 。a. disp() 。b. add() 。b. disp() 。c. add() 。c. disp() 。13. 分析以下程序执行的结果 #include class Sampleint A 。 static int B 。 public:Sample(int a)A=a,B+=a 。 static void func(Sample s) 。 。void Sample:func(Sample s)coutA=s.A,B=Bendl 。int Sample:B=0 。void main()Sample s1(2),s2(5) 。Samp
35、le:func(s1) 。Sample:func(s2) 。14. 分析以下程序的执行结果#includeclass Samplechar c1,c2 。public:Sample(char a)c2=(c1=a)-32 。 void disp()coutc1 转换为 c2endl 。void main()Sample a(a),b(b) 。a.disp() 。b.disp() 。15. 分析以下程序执行的结果#includeclass Sampleint x,y 。public:Sample()x=y=0 。 Sample(int a,int b)x=a。 y=b。 void disp()c
36、outx=x,y=yendl 。void main()Sample s1,s2(1,2),s3(10,20)。Sample *pa3=&s1,&s2,&s3。for(int i=0。idisp() 。16. 分析以下程序的执行结果#includeclass Sample int x,y 。 public: Sample()x=y=0 。 Sample(int a,int b)x=a,y=b。 void disp() coutx=x,y=yendl 。 。void main()Sample s1,s2(1,2),s3(10,20) 。 Sample *Pa3 。Pa0=&s1 。Pa1=&s2
37、。Pa2=&s3 。for(int i=0。idisp() 。17. 分析以下程序的执行结果 #include class Sample public: int x 。 int y 。void disp()coutx=x,y=y*pc=10 。 pc=&Sample:y 。 p-*pc=20 。 p-disp() 。18. 分析以下程序的执行结果#includeclass Sampleint x 。int y 。public:Sample(int a,int b)x=a。 y=b 。int getx()return x。 int gety()return y。 。void main()int
38、(Sample:*fp)() 。 fp=&Sample:getx 。 Sample s(2,7) 。int v=(s.*fp)() 。 fp=&Sample:gety 。int t=(s.*fp)() 。 coutv=v,t=tendl 19 . 分析以下程序的执行结果 #include class Sampleint x 。int y 。public:Sample(int a,int b)x=a。 y=b 。int getx()return x。 int gety()return y。 。void main()int (Sample:*fp)() 。 fp=&Sample:getx 。Sam
39、ple s(2,7),*p=&s 。int v=(p-*fp)()。fp=&Sample:gety 。int t=(p-*fp)()。coutv=v,t=tendl 。六、按题目要求编程1 下面是一个类的测试程序,设计出能使用如下测试程序的类。void main()Test a。a.init(68,55) 。a.print() 。其执行结果为:测试结果: 68-55=132 设计一个 Bank 类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。解:Bank类包括私有数据成员top(当前账指针),date(日期),money(金额),rest(余额)和sum(累 计余额)。另有一个
40、构造函数和三个成员函数bankin()(处理存入账),bankout()处理取出账)和 disp() (输出明细账 )。3. 设计一个立方体类 Box ,它能计算并输出立方体的体积和表面积。4. 创建一个 employee 类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。把表示构造函数、 changname()、display() 的函数的原型放在类定义中,构造函数初始化每个 成员,display()函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。5修改前一题的类,将姓名构成类name,其名和姓在该类中为保护数据成员,其构造函数为接收一个指向完整姓名字符串的指针,其display()函数输出姓名。然后将employee类中的姓名成员 (字符数组 )换成 name 类对象。编制主函数如下:void main()employee obj(王华,中华路 15 号.武汉市,湖北省,”430070,1)。obj.display()。obj.changename(王国强)。obj.display() 。6. 编写一个程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024中国华录集团限公司下属子企业华录信产公开招聘2人易考易错模拟试题(共500题)试卷后附参考答案
- 2024上海市奉贤区第八批储备人才及定向选调生招募91人易考易错模拟试题(共500题)试卷后附参考答案
- 2024“才聚齐鲁成就未来”山东文化产权交易所夏季招聘2人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年度企业级SaaS服务合同2篇
- 2024年度出租车行业工会福利改善合同
- 2024年度版权质押合同:某出版公司版权质押贷款合同
- 2024年度家具定制设计与制作合同2篇
- 2024年度楼板倒置工程项目融资合同
- 2024年度旅游服务合同:定制旅行服务与合作2篇
- 2024年度版权购买合同的版权转让方式和权益保障
- 签派员执照考试题库汇总-8签派和实践应用
- 混凝土用砂石质量及检验方法标准课件
- 某低密度住宅案例分析
- 销售人员十大军规课件
- (完整)高位水池施工方案改
- 创伤外科跟骨骨折诊疗指南
- 中班数学活动:认识数字8课件
- 人教版四年级上册数学 总复习 图形与几何 教案(教学设计)
- 金融工程学(第五版)第5章互换工具及其配置
- 新闻热点评报课件
- 学院学科建设工作会议发言稿
评论
0/150
提交评论