itgle.com

使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示雇员的Employee类,但类Em-ployee的定义并不完整。请按要求完成下列操作,将类TC的定义补充完整。 (1)定义私有数据成员name、street、city、zipcode和age分别用于表示姓名、街道、城市、邮编、年龄,除年龄是整型外,其余都是char型的数据。请在注释1之后添加适当的语句。 (2)完成默认构造函数TC的定义,使其把参数传递给私有数据成员name、streel、city、zipcode和age。请在注释

题目

使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示雇员的Employee类,但类Em-ployee的定义并不完整。请按要求完成下列操作,将类TC的定义补充完整。 (1)定义私有数据成员name、street、city、zipcode和age分别用于表示姓名、街道、城市、邮编、年龄,除年龄是整型外,其余都是char型的数据。请在注释1之后添加适当的语句。 (2)完成默认构造函数TC的定义,使其把参数传递给私有数据成员name、streel、city、zipcode和age。请在注释2之后添加适当的语句。 (3)完成成员函数aherName(char*newName)的定义。请在注释3之后添加适当的语句。 (4)完成成员函数IsEqual(char*ename)的定义,实现当name相等时返回真,否则返回假的功能。请在注释4之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 试题程序: include<iostream.h> include<string.h) defineMAXLEN20 classTC { private: //********、******** intage; public: TC(char*newName,char*newStreet,char* newCt,char*newZp,intnewAge); voidalterName(char*newName); voiddisplay(); boolIsEqual(char*ename); }; TC::TC(char*newName,char*newStreet,char* newCt,char*newZp,intnewAge) { //********2******** age=newAge; } voidTC::alterName(char*newName) { //********3******** } boolTC::IsEqual(char*ename) { //********4******** } voidTC::display() { cout<<name<<""<<street<<""; cout<<city<<""<<zipcode<<""<<age<<endl; } voidmain(void) { TCemployee[4]= { TC("张三","海淀区复兴路l号","北京","000001",18), TC("李四","海淀区复兴路2号","北京","000002",19), TC("王五","海淀区复兴路3号","北京","000003",20), TC("赵六","海淀区复兴路4号","北京","000004",21) }; for(inti=0;i<4;i++) employee[i].display(); cout<<"\n修改\"李四\"的名字为\"李小四\"\n"<<endl; for(intj=0;j<4;j++) { if(employee[j].IsEqual("李四")) { employee[j].aherName("李小四"); employee[j].display(); break; } } }


相似考题
更多“使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示雇员的Employee类,但类Em-plo ”相关问题
  • 第1题:

    使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公有派生。 (1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//********1********”之后添加适当的语句。 (2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传人。请在注释“//********2********”之后添加适当的语句。 (3)定义类A2的构造函数,该构造函数有3个整型的参数x,y和z,在构造函数中请将x赋值给数据成员C,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//********3********”之后添加适当的语句。 (4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员C的值,上述3个值在输出时以空格隔开。请在注释“//********4********”之后添加适当的语句。 程序输出结果如下: 7 3 738 注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。 试题程序: include<iostream.h> classA { inta; public: //********1******** intgeta{returna;} }; classA1:publicA { intb; public: //********2******** intgetb{returnb;} }; classA2:publicA1 { intC; public: //****,****3******** voidshow { //********4******** } }; voidmain { A2a(8.3.7): cout<<a.geta<<endl: cout<<a.getb<<endl: a.show; }


    正确答案:
    (1)“A(intx){a=x;}”。
    (2)“A1(intx,inty):A(y){b=x;}”。
    (3)“A2(intx,inty,intz):A1(y,z){c=x;}”。
    (4)“cout<<geta<<""<<getb<<""<<c<<endl;”。
    【解 析】本题第1处要求定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a,构造函数没有返回值类型,所以应填 “A(intx){a=x;}”。第2处第3处根据继承中对象的初始化语法规则可知。第4处要求调用基类成员函数,由于都是公有继承,ge-ta、 getb都是自身类的公有函数,所以根据继承规则,在对象A2中,依然是公有的可以通过对象A2直接调用。

  • 第2题:

    使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。 (1)定义类的公有数据成员函数N0、Name[32],其中N0是int型的数据,Name[32]为字符型。请在注释1后添加适当的语句。 (2)完成函数Set的定义,分别设置N0和Name的值,请在注释2后添加适当的语句。 (3)完成函数print,请在注释3后添加适当的语句,输出结果如下: N0=12345 Name=HelloWorld! (4)添加默认构造函数,设置N0为0,Name为空,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: include<iostream.h> classTC { public: //********1******** //********2******** { No=no; for(inti=0;strName[i]!=0;i++) { Name[i]=strName[i]; Name[i+1]=0; } } voidprint() { //********3******** } TC() { //********4********) }; intmain() { TCstu: stu.Set(12345,"HelloWorld!");stu.print(); return0; }


    正确答案:
    (1)应添加“intNo;charName[32];”。
    (2)应添加“voidSet(intno,char*strName)”。
    (3)应添加“cout<<"No="<<No<<endl<<"Name="<<Name<<endl;”。
    (4)应添加“No=Name[0]=0;”。
    【解析】第1处要求“定义类的公有数据成员函数N0、Name[32],其中N0为int型,Name[32]为字符型”。在已有程序中类定义的public区域,定义变量N0,Name[32],即在第1处添加语句“intN0;charName[32];”。第2处要求“完成函数Set的定义,分别设置No和Name的值”。在第2处说明函数Set的语句中,应该包括变量no,strName的定义,然后在函数中将其值赋值给N0。Name,即添加定义语句“voidSet(intno,char*strName)”。第3处要求“完成函数print”,根据输出结果,知道输出的是No和Name的值,所以这里补全“cout<<"No="<<No<<endl<<"Name="<<Name<<endl;”。第4处要求“添加缺省构造函数,设置No为0,Name为空”,即在TC构造函数中补充赋值语句“No=Name[0]=0;”。

  • 第3题:

    使用VC6打开考生文件夹下的工程test18_3,此工程包含一个源程序文件test18_3.cpp,其中定义了用于表示雇员的类 Employee,但类Employee的定义并不完整。请按要求完成下列操作,将类Employee的定义补充完整。

    (1)补充类Employee的构造函数,请使用字符串函数将数据成员name,address,city,province和zipcode分别初始化为参数*nm,*addr,*city,*prov和*zip的值。请在注释“//**1**”之后添加适当的语句;

    (2)完成类Employee的成员函数ChangeName(char * newName)的定义,将newName指向的内容赋值给数据成员name,请在注释“//**2**”之后添加适当的语句;

    (3)完成类Employee的成员函数Display()的定义,先使用指针buffer动态申请一个char型的200单位大小的空间,然后使用字符串函数将数据成员name和address依次复制其中,最后返回该指针buffer,将请在注释“//**3**”之后添加适当的语句。输出结果如下:

    王东建国路大街105号

    注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

    源程序文件test18_3.cpp清单如下:

    include <iostream.h>

    include <string.h>

    class Employee{

    protected:

    char name[20];

    char address[100];

    char city[20];

    char province[20];

    char zipcode[10];

    public:

    Employee(char *nm, char *addr,char *city, char *prov, char *zip);

    void ChangeName(char *newName);

    char *Display();

    };

    Employee::Employee(char *nm, char *adr, char *cit, char *prov, char *zip)

    {

    //**1**

    strcpy(city, cit);

    strcpy(province,prov);

    strcpy(zipcode,zip);

    }

    void Employee::ChangeName(char * newName)

    {

    //**2**

    }

    char *Employee::Display()

    {

    //**3**

    strcat(buffer, address);

    return buffer;

    }

    void main()

    {

    Employee emp("李华","建国路大街105号","石家庄","河北","103400");

    emp. ChangeName ("王东");

    cout<<emp.Display()<<end1;

    }


    正确答案:(1) strcpy(namenm); strcpy(addressadr); (2) strcpy(namenewName); (3) char *buffer=new char[200]; strcpy(buffername);
    (1) strcpy(name,nm); strcpy(address,adr); (2) strcpy(name,newName); (3) char *buffer=new char[200]; strcpy(buffer,name); 解析:本题主要考查考生对于类的定义和字符串函数的灵活运用。算法如下:先使用strchr函数将名字中的空格找到,然后替换成为字符串结束标志,接着使用strcpy函数将被切断的字符串后面的部分复制到一个新的字符串newName中,再使用strcat函数连接“,”和原字符串的前半部分。

  • 第4题:

    使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示矩形的CRect类,但类CRect的定义并不完整。请按要求完成下列操作,将类CRect的定义补充完整。 (1)定义私有数据成员leftPoint、topPoint、rightPoint、bottomPoint,分别用于表示矩形左上角及右下角的点的坐标,它们都是double型的数据。请在注释1之后添加适当的语句。 (2)完成默认构造函数CRect的定义,指定默认实参为0,它们都是double型的数据。请在注释2之后添加适当的语句。 (3)定义函数体为空的析构函数。请在注释3之后添加适当的语句。 (4)在main函数中定义GReet类的实例rect2,并把re- ct1的值赋给rect2。请在注释4之后添加适当的语句。 注意:除在指定位置添加语句之外,不要改动程序中的其他内容。 试题程序: include<iostream.h> classCRect { private: //********1******** public: //********2******** //********3******** voidSetPoints(double,double,double,double); voidSetLeftPoint(doublem){leftPoint=m;} voidSetRightPoint(doublem){rightPoint=m;} voidSetTopPoint(doublem){topPoint=m;} voidSetBottomPoint(doublem){bottomPoint=m;} voidDisplay(); }; CReet::CRect(double1,doublet,doubler,doubleb) { leftPoint=1;topPoint=t; rightPoint=r;bottomPoint=b; } voidCRect::Setpoints(double1,doublet,doubler,doubleb) { leftPoint=1;topPoint=t; rightPoint=n;bottomPoint=b; } voidCRect::Display() { cout<<"left-toppointis("<<leftPoint<<","<<top- Point<<")"<<\n; cout<<"right-bottompointis("<<rightPoint<<"," <<bottomPoint<<")"<<\n; } voidmain() { CRectrect0; rect0.Display(); rect0.SetPoints(20,20.6,30,40); rect0.Display(); CRectrectl(0,0,150,150); rect1.SetTopPoint(10.5); rect1.SetLeftPoint(10.5); //********4******** rect2.Display( );}


    正确答案:
    (1)应添加“doubleleftPoint,topPoint,rightPoint,hot-tomPoint;”。
    (2)应添加“CReet(doubleleftPoint=0,doubletopPoint=0,doublerightPoint=0,doublebottomPoint=O);”。
    (3)应添加“~CReet{}”。
    (4)应添加“CReetrect2(rect1);”。
    【解析】本题在第1处完成私有数据成员leftPoint、top-Point、rightPoint、bottomPoint的定义,均为double型的变量,故第1处应添加“doubleleftPoint,topPoint,rightPoint,bottomPoint;”。构造函数完成成员变量的初始化,类CRect的默认构造函数初始化double型私有数据成员leftPoint、topPoint、rightPoint、bottomPoint为0。故第2处应添加“CRect(doubleleftPoint=0,doubletopPoint=0,doublerightPoint=0,doublebottomPoint=0);”。析构函数名和类名一致,并在前面加“~”以和构造函数区别,该析构幽数体为空,故第3处应添加“~CRect{}”,虽然该函数体为空,但“{}”必须保留。主函数中类CRect的对象rect2是通过复制构造函数将rect1的值赋值给它实现初始化的.而reet1的初始化直接调用自定义构造函数,第4处应添加“CReetrect2(rect1);”。

  • 第5题:

    使用VC6打开考生文件夹下的工程test4_1,此工程包含一个源程序文件test4_1.cpp,但该程序在类的定义中存在问题,请改正类定义中的错误,使程序的输出结果如下:

    a=3 b=13

    a=5 b=13

    注意:请勿修改主函数main中的任何内容。

    源程序文件rcst4_1.cpp清单如下:

    include<iostream.h>

    class T

    {

    public:

    /*********found***+******/

    T(int x){a=x; b+=x;)

    /+********found**********/

    void display(T c)

    { cout<<"a="<<c.a<<"\t"<<"b="<<c.b<<endl;)

    private:

    const int a;

    static int b;

    };

    /**********found*********/

    int b=5;

    void main()

    {

    T A(3),B(5);

    T::display(A);

    T::display(B);

    }


    正确答案:(1)错误:T(int x){a=x;b+=x;) 正确:T(int x):a(x){b+=x;) (2)错误:void display(T c) 正确:static void display(T c) (3)错误:int b=5; 正确:int T::b=5;
    (1)错误:T(int x){a=x;b+=x;) 正确:T(int x):a(x){b+=x;) (2)错误:void display(T c) 正确:static void display(T c) (3)错误:int b=5; 正确:int T::b=5; 解析:(1)主要考查考生对常量数据成员初始化方法的掌握,常量数据成员的初始化只能通过构造函数的成员初始化列表进行,常量数据成员使用关键字const修饰;
    (2)主要考查考生对静态成员函数的理解,由主函数中的T::display(A)与T::display(B)可知display应定义为静态成员函数,因为调用类的静态成员必须使用作用域“::”符号;
    (3)主要考查考生对静态数据成员初始化方法的掌握,由static int b可知b为静态成员数据,其初始化必须在类外使用作用域运算符(::)限定它所属的类。