应用题 1. 使用VC++2010打开考生文件夹下“proj2”文件夹中的工程proj2.sln,其中定义了用于表示雇员的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 ();
    eout<<"\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;”。