};
intmain()
{
A*p=newB;
p->Show();
deletep;
return0;
}
五、编程题(本大题共2小题,第1小题12分,第2小题16分,共28分)
1.试使用函数模板实现求一个数组各元素的平均值,要求编写测试程序。
函数模板声明如下:
template
TAverage(Ta[],intn);//求数组a各元素之平均值
2.定义Person(人)类,由Person分别派生出Teacher(教师)类和Cadre(干部)类,再由Teacher(教师)类和Cadre(干部)类采用多重继承方式派生出新类TeacherCadre(教师兼干部)类,各类之间的继承关系如下图所示。
要求:
(1)在Person类中包含的数据成员有姓名(name)、年龄(age)、性别(sex)。
在Teacher类还包含数据成员职称(title),在Cadre类中还包含数据成员职务(post),在TeacherCadre类中还包含数据成员工资(wages)。
(2)在类体中定义成员函数。
(3)每个类都有构造函数与显示信息函数(Show)。
C++面向对象程序设计模拟试题三参考答安全
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.C)2.D)3.A)4.B)5.D)
6.A)7.C)8.C)9.C)10.A)
二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。
错填或不填均无分。
1.参考答案:
virtualintfun()=0;
2.参考答案:
static
3.参考答案:
CTest
4.参考答案:
构造函数
5.参考答案:
private或私有
三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。
1.参考答案:
A()
A()
~A()
end
~A()
2.参考答案:
82345
3.参考答案:
A
B
A
B
4.参考答案:
15
1
2
1.1
2.2
5.参考答案:
1
8
6
13
6.参考答案:
2
8
0
end
四、完成程序填题(本大题共4个小题,每小题3分,共12分)下面程序都留有空白,请将程序补充完整。
1.参考答案:
[1]static
2.参考答案:
[2]a+i.a或this->a+i.a
3.参考答案:
[3]char*
4.参考答案:
[4]virtual
五、编程题(本大题共2小题,第1小题12分,第2小题16分,共28分)
1.参考程序:
#include
usingnamespacestd;
template
TAverage(Ta[],intn)
{
Ts=0;
for(inti=0;is=s+a[i];
returns/n;
}
intmain()
{
doublea[]={11.8,2,3,4,5.5,6.8,7,8,9};
cout<return0;
}
2.参考程序:
#include
usingnamespacestd;
classPerson
{
protected:
charname[18];
intage;
charsex[3];
public:
Person(charnm[],intag,charsx[])
{
strcpy(name,nm);
age=ag;
strcpy(sex,sx);
}
voidShow()const
{
cout<<"姓名:
"<cout<<"年龄:
"<cout<<"性别:
"<}
};
classTeacher:
virtualpublicPerson
{
protected:
chartitle[18];
public:
Teacher(charnm[],intag,charsx[],chartl[]):
Person(nm,ag,sx)
{strcpy(title,tl);}
voidShow()const
{
Person:
:
Show();
cout<<"职称:
"<
cout<}
};
classCadre:
virtualpublicPerson
{
protected:
charpost[18];
public:
Cadre(charnm[],intag,charsx[],charpt[]):
Person(nm,ag,sx)
{strcpy(post,pt);}
voidShow()const
{
Person:
:
Show();
cout<<"职务:
"<cout<}
};
classTeacherCadre:
publicTeacher,publicCadre
{
protected:
doublewages;
public:
TeacherCadre(charnm[],intag,charsx[],chartl[],charpt[],doublewg)
:
Person(nm,ag,sx),Teacher(nm,ag,sx,tl),Cadre(nm,ag,sx,pt)
{wages=wg;}
voidShow()const
{
Person:
:
Show();
cout<<"职称:
"<
cout<<"职务:
"<cout<<"工资:
"<cout<}
};
intmain()
{
TeacherobjTeacher("文冠杰",48,"男","教授");
CadreobjCadre("周杰",56,"男","院长");
TeacherCadreobjTeacherCadre("李靖",50,"女","教授","院长",6890);
objTeacher.Show();
objCadre.Show();
objTeacherCadre.Show();
return0;
}