《面向对象程序设计C》期末试卷及标准答案好的.doc

上传人:h**** 文档编号:1300513 上传时间:2019-02-06 格式:DOC 页数:12 大小:99.50KB
下载 相关 举报
《面向对象程序设计C》期末试卷及标准答案好的.doc_第1页
第1页 / 共12页
《面向对象程序设计C》期末试卷及标准答案好的.doc_第2页
第2页 / 共12页
《面向对象程序设计C》期末试卷及标准答案好的.doc_第3页
第3页 / 共12页
《面向对象程序设计C》期末试卷及标准答案好的.doc_第4页
第4页 / 共12页
《面向对象程序设计C》期末试卷及标准答案好的.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、 第 1 页 面向对象程序设计 C+ 期末 考试试卷 ( A) 班级: 姓名: 学号: 分数: 题号 一 二 三 四 总分 得分 试卷说明:本套试题共 四 个大题,全部题目都答在答题纸上,写在其他地方均无效。 (答题纸在本套试卷的第 10 页上) 一、选择题(每小题 2 分,共 40 分) 1、 C+是( C )。 A. 面向对象的程序设计语言 B. 面向过程的 程序设计语言 C. 既 支持 面向对象的程序设计又 支持 面向过程 的程序设计 的混合型语 言 D. 非结构化的程序设计语言 2、面向对象程序设计思想的主要特征中不包括( D )。 A. 封装性 B. 多态性 C. 继承性 D. 功能

2、分解,逐步求精 3、若定义: string str; 当语句 cinstr; 执行 时,从键盘输入: Microsoft Visual Studio 6.0! 所得的结果是 str=( B )。 A. Microsoft Visual Studio 6.0! B. Microsoft C. Microsoft Visual D. Microsoft Visual Studio 6.0 4、 考虑下面的函数原型声明 : void testDefaulParam(int a,int b=7,char z=*); 下面函数调用中 , 不合法的 是 ( C ) 。 A. testDefaulParam

3、(5); B. testDefaulParam(5,8); C. testDefaulParam(5,#); D. testDefaulParam(0,0,*); 5、 下列语句中 , 将函数 int sum(int x, int y)正确重载的是 ( C ) 。 A. float sum(int x, int y); B. int sum(int a, int b); C. float sum(float x, float y); D. double sum(int y, int x); 第 2 页 6、 下列表示引用的方法中,( A )是正确的。 已知: int a=1000; A. in

4、t B. char C. int D. float 7、 在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( A )。 A. 内联函数 B. 重载函数 C. 递归调用 D. 嵌套调用 8、下列有关 C+类的说法中,不正确的是( D )。 A. 类是一种用户自定义的数据类型 B. 只有类 中 的成员函数 或 类的 友元函数 才能存取类中的私有成员 C. 在类中,如果不做特别说明, 所 有成员的访问权限 均为私有 的 D. 在类中,如 果不做特别说明, 所 有成员的访问权限 均为 公用的 9、 已知 X类,则当程序执行到语句: X array3;时,调用了( D )次

5、构造函数。 A. 0 B. 1 C. 2 D. 3 10、 下面说法中 , 正确的是( B ) A. 一个类只能定义一个构造函数,但可以定义多个析构函数 B. 一个类只能定义一个析构函数,但可以定义多个构造函数 C. 构造函数与析构函数同名,只要名字前加了一个求反符号( ) D. 构造函数可以指定返回类型,而析构函数 不能指定任何返回类型,即使是 void类型也不可以 11、 已知: print( )函数是一个类的常成员函数,它无返回值,下列表示中,( A )是正确的。 A. void print( ) const; B. const void print( ); C. void const

6、print( ); D. void print(const); 12、下面描述中,表达错误的是( B ) A. 公 用 继承时基类中的 public 成员在派生类中仍是 public 的 B. 公 用 继承时基类中的 private 成员在派生类中仍是 private 的 C. 公 用 继承时基类中的 protected 成员在派生类中仍是 protected 的 第 3 页 D. 私有继承时基类中的 public成员在派生类中是 private的 13、 设置虚基类的目的是( B )。 A. 简化程序 B. 消除二义性 C. 提高运行效率 D. 减少目标代码 14、下面( B )的叙述不符合

7、赋值兼容规则。 A. 派生类的对象可以赋值给基类的对象 B. 基类的对象可以赋值给派生类的对象 C. 派生类的对象可以初始化基类 的对象 D. 派生类的对象的地址可以赋值给指向基类的指针 15、 关于虚函数的描述中,( C )是正确的。 A. 虚函数是一个 static类型的成员函数 B. 虚函数是一个非成员函数 C. 基类中说明了虚函数后,派生类中 与 其对应的函数可不必说明为虚函数 D. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型 16、 下面关于友元的描述中,错误的是( D )。 A. 友元函数可以访问该类的私有数据成员 B. 一个类的友元类中的成员函数都是这个类的友元函数 C

8、. 友元可以提高程序的运行效率 D. 类与类之间的友元关系可以继承 17、 下列关于静态数据成员 的 说法,不正确的是( C )。 A. 类中定义的公用静态数据成员,可以通过类的对象来访问 B. 类中定义的所有静态数据成员,都必须在类外初始化 C. 静态数据成员不是所有对象所共用的 D. 普通的成员函数可以直接访问类中的静态数据成员 18、 如果表达式 +i*k中的“ +”和“ *”都是重载的友元运算符,若采用运算符函数调用格式,则表达式还可以表示为( B )。 A. operator*(i.operator+(),k) B. operator*(operator+(i),k) C. i.op

9、erator+().operator*(k) D. k.operator*(operator+(i) 第 4 页 19、下面对模板的声明 , 正确的是 ( C ) 。 A. template B. template C. template D. template 20、 下列的各类函数中 ,( C ) 不是类的成员函数 A. 构造函数 B. 析构函数 C. 友元函数 D. 复制构造函数 二、填空题 ( 前 14个 空 ,每空 1分 , 后 3个 空 ,每空 2分 , 共 20分 ) 1、 类和对象的关系可表述为:类是对象的 抽象 ,而对象则是类的 实例 。 2、 静态成员函数没有隐含的 thi

10、s指针 ,所以, 在 C+程序中, 静态成员函数 主要用来 访问静态数据成员 ,而不 访问 非 静态成员 。 3、 在 图 1中 , A, B, C, D, E, F均是类,其中 属于 单继承的 派 生类 有 E ,属于 多继承的 派生类 有 D、 F , 类 F的基类 有 ABCDE ,类 A的派生类有 DF 。 4、 如果只想保留公共基类的一个复制,就必须使用关键字 virtual 把这个公共基类声明为虚基类。 5、 从实现的角度来讲 , 多态性可以划分为两类: 静态多态性 和 动态多态性 。 6、 如果一个类包含一个或多个纯虚函数,则该类 称 为 抽象类 。 7、 若要把 void fu

11、n()定义为类 A的友元函数,则应在类 A的定义中加入语句 friend void fun(A void fun(int p=a; a=b; b=p; void exchange(int class A public: A( ) cout using namespace std; class A 第 7 页 public: A()cout using namespace std; class A public: void f()cout(istream /对“ ”运算符进行重载 private: double real,imag; ; 要求:( 1)写出该类的所有构造函数的类外定义代码。 (

12、2)写出对运算符 “ +” 、 “ ” 进行重载的运算符重载函数的 定义 。 答案 : 1、( 10分) Complex:Complex()real=0;imag=0; Complex:Complex(double r)real=r; Complex:Complex(double r,double i)real=r;imag=i; Complex operator+(Complex c.real=c1.real+c2.real; c.imag=c1.imag+c2.imag; return c; ostream return input; 2、( 17分)下列 Shape类是一个表示形状的抽象

13、类, area( )为求图形面积的函数, total( )则是一个通用的用以求不同形状的图形面积总和的函数。 class Shape public: virtual double area()=0; ; double total(Shape *s , int n) double sum=0.0; for(int i=0; iarea( ); return sum; 要求:( 1) 从 Shape 类派生 圆 类 (Circle)、 正方形 类( Square), 圆 类 新增数据成员半径( radius),正方形 类 新增数据成员边长( a),圆 类 和正方形 类 都有构造函数 , 修改、 显示 数据成员值的函数, 求面积函数。

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 教育教学资料库 > 试题真题

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。