请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,此工程中包含一个源程序文件proj3.cpp,其中定义了用于表示日期的类Date、表示人员的类Person和表示职员的类Staff;程序应当显示: 张小丽1234567890123

admin2015-06-27  41

问题 请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,此工程中包含一个源程序文件proj3.cpp,其中定义了用于表示日期的类Date、表示人员的类Person和表示职员的类Staff;程序应当显示:
张小丽123456789012345
但程序中有缺失部分,请按照以下提示,把缺失部分补充完整:
(1)在“//**1******found****”的下方是构造函数的定义中的一个语句,它用参数提供的身份证号id_card_no对数据成员idcardno进行初始化。
(2)在“//**2******found****”的下方是构造函数定义的一个组成部分,其作用是利用参数表中的前几个参数对基类Person进行初始化。
(3)在“//**3******found****”的下方定义了一个Staff对象,其中:
身份证号:123456789012345
姓名:张三
出生日期:1979年5月10日
性别:女
工作部门:人事部
工资:1234.56元
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“****found****”。填写的内容必须在一条语句中完成,否则评分将产生错误。
//proj3.cpp
#include
usingnamespacestd;
classDate
{
public:
intyear;
intmonth;
intday;
Date():year(0),month(0),day《0){}
Date(inty,intm,intd):year(y),
month(m),day(d){}
};
classPerson
{
charidcardno[16];//身份证号
charname[20];//姓名
Datebirthdate;//出生日期
boolismale;//性别:true为男,false为女public:
Person(constchar*pid,constchar*pname,Datepdate,boolpmale);
constchar*getIDCardNO()const{
returnidcardno;}
constchar*getName()const{returnname;}
voidrename(constchar*newname);
DategetBirthDate()const{returnbirthdate;}
boolisMale()const{returnismale;}
};
classStaff:publicPerson
{
chardepartment[20];//工作部门
doublesalary;//工资
public:
Staff(constchar*idcardno,
constchar*p_name,Datebirth_date,
booliSmale,
constchar*dept,doublesal);
constchar*getDepartment()const{
returndepartment;}
voidsetDepartment(constchar*d);
doublegetSalary()const{return
salary;}
voidsetSalary(doubleS)fsalary=s;}
};
Person::Person(constchar*idcard_no,constchar*p_name,Datebirth_date,boolismale)
:birthdate(birthdate),ismale(is
male)
{
//**1************found**********
________;
strcpy(name,p_name);
}
voidPerson::rename(constchar*new
_name){strcpy(name,new_name);}
Staff::Stafffconstchar*idcard
no,constchar*p_name,Datebirth_
date,boolismale,
//**2************found**********
constchar*dept,doublesal):________
{
setDepartment(dept);
setSalary(sal);
}
voidStaff::setDepartment(const
char*dept)
{
strcpy(department,dept);
}
intmain()
{
//**3************found**********
________;
Zhangsan.rename("张小丽");
cout<return0;
}

选项

答案(1) strcpy(idcardno,id_card_no) (2) Person(id_card_no,p_name,birth_date,is_male) (3) Staff Zhangsan("123456789012345","张三",Date(1979,5,10),false,"人事部",1234.56)

解析 (1)主要考查考生对strcpy函数的掌握,复制字符串要使用strcpy函数,其格式为:strcpy(字符串1,字符串2);。
(2)主要考查考生对构造函数的掌握,派生类的构造函数要使用成员列表初始化先调用基类的构造函数。
(3)主要考查考生对构造函数的掌握,由题目要求可知要针对象初始化为:Zhangsan("123456789012345","张三",Date(1979,5,10),false,"人事部",1234.56);。
转载请注明原文地址:https://jikaoti.com/ti/jHXiFFFM
0

最新回复(0)