请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程proj3,其中声明的是一个人员信息类,补充编制程序,使其功能完整。在main函数中给出了一组测试数据,此种情况下程序的输出应该是:Zhang 20 Tsinghua。 注意:只能在函数ad

admin2016-08-19  30

问题 请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程proj3,其中声明的是一个人员信息类,补充编制程序,使其功能完整。在main函数中给出了一组测试数据,此种情况下程序的输出应该是:Zhang 20 Tsinghua。
    注意:只能在函数address_change的“//********333********”和“//********666********”之间填人若干语句,不要改动程序中的其他内容。
    程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
1  //proj 3.h
2  #include
3  #include
4  using namespace std;
5  clasS Person{
6    char name[2 0];
7    int age;
8    char*address;
9   public:
10    Person(){age=0;address=0;)
11    void name_change(char*_name);
12   //名字修改函数
13    void age_change(int_age);
14  //年龄修改函数
15    void address change(char*add);
16  //地址修改函数
17    void info display();
18  //人员信息显示
19    ~Person();
20   //析构函数
21    };
22  void writeToFile(const char*path);
1   proj 3.cpp
2  #include
3  #include
4   #include"proj3.h"
5   using namespace std;
6
7  void Person::name change(char*_name)
8    {
9    strcpy(name,_name);
10    }
11  void Person::age_change(int_age)
12  {
13  age=_age;
14  }
15  void Person::address_change(char*_
16  add)
17  {
18  if(address!=NULL)delete[]ad-
19   dress;
20   //********333********
21    //********666********
22   }
23    void Pemson::info_display(){
24  cout<25    <26  if(addreSS!=NULL)
27    cout<28    cout<29  }
30  Person::~Pemson(){
31  if(addreSS!=NULL)
32    delete[]address;
33  }
34  VOid main()
35  {
36    Pemson p1;
37  p1.name_change("Zhang");
38  p1.age_change(2 0);
39  p1.address_change("Tsinghua Uni-versity");
40  p1.addresS_Change("Tsinghua");
41  p1.info display();
42  writeToFile(" ");
43  }

选项

答案1 address=new char[strlen(add)+1];//给类成员变量动态分配空间 2 strcpy(address,_add);//把字符串add复制给address

解析 函数address_change(char*_add)的功能是地址修改,也就是说通过该函数把类的地址修改为add字符串。类的私有成员address是字符指针,因此首先要给address分配空间,通过new语句来实现:address=new char[strlen(_add)+1];。接下来就是要复制字符串,使用系统函数strcpy,其用法为strcpy(参数1,参数2),将参数2的内容复制到参数1中。
转载请注明原文地址:https://kaotiyun.com/show/sZNp777K
0

最新回复(0)