使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示雇员的Employee类,但类Employee的定义并不完整。请按要求完成下列操作,将类CEmployee的定义补充完成。 (1)定义私有数据成员name、street、c

admin2015-05-30  22

问题 使用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********之后添加适当的语句。
    注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
    1    #include
    2    #include
    3    #define  MAXLEN  2 0
    4    class CEmployee
    5   {
    6     private:
    7    //********1********
    8
    9    int age ;
    10    public:
    11    CEmployee  (char*newName,
    char  *newStreet,char  *newCt,
    char *newZp,int newAge);
    12    void alterName(char*newName);
    13    void display();
    14    bool IsEqual(char*ename);
    15    };
    16  CEmployee::CEmployee    (char
    *newName,char  *newStreet,char
    *newCt,char*newZp,int newAge)
    17    {
    18    //********2********
    19
    20    age=newAge;
    21    }
    22  void CEmployee::alterName(char *newName)
    23    {
    24    //********3********
    25
    26  }
    27  bool CEmployee::IsEqual  (char *ename)
    28  {
    29    //********4********
    30
    31   }
    32   void CEmployee::display()
    33   {
    34    cout  <<  name  <<  "    "  << street<<" ";
    35    cout  <<  city    <<    "    "<    36  )
    37  void mein(void)
    38  {
    39    CEmployee employee[4]=
    4o    {
    41    CEmployee("李伟","兴荣路213号","兰州","413412",21),   
    42    CEmployee("张星","南山街157号","贵州","534670",30),
    43    CEmployee("赵曦","北大街108号","深圳","41244 0",43),
    44    CEmployee("刘兰","南大街330号","北京","670893",17),
    45    };
    46
    47    for(int i=0;i<4;i++)
    48    employee.display();
    49    cout<<"\n修改\"张星\"的名字为\"刘新\"\n"<    50    for(int j=0 ; j<4 ; j++)
    51    {
    52    if(employee[j].IsEqual ("张星"))
    53    {
    54    empioyee[j].alterName("刘新");
    55
    employee[j].display();
    56    break;
    57    }
    58    }
    59  }  

选项

答案(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,可利用字符串拷贝函数strcpy0完成拷贝任务,故第3个标识下应添加“strcpy(name,newName);990
    (4)IsEqual(char*ename)函数是比较name成员变量和参数newName是否相同,可使用字符串比较函数strcmp(),第4个标识下应添加“return strcmp(name,ename)==0;”。
转载请注明原文地址:https://kaotiyun.com/show/pPNp777K
0

最新回复(0)