最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

10月全国自考面向对象程序设计试题及答案解析

IT圈 admin 36浏览 0评论

2024年6月1日发(作者:平衍)

…………………………………………………………精品自学考试资料推荐………………………………………………

全国2018年10月高等教育自学考试

面向对象程序设计试题

课程代码:02328

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

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括

号内。错选、多选或未选均无分。

1. 所谓多态性是指 ( )

A. 不同的对象调用不同名称的函数 B. 不同的对象调用相同名称的函数

C. 一个对象调用不同名称的函数 D. 一个对象调用不同名称的对象

2. 有如下程序段:

int *p,a[6]={-1,0,1,2,3,4}; p=a+3;

执行该程序段后,*p的值为 ( )

A. 4

C. 1

A. MyA()

B. 2

D. NULL

B. MyA(MyA*)

D. MyA(MyA)

3.类MyA的拷贝初始化构造函数是 ( )

C. MyA(MyA&)

A. 内联函数

C. 递归函数

4.一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 ( )

B. 重载函数

D. 嵌套函数

5.以下有关继承的叙述正确的是 ( )

A. 构造函数和析构函数都能被继承

B. 派生类是基类的组合

C. 派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员

D. 基类的公有成员一定能被派生类的对象访问

6. 解决二义性问题的方法有( )

A. 只能使用作用域分辨操作符 B. 使用作用域分辨操作符或赋值兼容规则

C. 使用作用域分辨操作符或虚基类 D. 使用虚基类或赋值兼容规则

7. 假设类X以类Y作为它的一个基类,并且X类的名字func()支配Y类的名字func(),obj

为类X的对象,则()语句实现的功能为 ( )

A. 先执行类X的func(),再执行访问类Y的func()

B. 先执行类Y的func(),再执行访问类X的func()

C. 执行类X的func()

D. 执行类Y的func()

1

…………………………………………………………精品自学考试资料推荐………………………………………………

8.以下叙述正确的是( )

A. 构造函数调用虚函数采用动态联编

B. 构造函数可以说明为虚函数

C. 当基类的析构函数是虚函数时,它的派生类的析构函数也是虚函数

D. 析构函数调用虚函数采用动态联编

9.以下关于抽象类的描述正确的是 ( )

A. 不能说明指向抽象类对象的指针或引用

B. 可以说明抽象类对象

C. 抽象类的纯虚函数的实现可以由自身给出,也可以由派生类给出

D. 抽象类的纯虚函数的实现由派生类给出

10.在下面格式化命令的解释中,错误的是 ( )

...

A. ios::skipws

B. ios::fill()

C. ios::hex

跳过输入中的空白字符

获得当前的填充字符

转换基数为八进制形式

返回当前的精度 D. ios::precision

11.下面运算符中,不能被重载的运算符是( )

A. <= B. - C. ?: D. []

12.下列有关模板和继承的叙述正确的是 ( )

A. 模板和继承都可以派生出一个类系

B. 从类系的成员看,模板类系的成员比继承类系的成员较为稳定

C. 从动态性能看, 继承类系比模板类系具有更多的动态特性

D. 相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系

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

请在每小题的空格中填上正确答案。错填、不填均无分。

13. 在C++中函数原型不但能标识函数的__________,而且能标识函数参数的__________。

14. 如果类的名称是MyClass则析构函数名为__________,一个类最多能有__________个析

构函数。

15. 假设类X的对象x是类Y的成员对象,则“Y Obj”语句执行时,先调用类__________

的构造函数,再调用类__________的构造函数。

16. 基类的公有成员在私有派生类中是__________成员,基类的保护成员在公有派生类中是

__________成员。

17. 对虚函数使用对象指针或引用,系统使用__________联编,对虚函数使用对象调用时,

系统使用__________联编。

18. 静态成员定义的关键字为__________,一般通过__________来访问静态成员。

19. 类在面向对象程序设计中非常重要,在设计类时可以参考一些原则,如充分利用

__________增加类的自身可靠性,通过继承建立__________等等。

2

…………………………………………………………精品自学考试资料推荐………………………………………………

20. 将关键字__________写在函数体之前函数头之后,说明该函数是一个__________,可以防

止函数改变数据成员的值。

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

21.指出下面引用性说明类MyClass的用法的错误之处,并说明出错原因。

class MyClass;

void main() {

MyClass obj1;

MyClass *p;

void func( MyClass obj);

}

22.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。

class base{

protected:

int p;

public:

Base(int m){p=m;}

};

void f()

{ Base a(10);

cout<

}

23.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。

class base {

public: int x;

};

class One:public base{};

class Two:public base{};

class OT:public One,public Two{

public: int func();

};

void main() {

OT p;

::x;

}

24.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。

class Base{

3

…………………………………………………………精品自学考试资料推荐………………………………………………

public: virtual void fun()=0;

};

class Test: public Base{

public: virtual void fun(){cout<<″=″<

};

void main() {

Base a;

Test*p; p=&a;

}

25.下面程序中有一处错误,请用下横线标出错误所在行并提出修改意见。

class A{

private:

static int x;

};

void func(int a)

{

x=a;

}

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

26.为使下面程序输出结果为:

1*2

3+4

请在横线处填上适当的字句,以使程序完整。

#include

class A

{

private:

int R1, R2;

public:

A(int r1, int r2) { R1=r1; R2=r2; }

void print();

void print() const;

};

void A::print()

{

cout<

4

…………………………………………………………精品自学考试资料推荐………………………………………………

}

void A::print() const

{

cout<

}

void main()

{

A a(1, 2);

const A b(3, 4);

();

();

}

27. 在下面横线处填上适当字句,完成类中成员函数的定义。

#include

class A

{

private:

int X,Y;

public:

A() { X=Y=0; }

A(int xx,int yy) :X(xx),Y(yy) { }

A(A &a) {

①__________

}

int GetX() {return X;}

int GetY() {return Y;}

void SetXY(int x,int y) { X=x; Y=y; }

};

int main()

{

A * Ptr=new A[2];

Ptr[0].SetXY(5,10);

Ptr[1].SetXY(15,20);

cout<<″Release Ptr ……″<

②__________; //释放动态分配内存

5

…………………………………………………………精品自学考试资料推荐………………………………………………

return 0;

}

28.请在横线处填上适当的字句,以使程序完整。

#include

#include ″math.h″

class Point

{

private:

double X,Y;

①__________Line;

public:

Point(double x=0, double y=0) {

X=x; Y=y;

}

Point(Point &p){

X=p.X; Y=p.Y;

}

};

class Line

{

private:

Point p1,p2;

public:

Line(Point &xp1, Point &xp2): ②__________{}

double GetLength();

};

double Line::GetLength()

{ double dx=p2.X-p1.X;

double dy=p2.Y-p1.Y;

return sqrt(dx*dx + dy*dy);

}

void main()

{

Point p1,p2(3,4);

Line L1(p1,p2);

cout<

6

2024年6月1日发(作者:平衍)

…………………………………………………………精品自学考试资料推荐………………………………………………

全国2018年10月高等教育自学考试

面向对象程序设计试题

课程代码:02328

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

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括

号内。错选、多选或未选均无分。

1. 所谓多态性是指 ( )

A. 不同的对象调用不同名称的函数 B. 不同的对象调用相同名称的函数

C. 一个对象调用不同名称的函数 D. 一个对象调用不同名称的对象

2. 有如下程序段:

int *p,a[6]={-1,0,1,2,3,4}; p=a+3;

执行该程序段后,*p的值为 ( )

A. 4

C. 1

A. MyA()

B. 2

D. NULL

B. MyA(MyA*)

D. MyA(MyA)

3.类MyA的拷贝初始化构造函数是 ( )

C. MyA(MyA&)

A. 内联函数

C. 递归函数

4.一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 ( )

B. 重载函数

D. 嵌套函数

5.以下有关继承的叙述正确的是 ( )

A. 构造函数和析构函数都能被继承

B. 派生类是基类的组合

C. 派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员

D. 基类的公有成员一定能被派生类的对象访问

6. 解决二义性问题的方法有( )

A. 只能使用作用域分辨操作符 B. 使用作用域分辨操作符或赋值兼容规则

C. 使用作用域分辨操作符或虚基类 D. 使用虚基类或赋值兼容规则

7. 假设类X以类Y作为它的一个基类,并且X类的名字func()支配Y类的名字func(),obj

为类X的对象,则()语句实现的功能为 ( )

A. 先执行类X的func(),再执行访问类Y的func()

B. 先执行类Y的func(),再执行访问类X的func()

C. 执行类X的func()

D. 执行类Y的func()

1

…………………………………………………………精品自学考试资料推荐………………………………………………

8.以下叙述正确的是( )

A. 构造函数调用虚函数采用动态联编

B. 构造函数可以说明为虚函数

C. 当基类的析构函数是虚函数时,它的派生类的析构函数也是虚函数

D. 析构函数调用虚函数采用动态联编

9.以下关于抽象类的描述正确的是 ( )

A. 不能说明指向抽象类对象的指针或引用

B. 可以说明抽象类对象

C. 抽象类的纯虚函数的实现可以由自身给出,也可以由派生类给出

D. 抽象类的纯虚函数的实现由派生类给出

10.在下面格式化命令的解释中,错误的是 ( )

...

A. ios::skipws

B. ios::fill()

C. ios::hex

跳过输入中的空白字符

获得当前的填充字符

转换基数为八进制形式

返回当前的精度 D. ios::precision

11.下面运算符中,不能被重载的运算符是( )

A. <= B. - C. ?: D. []

12.下列有关模板和继承的叙述正确的是 ( )

A. 模板和继承都可以派生出一个类系

B. 从类系的成员看,模板类系的成员比继承类系的成员较为稳定

C. 从动态性能看, 继承类系比模板类系具有更多的动态特性

D. 相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系

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

请在每小题的空格中填上正确答案。错填、不填均无分。

13. 在C++中函数原型不但能标识函数的__________,而且能标识函数参数的__________。

14. 如果类的名称是MyClass则析构函数名为__________,一个类最多能有__________个析

构函数。

15. 假设类X的对象x是类Y的成员对象,则“Y Obj”语句执行时,先调用类__________

的构造函数,再调用类__________的构造函数。

16. 基类的公有成员在私有派生类中是__________成员,基类的保护成员在公有派生类中是

__________成员。

17. 对虚函数使用对象指针或引用,系统使用__________联编,对虚函数使用对象调用时,

系统使用__________联编。

18. 静态成员定义的关键字为__________,一般通过__________来访问静态成员。

19. 类在面向对象程序设计中非常重要,在设计类时可以参考一些原则,如充分利用

__________增加类的自身可靠性,通过继承建立__________等等。

2

…………………………………………………………精品自学考试资料推荐………………………………………………

20. 将关键字__________写在函数体之前函数头之后,说明该函数是一个__________,可以防

止函数改变数据成员的值。

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

21.指出下面引用性说明类MyClass的用法的错误之处,并说明出错原因。

class MyClass;

void main() {

MyClass obj1;

MyClass *p;

void func( MyClass obj);

}

22.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。

class base{

protected:

int p;

public:

Base(int m){p=m;}

};

void f()

{ Base a(10);

cout<

}

23.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。

class base {

public: int x;

};

class One:public base{};

class Two:public base{};

class OT:public One,public Two{

public: int func();

};

void main() {

OT p;

::x;

}

24.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。

class Base{

3

…………………………………………………………精品自学考试资料推荐………………………………………………

public: virtual void fun()=0;

};

class Test: public Base{

public: virtual void fun(){cout<<″=″<

};

void main() {

Base a;

Test*p; p=&a;

}

25.下面程序中有一处错误,请用下横线标出错误所在行并提出修改意见。

class A{

private:

static int x;

};

void func(int a)

{

x=a;

}

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

26.为使下面程序输出结果为:

1*2

3+4

请在横线处填上适当的字句,以使程序完整。

#include

class A

{

private:

int R1, R2;

public:

A(int r1, int r2) { R1=r1; R2=r2; }

void print();

void print() const;

};

void A::print()

{

cout<

4

…………………………………………………………精品自学考试资料推荐………………………………………………

}

void A::print() const

{

cout<

}

void main()

{

A a(1, 2);

const A b(3, 4);

();

();

}

27. 在下面横线处填上适当字句,完成类中成员函数的定义。

#include

class A

{

private:

int X,Y;

public:

A() { X=Y=0; }

A(int xx,int yy) :X(xx),Y(yy) { }

A(A &a) {

①__________

}

int GetX() {return X;}

int GetY() {return Y;}

void SetXY(int x,int y) { X=x; Y=y; }

};

int main()

{

A * Ptr=new A[2];

Ptr[0].SetXY(5,10);

Ptr[1].SetXY(15,20);

cout<<″Release Ptr ……″<

②__________; //释放动态分配内存

5

…………………………………………………………精品自学考试资料推荐………………………………………………

return 0;

}

28.请在横线处填上适当的字句,以使程序完整。

#include

#include ″math.h″

class Point

{

private:

double X,Y;

①__________Line;

public:

Point(double x=0, double y=0) {

X=x; Y=y;

}

Point(Point &p){

X=p.X; Y=p.Y;

}

};

class Line

{

private:

Point p1,p2;

public:

Line(Point &xp1, Point &xp2): ②__________{}

double GetLength();

};

double Line::GetLength()

{ double dx=p2.X-p1.X;

double dy=p2.Y-p1.Y;

return sqrt(dx*dx + dy*dy);

}

void main()

{

Point p1,p2(3,4);

Line L1(p1,p2);

cout<

6

发布评论

评论列表 (0)

  1. 暂无评论