问答题 请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程proj3,其中声明的是一个人员信息类,补充编制程序,使其功能完整。在main函数中给出了一组测试数据,此种情况下程序的输出应该是:Zhang 20 TsinghHa。 注意:只能在函数address_change的“//********333*********”和“//**********666********”之间填入若干语句,不要改动程序中的其他内容。 程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。//proj3.h#include<iostream>#include<string>using namespace std;class Person{ char name[20]; int age; char* address; public: Person(){age=0;address=0;) void name_change(char*_name);//名字修改函数 void age_change(int_age);//年龄修改函数 void address_change(char*_add);//地址修改函数 void info_display();//人员信息显示 一Person();//析构函数};void writeToFile(const char*path);proj3.cpp#include<iostream>#include<string>#include”proj 3.h”using namespace std;void Person::name change(char*_name){ strcpy(name,_name);}void Person::age_change(int_age){age=_age;}void Person::address_change(char*_add){ if(address!=NULL)delete[]ad-dress;//********333********//********666********}void Person::info_display(){ cout<<name<<’\t’ <<age<<’/t’; if(address!=NULL) cout<<address<<endl; cout<<endl; } Person::一Person(){ if(addresS!=NULL) delete[]address; } void main() { Person p1; p1.name change(”Zhang”); p1.age_change(20); p1.address_change(”Tsinghua Uni-versity”); p1.address_change(”Tsinghua”); p1.info_display(); writeToFile(””); }
【正确答案】正确答案:address=new char[strlen(add)+ 1]; //给类成员变量动态分配空间 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中。