第一范文网 - 专业文章范例文档资料分享平台

C++试卷样卷(软工)

来源:用户分享 时间:2020-06-28 本文由醉时的梦 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

考试课程名称: 面向对象程序设计 学时: 考试方式:闭卷 考试内容:

一、单项选择题(本大题共12小题,每小题2分,共24分)

1、C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是( ) A. 增加了一些新的运算符 B. 规定函数说明符必须用原型

C. 允许函数重载,并允许设置缺省参数 D. 引进了类和对象的概念

2、在公有继承的情况下,基类成员在派生类中的访问权限( ) A. 受限制 B. 保持不变 C. 受保护 D. 不受保护

3、通过( )调用虚函数时,采用运行期动态绑定。

A. 对象指针 B. 对象名 C. 成员名限定 D. 派生类名

4、下列不是描述类的成员函数的是( )

A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数

5、以下叙述错误的是( )

A. 基类的保护成员在公有派生类中仍然是保护成员 B. 基类的保护成员在派生类中仍然是保护成员 C. 基类的保护成员在私有派生类中是私有成员 D. 基类的保护成员不能被派生类的对象访问

6、下面有关类说法不正确的是( )

A. 在一个类中可以说明具有类类型的数据成员 B. 一个类可以有多个构造函数 C. 析构函数需要指定参数 D. 一个类只有一个析构函数

7、假设Class Y : public X,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时,调用构造函数和析构函数的次序分别为( ) A.X,Y;Y,X B.X,Y;X,Y C.Y,X;X,Y D.Y,X;Y,X

8、在派生类中重新定义虚函数时必须在( )方面与基类保持一致。 A. 参数类型 B. 参数名字 C. 操作内容 D. 赋值

9、下面对于指针的描述不正确的是( )

A. 指针是地址变量 B. 指针不能用除0以外的常量赋值

C. 两个指针变量的加减法无意义 D. 指针指向不同基类型的变量长度不同

10、构造函数不具备的特征的是( )

A. 构造函数的函数名与类名相同 B. 构造函数可以重载

C. 构造函数必须指定类型说明 D. 构造函数可以设置默认参数

11、在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 ( ) A. 派生类的对象可以赋给基类的对象 B. 派生类的对象可以初始化基类的引用 C. 派生类的对象可以直接访问基类中的成员 D. 派生类的对象的地址可以赋给指向基类的指针

12、在 C++ 程序中,对象之间的相互通信通过 ( )

A. 继承实现 B. 调用成员函数实现 C. 封装实现 D. 函数重载实现

二、填空题(本大题共8小题,每小题2分,共16分)

1、假定 AB 为一个类,则语句 AB(AB &x) ;为该类 ________ 构造函数的原型说明。 派生类从一个或多个以前定义的该类的 _________ 继承数据和函数。

2、C++ 支持的两种多态性分别是 _________ 多态性和 _________ 多态性。

3、C++ 语言的函数参数传递方式有______和 ______ 。

4、带有________的类称为抽象类,它只能作为________来使用。

5、在下面的类定义中,私有成员有 _________ 。 class Location { int X,Y;

protected: int zeroX,zerxY;

int SetZero(int zeroX, int zeroY); private:

int length,height; public:

void init(int initX, int initY); int GetX(); int GetY(); };

6、在删除一个动态对象时,将自动调用该动态对象所属类的 _______ 函数;类的私有成员只能被它的成员函数和 _________ 访问。

7、如果表达式 ++i*k 中的“ ++ ”和“ * ”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为_________。

8、模板对处理数据的类型的要求不同可以分为两种类型:________和________。

三、改错题(本大题共5小题,每小题2分,共10分)

如果有错,请指出错误所在位置、说明出错原因并提出解决方法;

1、int & GetSum(int *a, int Num) {

int i, Sum;

for (i=0; i

int main() {

int a[6] = { 2, 3, 5, 7, 8,10 }; int Sum=GetSum(a, 6); … }

2、class C { public:

C( ) { c=0; } private:

const int c; static int x; };

int main() { C::x=-3; … }

3、class Base { public:

Base(float a) { x=a; } float x; };

class Dep : public Base { public:

Dep (int a) { y=a; } int y; };

int main() { Base a(5.0);

Dep *b=(Dep *)&a; cout << b->x << endl; }

4、class A { public:

void Func1(long) { /*…*/ } virtual void Func2(char) = 0; };

class B : public A {

public:

void Func1() { /*…*/ } void Func2(char) { /*…*/ } };

int main() { A a, *ptrA=NULL; B b; ptrA = &b;

b.Func1(100); … }

5、class Complex { public:

Complex();

Complex operator! (Complex &Obj) { /*…*/ } … };

Complex operator() ( Complex C1, Complex C2) { /*…*/ }

四、完成程序题(本大题共5小题,每小题4分,共20分)

1、 在下面程序段横线处填上适当的内容,使该程序输出结果为: Creating B end of B end of A 代码如下:

class A { void main() public: A() { } {

①________ { cout << ″end of A ″; } A*pa=new B; }; delete pa; class B : public A { } public:

B() { ②________ }

~B() { cout << ″end of B ″; } };

2、在下面横线处填上适当内容,完成Distance函数的定义。 class Point { private:

double X,Y; public:

Point(double x=0, double y=0) {X=x; Y=y; } void Move(double x, double y) { X=x; Y=y; }

friend double Distance(Point &p1, Point &p2); //计算两点间距 };

double Distance(Point &p1, Point &p2) void main()

{ double dx = ①________; { Point a(1,1), b(a);

double dy = ②________; b.Move(4,5);

return sqrt(dx*dx+dy*dy); cout << Distance(a,b) << endl; } }

3、在下面横线处填上适当内容,完成两个函数的定义。 class Complex { private:

float real, imag; public:

Complex(float r=0, float i=0 ) { real=r; imag=i;} Complex operator+ (Complex &b );

friend Complex operator- ( Complex &a, Complex &b ); };

Complex Complex::operator+ (Complex &b) {

Complex *t = new Complex ( ①________ ); return *t; }

Complex operator- ( Complex &a, Complex &b ) {

Complex *t = new Complex ( ②________ ); return *t; }

4、在下面横线处填上适当字句,完成求最大值函数模板的定义。 template T Max(T x, T y) {

return ( x>y ? x : y ); }

①________

T Max(T x, T y, T z) {

T t = Max(x,y);

return ( ②________ ); }

void main() {

int x; double y;

x = Max(5,6); y = Max(12.3, 3.4, 7.8); cout << \ \}

5、下面程序三次调用同一函数sum ,在横线处填上适当内容,使输出结果为:

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新初中教育C++试卷样卷(软工) 全文阅读和word下载服务。

C++试卷样卷(软工) .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1104895.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top