全国2003年10月高等教育自学考试面向对象程序设计试题
课程代码:02328
一、单项选择题(本大题共10小题,每小题2分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.下列特性中,C与C++共有的是( )
A.继承
B.封装
C.多态性
D.函数定义不能嵌套
2.通常情况下,函数模板中的类型参数个数不能是( )
A.0
B.2
C.4
D.3
3.在下列成对的表达式中,运算符“+”的意义不相同的一对是( )
A.5.0+2.0和5.0+2
B.5.0+2.0和5+2.0
C.5.0+2.0和5+2
D.5+2.0和5.0+2
4.类的指针成员的初始化是通过函数完成的,这个函数通常是( )
A.析构函数
B.构造函数
C.其它成员函数
D.友元函数
5.要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为( )
A.const char *p=“ABCD”;
B.char const *p=“ABCD”;
C.char *const p=“ABCD”;
D.const char * const p=“ABCD”;
6.静态成员函数没有( )
A.返回值
B.this指针
C.指针参数
D.返回类型
7.当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中( )
A.都是虚函数
B.只有被重新说明时才是虚函数
C.只有被重新说明为virtual时才是虚函数
D.都不是虚函数
8.下面叙述不正确的是( )
A.派生类一般都用公有派生
B.对基类成员的访问必须是无二义性的
C.赋值兼容规则也适用于多重继承的组合
D.基类的公有成员在派生类中仍然是公有的
9.在C++中实现封装是借助于( )
A.枚举
B.类
C.数组
D.函数
10.所有在函数中定义的变量,都是( )
A.全局变量
B.局部变量
C.静态变量
D.寄存器变量
二、填空题(本大题共10小题,每小题2分,共20分)
不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。
11.设函数max是由函数模板实现的,并且max(3.5,5)和max(10,5)都是正确的函数调用,则该模板具有______个类型参数。
12.在单继承和多继承方式中,面向对象的程序设计应尽量使用______继承。
13.语句序列 ifstream datafile;datafile.open(“data.dat”);的功能可用一个语句实现,这个语句是______。
14.将关键字const写在函数头之后,函数体之前,说明该函数是一个const成员函数。此时const不是指定函数的返回值,而是修饰______指针。
15.一个抽象类的派生类可以实例化的必要条件是实现了所有的______。
16.在C++中,虚函数帮助实现了类的______性。
17.通过C++语言中类的______,可以扩充和完善已有类以适应新的需求。
18.为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常需要为该类定义______。
19.在联合中,所有数据成员具有______的地址,任一时刻只有______个数据成员有效。
20.在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语句______。
三、改错题(本大题共5小题,每小题2分,共10分)
21.下面的类定义有一处错误,请用下横线标出错误所在行并改正错误。
class A{
int a;
public;
A(int aa):a=aa{ }
};
22.下面的程序先把字符串“Look out!”输出到一个文件中,然后再从该文件输入,并显示在屏幕上,显示效果为Look out!。程序中有一处错误,请用下横线标出错误所在行,并给出更改意见。
# include
void main(){
ofstream outf(“D:\tem.dat”,ios::trunc);
outf<<“Look out!”;
outf.close( );
ifsteam inf(“D:\tem.dat”);
char k[20]; inf>>k; count< inf.close( );
}
23.下面的程序有一处错误,请用下横线标出错误所在行并改正错误。
# include
class Test{
public;
static int x;
};
int x=20;//对类成员初始化
void main ( )
{
cout< }
24.下面的程序类B的定义中有一处错误,请用下横线标出错误所在行并说明错误原因。
# include
# include
class A{
public:A(const char *nm){strcpy(name,nm);}
private:char name[80];
};
class B:public A{
public:B(const char *nm):A(nm){ }
void PrintName( )const;
};
void B::PrintName( )const{
cout<<“name:”< }
void main( ){
B b1(“wang li”);
b1.PrintName( );
}
25.用下横线标出下面程序main函数中的错误所在行,并说明错误原因。
# include
class Location{
private:
int X,Y;
public;
void init(int initX,int initY);
int sumXY( );
};
void Location::init(int initX,int initY)
{
X=initX;
Y=initY;
}
int Location::sumXY( )
{
return X+Y;
}
void main( )
{
Location A1;
int x,y;
A1.init(5,3);
x=A1.X;y=A1.Y;
cout< }