问答题 使用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相等时返回真,否则为假的功能,请在注释∥********3********之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include #include #define MAXLEN 2 0 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; } void CEmployee::alterName(char *newName) { ∥********3******** } bool CEmployee::I sEqual (cha:*ename) { ∥********4******** } void CEmployee::display() { cout << name << “ ”
【正确答案】正确答案:(1)添加语句:char name[MAXLEN],street[MAXLEN],c ity[MAXLEN],z ipcode[MAXLEN]; (2)添加语句: strcpy(name, newName);strcpy(street,newStreet); strcpy(city,newct);strcpy(Zipcode,newZp); (3)添加语句:strcpy(name,newName); (4)添加语句:return strcmp(name,ename)==0 ;
【答案解析】解析:(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);strepy(zipcode,newZp);”。 (3)函数alterName(char*newName)是改变成员变量name的值,即将参数拷贝给name,可利用字符串拷贝函数strcpyO完成拷贝任务,故第3个标识下应添加“strcpy(name,newName);990 (4)IsEqual(char*ename)函数是比较name成员变量和参数newName是否相同,可使用字符串比较函数strcmp0,第4个标识下应添加“return strcmp(name,ename)==0;”。