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

admin2015-06-27  21

问题 请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程pmj3,其中声明的是一个人员信息类,补充编制程序,使其功能完整。在main函数中给出了一组测试数据,此种情况下程序的输出应该是:Zhang20Tsinghua。
注意:只能在函数address_change的“//**********333**********”和“//**********666**********”之间填入若干语句,不要改动程序中的其他内容。
程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//proj3.h
#include
#include
usingnamespacestd;
classPerson{
charname[20];
intage;
char*address;
public:
Person(){age=0;address=0;}
voidname_change(char*_name);
//名字修改函数
voidage_change(int_age);
//年龄修改函数
voidaddress_change(char*_add);
//地址修改函数
voidinfodisplay();
//人员信息显示
~Person();
//析构函数
};
voidwriteToFile(constchar*path);
proj3.cpp
#include
#include
#include"proj3.h"
usingnamespacestd;
voidPerson::namechange(char*_name)
{
strcpy(name,_name);
}
voidPerson::age_change(int_age)
{
age=_age;
}
voidPerson::address_change(char*_add)
{
if(address!=NULL)delete[]ad.
dress;
//********333********
//********666********
}
voidPerson::info_display(){
cout<<if(address!=NULL)
cout<cout<}
Person::~Person(){
if(address!=NULL)
delete[]address;
}
voidmain()
{
Personp1;
p1.name_change("Zhang");
p1.age_change(20);
p1.address_change("TsinghuaUniversity");
p1.address_change("Tsinghua");
p1.infodisplay();
writeToFile("");
}

选项

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

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

最新回复(0)