问答题 使用VC6打开 下的源程序文件modi3.cpp,其中定义了用于表示雇员的Employee类,但类Employee的定义并不完整。请按要求完成下列操作,将类CEmployee的定义补充完成。
(1)定义私有数据成员name、street、city、zipcode和age分别用于表示姓名、街道、城市、邮编、年龄,除年龄是整型外其余都是char型的数据。请在注释//********1********之后添加适当的语句。
(2)完成默认构造函数CEmployee的定义,使其把参数传递给私有数据成员name、street、city、zipcode和age。请在注释//********2********之后添加适当的语句。
(3)完成成员函数alterName(char *newName)的定义。请在注释//********3********料料之后添加适当的语句。
(4)完成成员函数IsEqual(char *ename)的定义,实现当name相等时返回真,否则为假的功能,请在注释//********4********之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include <iostream.h>
#include <string.h>
#define MAXLEN 20
class CEmployee
{
private:
//********1********
int age;
public:
CEmployee (char *newName, char *newStreet,char *newCt, char *newZp, int newAge);
void alterName(char *newName);
void display();
bool IsEqual(char *ename);
};
CEmployee::CEmployee (char *newName,char *newStreet, char *newCt, char *newZp, int newAge)
{
//********2********
age=newAge;
}
voidCEmployee::alterName (char *newName)
{
//********3********
}
bool CEmployee::IsEqual (char *ename)
{
//********4********
}
void CEmployee::display ()
{
cout < < name < < " " < < street < < " ";
cout < < city < < " " < < zipcode < < " " < < age < < endl;
}
void main (void)
{
CEmployee employee[4]=
{
CEmployee("李伟","兴荣路213号", "兰州", "413412",21),
CEmployee("张星","南山街157号", "贵州", "534670",30),
CEmployee("赵曦","北大街108号", "深圳", 412440",43),
CEmployee("刘兰","南山街330号", "北", 670893",17),
};
for(int i=0;i<4;i++)
employee[i].display();
cout < < "/n 修改"张星"的名字为"刘新"/n" < < endl;
for (int j=0;j<4;j++)
{
if (employee [j].IsEqual("张星"))
{
employee[j].
alterName ("刘新");
employee[j].display();
break;
}
}
}
【正确答案】
【答案解析】(1)添加语句:char name[MAXLEN],street [MAXLEN],city[MAXLEN],zipcode[MAXLEN];
(2)添加语句:strcpy(name,newName); strcpy(street,newStreet);strcpy(city,newCt); strcpy(Zipcode,newZp);
(3)添加语句:Strcpy(name,newName);
(4)添加语句:return strcmp(name,ename)==0;
答案考生文件夹 [解析] 程序中定义了一个表示雇员的类CEmployee,该类定义了私有数据成员name、street、city、zipcode和age分别用于表示姓名、街道、城市、邮编、年龄,同时定义了四个函数包括构造函数以及三个成员函数,分别实现更改雇员姓名,判断雇员姓名以及显示雇员信息功能。
(1)第1个标识下要求补充类CEmployee的私有数据成员name、street、city、zipcode和age的定义,分别用于表示姓名、街道、城市、邮编、年龄,除年龄是整型外其余都是char型的数据,由主函数内的对象数组可知,name、street、city、zipcode均为字符数组,故第1个标识下应添加“char name[MAXLEN], street[MAXLEN], city[MAXLEN], zipcode[MAXLEN];”。
(2)构造函数完成成员变量的初始化,这里需要给name、street、city、zipcode赋初值,可利用字符串拷贝函数将参数字符串拷贝到成员变量中,第2个标识下应添加“strcpy(name,newName);strcpy(street,newStreet);strcpy(city, newCt);strcpy(zipcode,newZp);”。
(3)函数alterName(char *newName)是改变成员变量name的值,即将参数拷贝给name,可利用字符串拷贝函数strcpy()完成拷贝任务,故第3个标识下应添加“strcpy(name, newName);”。
(4)IsEqual(char *ename)函数是比较name成员变量和参数newName是否相同,可使用字符串比较函数strcmp(),第4个标识下应添加“return strcmp(name, ename)==0;”。