欢迎访问桃李自考网,本站可为自考生提供学习指导服务,今天是

您所在的位置: 首页> 备考指导 > 历年真题 > 工学类 > 面向对象程序设计 > 全国2004年10月高等教育自学考试面向对象程序设计试题

全国2004年10月高等教育自学考试面向对象程序设计试题

发表时间:2022-07-08 11:31:50 来源:桃李自考网

全国2005年1月高等教育自学考试
面向对象程序设计试题
课程代码:02328


一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题2分,共38分)
1.下面对于指针的描述不正确的是()。
A.指针是地址变量
B.指针不能用除0以外的常量赋值
C.两个指针变量的加减法无意义
D.指针指向不同基类型的变量长度不同
2.下面对于析构函数的描述中不正确的是()。
A.析构函数是内置函数B.析构函数与类名相同
C.析构函数不能有参数D.析函数在对象撤销时自动执行
3.下列指针用法中错误的是()。
A. int i;int*ptr=&i; B. int i;int *ptr;i=*ptr;
C. int *ptr;ptr=0; D. int i=5;int *ptr;*ptr=i; 4.派生类的对象对它的基类成员中什么是可访问的()?
A.公有继承的公有成员B.公有继承的私有成员
C.公有继承的保护成员D.私有继承的公有成员
5.在()情况下适宜采用inline定义内联函数。
A.函数体含有循环语句B.函数体含有递归语句
C.需要加快程序的执行速度D.函数代码多、不常调用
6.在类中说明的成员可以使用关键字()进行修饰。
A. public B. extern
C. cpu D. register
7.如果类A被说明成类B的友元,则()。
A.类A的成员即类B的成员
B.类B的成员即类A的成员
C.类A的成员函数不得访问类B的成员
D.类B不一定是类A的友元
8.定义析构函数时,应该注意()。
A.其名与类名完全相同B.返回类型是void类型
C.无形参,也不可重载D.函数体中必须有delete语句
9.在类中声明转换函数时不能指定()。
A.参数B.访问权限
C.操作D.标识符
10.在派生类中重新定义虚函数时必须在()方面与基类保持一致。
A.参数类型B.参数名字
C.操作内容D.赋值
11.设int a=3,b=4,c=5;表达式(a+b)>c&&b==c的值是()。
A. 2B. -1
C. 0D. 1
12.下列标识符中,不合法的用户标识符为()。
A. a#bB. _int
C. a_10D. PAd
13.while(!x)中的(!x)与下面条件()等价。
A. x==1 B. x!=1
C. x!=0 D. x==0
14.每个类()构造函数。
A.只能有一个B.只可有公有的
C.可以有多个D.只可有缺省的
15.在一个类中可以对一个操作符进行()重载。
A. 1种B. 12种以下
C. 32种以下D. 多种
16.重载赋值操作符时,应声明为()函数。
A.友元B.虚
C.成员D.多态
17.在私有继承的情况下,基类成员在派生类中的访问权限()。
A.受限制B.保持不变
C.受保护D.不受保护
18.通过()调用虚函数时,采用动态束定。
A.对象指针B.对象名
C.成员名限定D.派生类名
19.在类中声明转换函数时不能指定()。
A.参数个数B.访问权限
C.标识符D.操作
二、填空题(每空2分,共22分)
1.派生类的主要用途是可以定义其基类中_______。
2.当建立_______,程序自动调用该类的构造函数。
3.定义重载函数函数时,应在_______上有所不同。
4.类是用户定义的类型,具有类类型的变量称作_______。
5.当一个成员函数被调用时,该成员函数的_______指向调用它的对象。
6.拷贝函数通过_______使用引用来初始化创建中的对象。
7.在一个类中至少可以对一个_______进行2种重载。
8.在C++中有二种_______方式即值传递和_______传递。
9.函数的_______性通过虚函数来实现的。

10.使用空的虚函数可以保证_______建立起一条存取路径,使派生类通过虚函数机制正确存取虚函数。
三、完成程序题(每小题5分,共20分)
1.在下面程序的底画线处填上适当的字句,使该程序执行结果为60。
# include
class base{int X;
public∶
void int (int initX){X=initX; }
intGetnum() {returnX+7; }
void main()
{_______
_______
cout<}
2.在下面程序的底画线处填上适当的字句,完成类中成员函数的定义。
# include
class box{ private∶
intcolor;int upx,upy;int lowx,lowy;
public∶
friend int same_color(line a,box b);
_______;
void define_box(int x1,int y1,int x2,int y2){upx=x1;upy=y1;}
};
class line{ private∶
intcolor;int startx,starty;int len;
public∶
friend_int same_color(line a,box b);
_______;
void define_line(int x,int y){startx=x;}
};
int same_color(line a,box b)
{if(a.color==b.color)
return 1;
return 0;}
3.在下面程序的底画线处填上适当的字句,完成程序。
# include
class A{
_______(int i){cout<void g(){cout<<”g\n”;}
};
closs B∶A{
public∶void h(){cout<<”h\n”;}
_______;
};
void main()
{ B d1;
d1.f(6);
d1.h();
}
4.在下列程序的空格处填上适当的字句,使输出为:0,8,5。
# include
# include
class Magic{
double x;
public∶

Magic(double d=0.00)∶x(fabs(d)){}
Magic _______{return Magic(sqrt(x*x+c.x*c.x));}
_______<<(ostream & os,Magic c){return os<};
void main()
{Magic ma;
cout<}
四、综合应用题(共20分)
1.分析下列程序可能的输出结果。(8分)
# include “iostream.h”
class test{private∶
int num;
float fl;
public∶
test();
int getint(){return num;}
float getfloat(){return fl;}
~test();
};
test∶∶test();
{cout<<″lnitalizing default″<num=0;fl=0.0;
}
test∶∶~test()
{cout<<″Desdtructor is active″<int main()
{test array[2];
cout<}
2.下列shape类是一个表示形状的抽象类,length()为求图形周长的函数,total()则是一个通用的用以求不同形状的图形周长总和的函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求周长函数。给出shape,total的定义如下所示。(12分)
class shape{
public∶
virtual float length()=0
};
float total(shape *s[],int n)
{
float sum=0.0;
for(int i=0;isum+=s[i]->length();
return sum;
}