您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页2020年1月全国自学考试试题及答案解析面向对象程序设计试卷及答案解析

2020年1月全国自学考试试题及答案解析面向对象程序设计试卷及答案解析

来源:好走旅游网
…………………………………………………………精品自学考试资料推荐………………………………………………

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

面向对象程序设计试题

课程代码:02328

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

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。

1.编写C++程序一般需经过的几个步骤依次是( ) A. 编译、编辑、连接、调试 C. 编译、调试、编辑、连接

B. 编辑、编译、连接、调试 D. 编辑、调试、编译、连接

2.函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为( ) A.1 C.4

B.2 D.5

3.假定AB为一个类,则执行 “AB a(2), b[3], *p[4];”语句时共调用该类构造函数的次数为( ) A. 3 C. 5

B. 4 D. 9

4.假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete []px;”语句时共调用该类析构函数的次数为( ) A. 0 C. n

B. 1 D. n+1

5.如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( ) A. a.operator++(1) C. operator++(a,1) 6. 继承机制的作用是( ) A. 信息隐藏 C. 定义新类

B. 数据封装 D. 数据抽象 B. operator++(a) D. a.operator++()

7.以下哪个基类中的成员函数表示纯虚函数? ( ) A. virtual void vf(int) C. virtual void vf()=0

B. void vf(int) = 0 D. virtual void yf(int){}

1

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

8.假定一个类的构造函数为 “A(int aa, int bb) {a=aa; b=aa*bb;}”,则执行 “Ax(4,5);”语句后,x.a和x.b的值分别为( ) A. 4和5 C. 4和20

9.一个类的静态数据成员所表示属性( ) A. 是类或对象的属性 C. 只是类的属性

10.一个C++源程序文件的扩展名为( ) A. .h C. .cpp

B. .c D. .cp

B. 只是对象的属性 D. 是类和友元的属性 B. 5和4 D. 20和5

二、填空题(本大题共10小题,每小题2分,共20分)

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

11.重载“<<”操作符时,应声明为 ____________ 函数。 12.在C++中,编译指令都是以____________(符号)开始。

13.假定要把aa定义为AB类中的一个引用整数型数据成员,则定义语句为____________。 14.C++支持两种多态性,编译时的多态性和____________时的多态性。

15.假定用户为类AB定义了一个构造函数“AB(int aa=0):a(aa){}”,则定义该类的对象时,可以有____________种不同的定义格式。

16.若p指向x,则____________与x的表示是等价的。

17.C++的流库预定义了4个流,它们是cin、cout、cerr和____________。 18.当函数参数表用____________保留字表示时,则表示该参数表为空。 19.每个对象都是所属类的一个____________。

20.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有____________个操作数。

三、改错题(本大题共2小题,每小题6分,共12分)

21.假定要求下面程序输出结果为“d=800,f=60”,在第5-20行中存在着三条语句错误,请指出错误语句的行号并改正。 #include class A {

2

//1行 //2行

int a[10]; int n;

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

public:

//3行 //4行 //5行 //6行 //7行 //8行 //9行 //10行 //11行 //12行 //13行 //14行 //15行 //16行 //17行 //18行 //19行 //20行 //21行 //22行 //23行

A(int aa[], int nn): n(nn) {

for(int i=0; iint Get(int i) {return a[i];} int SumA(int n); };

int A::SumA(int n) {

int s=0;

for(int j=0; jvoid main() {

int a[]={2,5,8,10,15,20}; A x(a,6); int d=1;

for(int i=0; i<4; i++) d*=x.a[i]; int f=SumA(6);

cout<<\"d=\"<错误行的行号为____________、____________和____________。 分别改正为____________、____________和____________。

22.下面程序段第4到7行中存在着三条语句的语法错误,请指出错误语句的行号并改正。 class A { int a,b;

//1行 //2行 //3行 //4行 //5行 //6行

const int c; public

A():c(0);a(0);b(0) {}

A(int aa, int bb) c(aa+bb); {a=aa; b=bb;}

3

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

};

//7行 //8行 //9行 //10行

A a,b(1,2);

A *x=&a, &y=b;

A *z=new A, w[10];

错误行的行号为____________、____________和____________。 分别改正为____________、____________和____________。 四、程序填空题(本大题共3小题,每小题6分,共18分)

请按提示要求完成以下程序段的填空。

23.在下面一段类定义中, Derived类公有继承了基类Base。需要填充的函数由注释内容

给出了功能。 class Base {

private:

int mem1,mem2; //基类的数据成员

public:

Base(int m1,int m2) { mem1=m1; mem2=m2; }

void output(){cout<class Derived: public Base {

private: int mem3; public:

//构造函数,由m1和m2分别初始化mem1和mem2,由m3初始化mem3 Derived(int m1,int m2, int m3);

//输出mem1,mem2和mem3数据成员的值

4

//派生类本身的数据成员

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

void output(){

(1) ; cout<Derived::Derived(int m1,int m2, int m3): (2) { (3) ;}

(1) (2) (3) 24.class A {

int a,b; public:

(4) //定义构造函数,使参数aa和bb的默认值为0, {a=aa;b=bb;}//在函数体中用aa初始化a,用bb初始化b

};

main() {

A *p1, *p2;

(5) ;//调用无参构造函数生成由p1指向的动态对象 (6) ;//调用带参构造函数生成由p2指向的动态对象,

//使a和b成员分别被初始化为4和5

}

(4) (5) (6) 25.已知一个类的定义如下:(假设类的成员函数已实现) #include class AA {

int a[10]; int n; public:

void SetA(int aa[], int nn); //用数组aa初始化数据成员a,

//用nn初始化数据成员n

int MaxA();//从数组a中前n个元素中查找最大值

5

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

void SortA(); //采用选择排序的方法对数组a中前n个元素

//进行从小到大排序

void InsertA(); //采用插入排序的方法对数组a中前n个元素进行从小到大排序 void PrintA(); //依次输出数组a中的前n个元素

//最后输出一个换行

};

使用该类的主函数如下: void main() {

int a[10]={23,78,46,55,62,76,90,25,38,42}; AA x; (7) ; int m= (8) ; (9) ; cout<该程序运行结果为: 23 78 46 55 62 76 78

(7) (8) (9) 五、程序分析题(本大题共6小题,每小题5分,共30分)

阅读以下程序,写出其运行结果。

26.当从键盘上输入9.98时,写出下面程序的执行结果。

#include void main() {

int a,b; char ch;

cin>>a>>ch>>b;// 从键盘上输入 9.98 cout<6

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

}

27.#include

class aa {

public:

virtual int func () { return 0; }

};

class test: public aa {

public:

int func() { return 58; }

};

void main() {

test d; aa& b `= d;

cout << b.func() << endl; cout << b.aa::func() << endl; }

28.#include

class myclass {

public:

int number; void set(int i);

};

int number=8; void myclass::set (int i) {

number=i;

}

void main()

7

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

{

myclass my1; int number=20; my1.set(6);

cout<29.#include

class a {

public:

virtual void print(){cout<< \" this is class a printing. \" << endl; };

};

class b: public a {

public:

void print(){ } ;

};

class c: public b {

public:

void print(){cout<< \" this is class c printing. \" <};

void show(a &aa) {

aa.print();

8

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

} void main() {

a a; b b; c c; show(a); show(b); show(c);

}

30.#include

class Date {

int Year,Month,Day; public:

Date(int y=2001,int m=1,int d=1){Year=y; Month=m; Day=d;} void PrintDate(){ cout<}; class Time {

int Houre, Minutes, Seconds; public:

Time(int h=5,int m=30,int s=0){Houre=h; Minutes=m; Seconds=s;} void PrintTime(){ cout<};

class Date_Time: public Date, public Time {

public:

9

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

Date _ Time(){};

Date _ Time(int y,int mo,int d,int h=0,int mi=0,int s=0):

Date(y,mo,d), Time(h,mi,s){}

void PrintDate_Time(){PrintDate();PrintTime();}

};

void main() {

Date _ Time a, b(2002,10,1,6,20,0), c(2003,3,8,6,7); a.PrintDate _ Time(); b.PrintDate _ Time(); c.PrintDate _ Time();

}

31. #include

void f2(int& x, int& y) {

int z=x; x=y; y=z; }

void main() {

int x=10,y=26;

cout<<\"x,y=\"<cout<<\"x,y=\"<cout<<\"x,y=\"<10

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务