2022年面向对象程序设计复习题库 .pdf
学而不思则惘,思而不学则殆判断题1. C+ 中标识符内的大小写字母是没有区别的。2. C+ 是一种以编译方式实现的高级语言。3. 在私有继承中,基类中所有成员对派生类都是不可见的。4. 在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。5. 使用关键字class定义的类中缺省的访问权限是私有(private)的。6. 引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。7. 类封装了数据和操作。8. 析构函数可以有形参。9. 派生类至少有一个基类。10. 全局函数和静态成员函数也能声明为虚函数。11. 在公有和保护继承方式下,派生类的对象可以对基类的保护成员进行访问12. 友元本身就是类的成员。13. 一个类只能有一个对象。14. 构造函数没有函数类型。15. 构造函数没有函数类型。16. 只有类的成员函数才能声明为虚函数。17. 所谓私有成员是指只有类中所提供的成员函数才能直接访问它们,任何类以外的函数对它们的访问都是非法的。18. For 循环是只有可以确定的循环次数时才可使用,否则不能用for 循环。19. 通常的拷贝初始化函数的参数是某个对象的成员名或对象的引用名。20. 已知:类A 中一个成员函数说明如下:void Set(A& a);其中 A& a的含意是将a 的地址值赋给变量Set。选择题1. 一个最简单的C+程序,可以只有一个(2 分) A. 库函数B. 自定义函数C. main 函数D. 空函数2. C+ 程序中的简单语句必须以( )结束 (2 分) A. 冒号B. 分号C. 空格D. 花括号3. 下列选项中,全部都是C+ 关键字的选项为(2 分 ) A. while IF Static B. break char go C. sizeof case extern D. switch float integer 4. 下列正确的字符常量为(2 分) A. a B. name C. a D. 101 5. 下列选项中,( )不能交换变量a 和 b 的值。 (2 分) A. t=b; b=a; a=t; B. a=a+b; b=a-b; a=a b; C. t=a; a=b; b=t; D. a=b; b=a; 6. 已知int a10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 , *p = a ;则不能表示数组a 中元素的式子是( )(2 分) A. *a B. *p C. a D. ap-a 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 15 页学而不思则惘,思而不学则殆7. 在下列运算符中,( )优先级最高。(2 分) A. = B. *= C. + D. * 8. 对于以下程序段,表达式正确的是class basepublic: int b; class base1:public base; class base2:public base; class derived: public base1,public base2public: int fun(); derived d;(2 分) A. d.base1:b B. d.base:b C. d.b D. d.base:fun() 9. 派生类的对象与基类的对象的关系是(2 分) A. 属于前者则不属于后者B. 属于前者,不一定属于后者C. 不属于前者则一定不属于后者D. 属于前者则一定属于后者10. 如果没有使用关键字,则所有成员(2 分) A. 都是 public 权限B. 都是 protected 权限C. 都是 private 权限D. 权限情况不确定11. 下列说法中正确的是(2 分) A. 运算符 new 用于建立生存期可控的对象B. new 建立动态对象的语法完全不同于建立动态变量的情况C. 使用 new 建立的动态对象不用时必须调用析构函数删除D. new 和构造函数不能同时使用12. 一个类最多可有几个虚析构函数(2 分) A. 不定B. 4 C. 3 D. 1 13. 关于下面程序段,说法正确的是class A private: int n; public: A(A&); ; A:A(A&a)n=a.n;(2 分) A. A obj2(obj1); 用对象 obj1 初始化具有相同类类型的对象obj2 B. A obj2(obj1); 用对象 obj2 初始化具有相同类类型的对象obj1 C. A(A&a)也可以不使用引用参数而仍然是复制初始化构造函数D. A(A&a)不能访问对象的私有成员14. 析构函数不用于(2 分) A. 在对象创建时执行一些清理任务精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 15 页学而不思则惘,思而不学则殆B. 在对象消失时执行一些清理任务C. 释放由构造函数分配的内存D. 在对象的生存期结束时被自动调用15. 形如 X:X(X&)的构造函数称为(2 分) A. 拷贝函数B. 复制函数C. 初始化构造函数D. 拷贝初始化构造函数16. 有关类作用域,下列说法中不正确的是(2 分) A. 说明类时使用的一对花括号形成所谓的类作用域B. 类作用域不包含类中成员函数的作用域C. 类作用域中说明的标识符只在类中可见D. 在可能出现两义性的情况下,必须使用作用域限定符“: ”17. 缺省的析构函数的函数体是(2 分) A. 不存在的B. 随机产生的C. 空的D. 无法确定的18. 以下说法中正确的是(2 分) A. 一个类只能定义一个构造函数,但可以定义多个析构函数B. 一个类只能定义一个析构函数,但可以定义多个构造函数C. 构造函数与析构函数同名,只是名字前加了一个波浪号()D. 构造函数可以指定返回类型;而析构函数不能指定任何返回类型,即使是void 类型也不可以19. getline 函数的功能是从输入流中读取( )(2 分) A. 一个字符B. 当前字符C. 一行字符D. 指定若干个字节20. 要求打开文件D:file.dat ,并能够读写数据,正确的语句是( )(2 分) A. ifstream infile( “ D:file.dat” , ios:in ) ;B. ifstream infile( “ D:file.dat” , ios:out ) ;C. ofstream outfile( “ D:file.dat” , ios:in ) ;D. fstream infile( “ D:file.dat” , ios:in|ios:out ) ;21. 关于 C+语言,下列说法不正确的是(2 分) A. A C+具有简洁、高效和接近汇编语言的特点B. B C+本身几乎没有支持代码重用的语言结构C. C C+语言不是一种纯面向对象的语言D. D C+支持面向对象的程序设计,这是它对C的重要改进22. 下列流类中可以用于处理文件的是( )。(2 分) A. ios B. iostream C. strstream D. fstream 23. 若一个类中含有纯虚函数,则该类称为( )。 (2 分) A. 基类B. 纯基类C. 抽象类D. 派生类精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 15 页学而不思则惘,思而不学则殆24. 下面函数原型中,( )声明了 fun 为纯虚函数。 (2 分) A. void fun()=0; B. virtual void fun()=0; C. virtual void fun(); D. virtual void fun() ; 25. 下列函数中,不能说明为虚函数的是( )(2 分 ) A. 私有成员函数B. 公有成员函数C. 构造函数D. 析构函数26. 在创建派生类对象时,构造函数的执行顺序是( )。(2 分) A. 对象成员构造函数基类构造函数派生类本身的构造函数B. 派生类本身的构造函数基类构造函数对象成员构造函数C. 基类构造函数派生类本身的构造函数对象成员构造函数D. 基类构造函数对象成员构造函数派生类本身的构造函数27. 在 c+中,可以被派生类继承的函数是( )。(2 分) A. 成员函数B. 构造函数C. 析构函数D. 友员函数28. 下面描述中,错误的是( )。(2 分 ) A. 在基类定义的public 成员在公有继承的派生类中可见,也能在类外被访问。B. 在基类定义的protected 成员在私有继承的派生类中可见。C. 在基类定义的公有静态成员在私有继承的派生类中可见。D. 访问声明可以在公有继承派生类中把基类的public 成员声明为private 成员。29. 若 class B中定义了一个class A的类成员 A a,关于类成员的正确叙述是( )(2 分) A. 在类 B 的成员函数中可以访问A 类的私有数据成员B. 在类 B的成员函数中可以访问A 类的保护数据成员C. 类 B 的构造函数可以调用类A 的构造函数做数据成员初始化D. 类 A 的构造函数可以调用类B 的构造函数做数据成员初始化30. 在 c+中,类之间的继承关系具有( )。(2 分) A. 自反性B. 对称性C. 传递性D. 反对称性31. 下列关于类的继承描述中,( )是正确的。 (2 分) A. 派生类公有继承基类时,可以访问基类的所有数据成员,调用所有成员函数。B. 派生类也是基类,所以它们是等价的。C. 派生类对象不会建立基类的私有数据成员,所以不能访问基类的私有数据成员。D. 一个基类可以有多个派生类,一个派生类可以有多个基类。32. 下面对构造函数的不正确描述是( )。(2 分 ) A. 系统提供默认的构造函数B. 构造函数可以有参数,所以也可以有返回值C. 构造函数可以重载D. 构造函数可以设置默认参数精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 15 页学而不思则惘,思而不学则殆33. 下面对析构函数的正确描述是( )。(2 分) A. 系统不提供默认的析构函数B. 析构函数必须由用户定义C. 析构函数没有参数,也没有返回值D. 析构函数可以设置默认参数34. 说明一个类的对象时,系统自动调用构造函数;撤消对象时,系统自动调用( )。(2分) A. 成员函数B. 构造函数C. 析构函数D. 友员函数35. 说明一个类的对象时,系统自动调用( );(2 分) A. 成员函数B. 构造函数C. 析构函数D. 友元函数36. 以下不能对二维数组a 进行正确初始化的语句是( )。(2 分 ) A. int a23 = 0 ; B. int a3 = 0,1 , 0 ; C. int a23 = 0, 1 , 2, 3 , 4, 5 ; D. int a3 = 0, 1, 2, 3, 4, 5 ; 37. 已知 int a3 = 0, 1 , 2, 3, 4 , 5, 6 , 7 ; 则 a21 的值是 ( )。(2 分 ) A. 0 B. 2 C. 6 D. 7 38. 已知 char *a= fortran, basic, pascal, java, c+ ; 则 couta3; 的显示结果是( )。 (2 分) A. t B. 一个地址值C. java D. javac+ 39. 有函数原型void fun4( int & ); 下面选项中,正确的调用是( )。(2 分) A. int a = 2.17; fun4( &a ); B. int a = 15; fun4( a*3.14 ); C. int b = 100; fun4( b ); D. fun4( 256 ) ; 40. 函数参数的默认值不允许为( )。(2 分) A. 全局常量B. 直接常量C. 局部变量D. 函数调用程序设计题精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 15 页学而不思则惘,思而不学则殆输入:立方体的三边长,height,width,length,均为浮点数输出 : 立方体的表面积,体积,保留2 位小数。样例输入3.44 5.45 3 样例输出90.84 56.24 提示用 cin得到输入后,创建box的对象,创建时用得到的值初始化。然后调用相关函数,得到输出。样例输入3 样例输出2013-10-03 提示可用重载函数测试,也可用默认参数方式测试精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 15 页学而不思则惘,思而不学则殆提示其中 void applyIntRate():简化设计不考虑时间的因素,只在最后算余额时算利息,例如范例中算的是3500(3000+1000-500)的利息。amount+=amount*rate; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 15 页学而不思则惘,思而不学则殆精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 15 页学而不思则惘,思而不学则殆精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 15 页学而不思则惘,思而不学则殆精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 15 页学而不思则惘,思而不学则殆精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 15 页学而不思则惘,思而不学则殆精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 15 页学而不思则惘,思而不学则殆精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 15 页学而不思则惘,思而不学则殆精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 15 页学而不思则惘,思而不学则殆精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 15 页