1、 班级: 姓名: 学号: . O…………O…………O…………O…………O装………O订………O线…………O…………O…………O…………O……………O 绍兴文理学院 2011 学年 01学期 信计 专业 09 级《面向对象程序设计》试卷(答题卷) (A) 题 号(型) 一 二 三 四 五 核分人 得 分 总分 评卷人 (考试形式:闭卷 ) 一、选择题 (共15分,每小题1
2、分) 1. 下面的函数声明中, 哪一个是” void BC(int a, int b);”的重载函数? ( ) A、int BC(int a, int b) B、void BC(int a, char b) C、float BC(int a, int b, int c = 0) D、void BC(int a, int b=0) 2.C++源程序文件的缺省扩展名为( ) A、cpp B、exe C、obj D、lik 3.假定AA为一个类,a为该类的公有数据成员,px为指向该类对象的一个
3、指针,则访问px所指对象中数据成员a的格式为( ) A、px(a) B、px[a] C、px.a D、px->a 4.类中定义的数据成员默认为( )访问属性 A、private B、public C、protected D、friend 5.假定AB为一个类,执行“AB R1=R2;”语句时,将自动调用该类的( ) A、无参构造函数 B、带参构造函数 C、赋值重载函数 D、拷贝构造函数 6.引入友元的主要目的是为了( ) A、增强数
4、据的安全性 B、提高程序的可靠性C、提高程序的效率和灵活性 D、保证类的封装性 7. 下列关于构造函数的描述中,错误的是() A、 构造函数可以设置默认参数; B、 构造函数在定义类对象时自动执行 C、 构造函数可以是内联函数; D、 构造函数不可以重载 8. 派生类的对象对它的基类成员中( )是可访问的 A、公有继承的公有成员 B、公有继承的私有成员 C、公有继承的保护成员 D、私有继承的公有成员 9.关于插入运算符<<的重载,下列说法错误的是( ) A、其返回值类型是ostream &
5、 B、此运算符重载必须为类的成员函数 C、运算符的第一个参数类型是ostream & D、运算符函数有两个参数 10.下列虚基类的声明中正确的是( ) A、class virtual B:public A B、class B:virtual public A C、class B:public A virtual D、class B:public virtual A 11.下列语句中错误的是( ) A、int *p=new int(100); B、int *p=new int[100];
6、 C、int *p=new int; D、int *p=new int[40](0); 12. 不能作为函数重载判断依据的是:( ) A、参数个数 B、参数类型 C、函数名字 D、返回类型 13. 对于类定义 class A{ public: virtual void func1( ){ } void func2( ){ } }; class B:public A{ public: vo
7、id func1( ){cout<<〃class B func 1〃< 8、数据,可以使用__________________。
A、常数成员变量 B、私有数据成员
C、静态数据成员 D、 以上都是
15. 下面函数模板定义中不正确的是( )
A、template 9、template 10、性
3. 含有纯虚函数的类为__________,为克服多重继承的二义性,用__________声明的基类称为虚基类
4.当建立一个新对象时,程序自动调用_________________函数
5.C++标准库中的异常层次的根类为__________________类,MFC类库中绝大多数类都来源自根类___________
6.面向程序设计的特性为:抽象性、______________、_______________、多态性
三、程序阅读题(共30分)
1. (5分)写出下列程序运行后的结果
class test{
private:
int num;
public:
11、
test();
~test();
};
test::test(){num=0;}
test::~test(){cout<<”deructor is active” 12、
char c;
public:
BASE(char n):c(n){}
virtual ~BASE(){cout< 13、输入0和!时,给出下列程序运行的结果
#include 14、 #include 15、s C
{
public:
C()
{cout<<”constructor class C”;}
}
Class D
{
public:
D()
{cout<<”constructor class D”;}
}
Class E:public A,virtual public B,public C
{
D d;
E()
{
cout<<”constructor class E”;
}
void main()
{ E e;
}
5. (8分) 写出下列程序运行的结果 16、
#include 17、}
class SON:public FATHER{
public:
void answer()
{cout<<"I am son\n";
return;
}
}
int main()
{ FATHER father;
DAUGHTER daughter;
SON son;
FATHER *who;
who=&father;
who->answer();
who=&daughter;
w 18、ho->answer();
who=&son;
who->answer();
return 0;
}
四、程序填空题(共21分,每空3分)
1.class A{
int * a;
public:
A(int aa=0) {
________(1)________//用aa初始化a所指向的动态对象
}
~A(){_delete a_;}//释放动态存储空间
};
2.
#include 19、td;
class myclass
{
int x,y;
public:
myclass(int vx,int vy);
________________(2)_______________
________________(3)_______________
};
myclass::myclass(int vx,int vy)
{
x=vx;
y=vy;
}
int sum(myclass c1)
{
return c1.x+c1.y;
}
void print(myclass c1)
{
cout<<"x="< 20、"y="< 21、………O……………O
};
class B_____(6)_______
{
public:
B(const char*n)_____(7)_______{}
void PrintName( ) {cout<<”name:”< 22、tarea()函数计算对象的面积,getperim()函数计算对象的周长。(对象的数据通过构造函数初始化)
4
绍兴文理学院 2011 学年 01学期
信计 专业 09 级《面向对象程序设计)》期末试卷(A)
参考答案及评分标准
一、选择(共15 分,每小题 1分)
BADAD CDABB DDCCA
二、填空(共 20 分,每空 2 分)
1.私有 2 动态, 静态 3.抽象类, virtual 4. 构造 5 23、exception,CObject
6.封装性,封闭性
三、程序阅读 (共30分)
1. exiting main
deructor is active
deructor is active
deructor is active (5分)
2.XY (5分) 3. 输入为 0
程序结束 (6分)
4. constructor class B
constructor class A
constructor class C
constructor class D
constructor class E (6分)
5. I am 24、 father
I am daughter
I am son (8分)
四、程序填空(共21分,每空2分)
(1)a=_new int(aa)
(2)Myclass(int xx){x=xx;} (3) GetNum(){return x;}
(4). const char *n (5)strcpy(name,n);
(6)public A或:protected A (7)A(n)
五、程序设计题(共14分)
#include 25、loat getarea()=0;
virtual float getpreim()=0;
}; (3分)
class rectangle:public shape
{
private:
float h,w;
public:
rectangle(float hh=1.folat ww=1)
{
h=hh;
w=ww;
}
float getarea() { return h*w;}
float getprim() {return 2*(h+w);}
}; (6分)
class 26、 circle:public shape
{
private:
float radius;
public:
circle(float r=1) {radius=r;}
float gerarea() {return radius*radius*3.14;}
float gerprim() {return 2*3.14*radius;}
}; (9分)
void main()
{
shape *s[3];
s[1]=new rectangle(2,4);
s[2]=new circle(5) (11分)
for(int i=1;i<3;i++)
{
if(i==1)
cout<<”矩形面积:“;
else
cout<<”圆面积:”
cout<getarea()<<’\t’;
if(i==1)
cout<<”矩形周长:”
else
cout<<”圆周长:”
cout<getprim()<<’\t’;
cout<






