1、c+面向对象程序设计考试题doc面向对象程序设计试题一一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 2 分,共 40 分 ) 1. 在 ( ) 情况下适宜采用 inline 定义内联函数。 a. 函数体含有循环语句 b. 函数体含有递归语句 c. 函数代码少、频繁调用 d. 函数代码多、不常调用 2. 在类中说明的成员可以使用关键字 ( ) 进行修饰。 a. private b. extern c. auto d. register 3. 如果类 a 被说明成类 b 的友元,则 ( ) 。 a. 类 a 的成员即类 b 的成员 b.
2、 类 b 的成员即类 a 的成员 c. 类 a 的成员函数不得访问类 b 的成员 d. 类 b 不一定是类 a 的友元 4. 定义析构函数时,应该注意 ( ) 。 a. 其名与类名完全相同 b. 返回类型是 void 类型 c. 无形参,也不可重载 d. 函数体中必须有 delete 语句 5. 在类中声明转换函数时不能指定 ( ) 。 a. 参数 b. 访问权限 c. 操作 d. 标识符 6. 在派生类中重新定义虚函数时必须在 ( ) 方面与基类保持一致。 a. 参数类型 b. 参数名字 c. 操作内容 d. 赋值 7. 在公有继承的情况下,基类成员在派生类中的访问权限 ( ) 。 a. 受
3、限制 b. 保持不变 c. 受保护 d. 不受保护 8. 通过 ( ) 调用虚函数时,采用动态束定。 a. 对象指针 b. 对象名 c. 成员名限定 d. 派生类名 9. 在 int a=3,*p=&a; 中, *p 的值是 ( ) 。 a. 变量 a 的地址值 b. 无意义 c. 变量 p 的地址值 d. 3 10.c+ 类体系中,不能被派生类继承的有 ( ) 。 a. 转换函数 b. 构造函数 c. 虚函数 d. 静态成员函数 11. 假定一个类的构造函数为 a(int aa,int bb)a=aa+;b=a*bb+; ,则执行 ax(4,5); 语句后, x.a 和 x.b 的值分别为
4、( ) 。 a. 4 和 5 b. 5 和 4 c. 4 和 20 d. 20 和 5 12. 假定 ab 为一个类,则执行 ab x ;语句时将自动调用该类的 ( ) 。 a. 有参构造函数 b. 无参构造函数 c. 拷贝构造函数 d. 赋值构造函数 13.c+ 语言建立类族是通过 ( ) 。 a. 类的嵌套 b. 类的继承 c. 虚函数 d. 抽象类 14. 执行语句序列 ofstream outf( “ salary.dat ” ) ; if(.)cout “成功”; else cout “失败”;后,如文件打开成功,显示”成功”,否则显示”失败” . 由此可知,上面 if 语句的条件表
5、达式是 ( ) 。 a. !outf 或者 outf.fail() b.!outf 或者 outf.good() c. outf 或者 outf.fail() d. outf 或者 outf.good() 15. 静态成员函数不能说明为 ( ) 。 a. 整型函数 b. 浮点函数 c. 虚函数 d. 字符型函数 16. 在 c+ 中,数据封装要解决的问题是 ( ) 。 a. 数据规范化排列 b. 数据高速转换 c. 避免数据丢失 d. 保证数据完整性 17. 在 c+ 中有以下 4 条语句: static int hot=200;int &rad=hot;hot=hot+100;couta.
6、0 b. 100 c. 300 d. 200 18. 如果 class 类中的所有成员在定义时都没有使用关键字 pubilc,private,protected ,则所有成员缺省定义为: ( ) 。 a. public b. protected c. private d. static 19.c+ 设置虚基类的目的是 ( ) 。 a. 消除二义性 b. 简化程序 c. 提高运行效率 d. 减少目标代码 20. 实现运行时的多态性用 ( ) 。 a. 重载函数 b. 构造函数 c. 析构函数 d. 虚函数 二、填空题 ( 每空 2 分,共 20 分 ) 1. 派生类可以定义其 _ 中不具备的数据
7、和操作。 2. 当建立一个新对象时,程序自动调用 _ 。 3. 定义 _ 函数时,应在参数个数或参数类型上有所不同。 4. 类是用户定义的类型,具有 _ 称作对象。 5. 使用指向对象的指针来标识类的成员,则必须使用的运算符是 _ 。 6. 拷贝初始化构造函数使用 _ 来初始化创建中的对象。 7. 在一个类中可以对一个操作符进行 _ 重载。 8. 在 c+ 中有二种参数传递方式: _ 。 9. 多态性通过 _ 来实现的。 10. 使用空的虚函数可以保证基类到派生类建立起一条 _ ,使派生类通过虚函数机制正确存取虚函数。 三、完成程序题 ( 每小题 5 分,共 20 分 ) 1. 在下面程序的底
8、画线处填上适当的字句,使该程序执行结果为 10 。 #include class baseint x; public : _ 为 x 置值 _ 取 x 值 ; void main() base test; test.init(3); cout 2. 在下列程序的底画线处填上适当的字句,完成类中成员函数的定义。 #include class box private int color;int upx,upy;int lowx,lowy; public : friend int same - color(line a,box b); _ set - color(int c)color=c; voi
9、d 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 - color(line a,box b) if(a.color= =b.color) return 1;
10、return 0; 3. 在下面程序的底画线处填上适当的字句,完成程序。 #include class a public void f(int i)coutvoid g()cout ” n ” ; ; class _ public void h()cout ” h n ” ; a f; ; void main() b d1; d1.f(6); _.h(); 4. 在下列程序的空格处填上适当的字句,使输出为: 0 , 7 , 5 。 #include #include class magic double x; public _(double d=0.00) x(fabs(d) magic op
11、erator+(magic c)return magic(sqrt(x*x+c.x*c.x); friend ostream & operator(ostream & os,magic c)return os; void main() _; cout 四、综合应用题 ( 共 20 分 ) 1. 分析下列程序可能的输出结果。 ( 满分 8 分 ) #include class base public virtual int func() return 10; ; class derived public base public int func() return 200; ; void main
12、() derived d; base & b=d; coutcoutarea(); return sum; 面向对象程序设计试题二一、 单项选择题(210): 1. 假定一个类的构造函数为a ( int aa, int bb) a = aa; b = bb; ,则执行a x(4,5);语法后,x.a和x.b的值分别为( ) a4和5 b5和4 c4和20 d20和5 2. 假定ab为一个类,则执行ab x;语句时将自动调用该类的( ) a有参构造函数 b无参构造函数 c拷贝构造函数 d赋值重载函数 3. c+语言建立类族是通过( ) a类的嵌套 b类的继承 c虚函数 d抽象类 4. 执行语句序
13、列 ofstream outf(salary.dat);if () cout成功!; else cout失败!; 后,如果文件打开成功,显示成功!,否则显示失败!。由此可知,上面if语句的处的表达式是( ) a!outf或者outf.fail() b!outf或者outf.good() coutf或者outf.good() doutf或者ouf.fail() 5. 静态成员函数不能说明为( ) a整型函数 b浮点函数 c虚函数 d字符型函数 6. 在c+中,数据封装要解决的问题是( ) a数据规范化排列 b数据高速转换 c避免数据丢失 d切断了不同模块之间的数据的非法使用 7. 在c+中有下列
14、4条语句: int hot = 100; int &rsd = hot; hot = hot + 100; cout执行这4条语句后输出为( ) a0 b100 c200 d300 8. 如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为( ) apublic bprotected cprivate dstatic 9. 设置虚基类的目的是( ) a消除两义性 b简化程序 c提高运行效率 d减少目标代码 10. 实现运行时的多态性用( ) a重载函数 b构造函数 c析构函数 d虚函数 二、 填空题(210): 11、面向对
15、象程序设计的_机制提供了重复利用程序资源的一种途径。 12、对虚函数使用基类类型的指针或引用调用,系统使用_联编;而使用对象调用时,系统使用_联编。 13、允许访问一个类的所有对象的私有成员、公有成员和保护成员的函数是该类的_和_。 14、执行完c+程序中的三天语句: int a,b,*c=&a; int * &p = c; p = &b; 后c指向_。 15、class x public: int a; enum bool false, true ; ; void fun(x& x) _ = _;/ 将x的a赋值为所定义的布尔值false 16、在类定义中,类说明以关键字class开始,其后
16、跟_,它必须是一个有效的c+标识符。类说明的内容用花括号括起来,称为_。 17、实现类对象初始化任务的是该类的_。 18、初始化类模板时,相对于它的每个参数要提供_。 19、重载的运算符仍然保持其原来的优先级、结合性和_。 20、从一个抽象类派生的类必须提供纯虚函数的实现代码,或者在该派生类中将它说明为_。 三、 改错题(25): 21、指出下面程序中的错误,在错误处说明出错原因 #include const float pi = 3.1416; const float r = 3.2; void main() float s1,s2,c1,c2,r1; c1 = pi*r*r; s1 = 2
17、*pi*r; r = 2.8; c2 = pi*r*r; s2 = 2*pi*r; cout22、指出下面程序中的错误,在错误处说明出错原因 class a public: a( ) func(); virtual void func() = 0; ; 23、指出下面程序中的错误,并改正 #include class test private: static int x; public: virtual static int func(); ; int test:x = 20; int test:func() return x; void main() couttest a; cout 24、
18、指出下面程序重点错误,在错误处说明出错原因 #include class a private: int a; public: void seta( int x) a = x; void showa() couta=; class b: private a private: int b; public: void setb(int x, int y) b=x; seta(y); void showb() showa(); coutb=; void main() b obj; obj.seta(53); obj.showa(); obj.setb(53,58); obj.showb(); 25、下
19、面程序希望产生的输出为4+3i,但是运行输出是3+3i,请指出错误并改正 #include class complex int real; / 实部 int imag; / 虚部 public: complex(int r=0; int i=0): real(r),imag(i) void show() coutcomplex operator+() real+; return * this; ; void main() complex o(2,3); +c; c.show(); 四、 完成程序题(45): 26、在下面程序的横线处填上适当字句,使该程序执行结果为6。 #include cla
20、ss base int x; public: _/ 为x置值 _/ 取x值 ; void main() base test; test.init(6); cout 27、在下面横线处填上适当字句,完成类中成员函数的定义: # include class line; int x; class box private: int color; int upx, upy; int lowx, lowy; public: _ int same_color( line a, box b); void set_color( int c) color = c; void define_line (int x,
21、 int y) startx = x; ; int same_color (line a, box b) if (a.color = = b.color) return 1; return 0; 28、在横线处填上适当字句,完成程序。 # include class a public: void f (int i) coutvoid g () coutgn; ; class b: a public: void h() cout0?- - top:top; ; 30、 class location private: int x, y; public: void init( int initx,
22、int inity); int getx(); int gety(); ; void location:init (int initx, int inity) x = initx; y = inity; int location:getx() return x; int location:gety() return y; #include void main() location a1; _ / 定义一个指向a1的指针pa1; _ / 用pa1将对象a1的书籍成员x和y分别初始化为6和8 五、 程序分析题(56): 31、 # include class a int * a; public:
23、a (int x) a = new int(x); cout*a = *a sizeof (q) x = (t)y; else y = (q)x; void main() double d; int i; d = 9999; i = 88; f (d,i); cout d= d i= i endl; d = 88; i = 9999; f (i,d); cout d= d i= i endl; 33、 # include class base public: virtual int func () return 0; ; class derived: public base public: i
24、nt func() return 100; ; void main() derived d; base& b = d; cout b.func() endl; cout b.base:func() endl; 34、 # include class test private: static int val; int a; public: static int func(); static void sfunc(test &r); ; int test:val = 20; int test:func() val += val; return val; void test:sfunc(test &r) r.a = 25; cout result3 = r.a; void main() cout result1 = test:func() endl; test a; cout result2 = a.func(); test:sfunc(a); 面向对象程序设计试题三一、单项选择题 ( 本大题共 10 小题,每小题 2 分,共 20 分 ) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1