使用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

题目

使用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; }


相似考题
更多“使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的 ”相关问题
  • 第1题:

    使用VC6打开考生文件夹下的工程MyProj12。此工程包含一个源程序文件MyMain12.cpp。程序中定义了两个类Base和Derived,但类的定义并不完整。

    请按要求完成下列操作,将类的定义补充完成:

    ①类Derived是基类Base公有派生来的。请在注释“//* *1* *”之后添加适当的语句。

    ②完成构造函数Derived(int x)定义,采用初始化列表的方式使基类Base私有成员a初始化为x,类Derived的私有成员b初始化为x+1。请在注释“//* *2* *”之后添加适当的语句。

    ③完成类Derived的成员函数show()的类体外的定义。函数show()中要输出基类数据成员a的值,然后要输出私有成员b的值。请在注释“//* *3* *之后添加适当的语句。

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

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

    //MyMain12.cpp

    include<iostream>

    using namespace std;

    class Base

    {

    public:

    int a;

    Base(int i)

    {

    a=i;

    }

    };

    //* * * 1 * * *

    {

    private:

    int b;

    public:

    //* * * 2 * * *

    void show();

    };

    void Derived::show()

    {

    //* * * 3 * * *

    }

    int main()

    {

    Derived d(1);

    d.show();

    return 0;

    }


    正确答案:

  • 第2题:

    使用VC6打开考生文件夹下的工程MyProj10。此工程包含一个源程序文件MyMain10.cpp。程序中定义了两个类Base和Derived,但类的定义并不完整。

    请按要求完成下列操作,将类的定义补充完成:

    ①类Derived是基类Base公有派生来的。请在注释“//* *1* *”之后添加适当的语句。

    ②完成构造函数Derived(int i)定义,采用初始化列表的方式使基类Base私有成员a初始化为i+1,类Derived的私有成员b初始化为i。请在注释“//* *2* *”之后添加适当的语句。

    ③完成类Derived的成员函数show()的类体外的定义。函数show()中要显式调用基类的show()函数,然后要输出私有成员b的值。请在注释“//* *3**”之后添加适当的语句。

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

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

    //MyMain10.cpp

    include<iostream>

    using namespace std;

    class Base

    {

    public:

    Base(int x)

    {

    a=x

    }

    void show()

    {

    cout<<a;

    }

    private:

    int a;

    };

    //* * *1* * *

    {

    public:

    //* * * 2 * * *

    void show();

    private:

    int b;

    };

    void Derived :: show()

    {

    //* * * 3 * * *

    }

    int main()

    {

    Derived d(1), *pb;

    pb=&d;

    pb->show();

    return 0;

    }


    正确答案:

  • 第3题:

    使用VC++6.0打开考生文件夹下的源程序文件3.cpp。程序通过继承关系,实现对姓名的控制。类TC1实现对名字访问的接口,TC2实现对名字的设置和输出。

    程序输出为

    TC2Name

    May

    其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。

    (1)在类TCl中定义接口函数GetName为纯虚函数。请在注释1后添加适当的语句。

    (2)函数GetName2用于获得名字的缓存,但只获得允许读操作这个缓存,请在注释2后添加适当的语句。

    (3)实现TC2的构造函数,请在注释3后添加适当的语句。

    (4)完成TC2的构造函数,实现对名字的处理。请在注释4后添加适当的语句。

    注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。

    试题程序:

    include<iostream.h>

    classTC1

    {

    public:

    //********1********

    };

    classTC2:publicTCl

    {

    public:

    voidGetName

    {

    cout<<"TC2Name"<<endl;

    }

    //********2********

    {

    returnm_str;

    }

    //********3********

    {

    inti:

    for(i=0;str[i]!=0;i++)

    m_str[i]=str[i];

    //********4********

    }

    private:

    charm_str[32];

    };

    voidmain

    {

    TCl*P;

    TC20bj1("May");

    p=&objl;

    p->GetName;

    cout<<obj1.GetNamc2<<endl;

    return;

    }


    正确答案:

    (1)应添加“virtualvoidGetNamt!=0;”。

    (2)应添加“constchar*GetName2”。

    (3)应添加“TC2(char*str)”。

    (4)应添加“m_str[i]=0;”。

    【解析】本题第1处要求“在类TC1中定义接口函数GetName,为纯虚函数”。在C++中,在基类中用virtual声明成员函数为虚函数。纯虚函数是在声明虚函数时被“初始化”为0的函数,即“virtualvoidGetName=0;”。第2处要求“函数GetName2实现获得名字的缓存,但只获得读允许操作这个缓存”。只能引用数据成员,而不能修改,所以使用常成员函数,其一般形式为“const函数类型函数名”,即“constchar*GetName2”。第3处要求“实现TC2的构造函数”。TC2的构造函数与类TC2的名称应该相同,而且第3处的大括弧中是对字符数组str的操作,所以类TC2的构造函数中的参数为str,即这里补全为“TC2(char*str)”。第4处要求“完成TC2的构造函数,实现对名字的处理”,补全类TC2的构造函数,构造函数中的名字变量str对应于类TC中的成员变量m_str,所以这里补全变量赋值操作“m_str[i]=0;”。


  • 第4题:

    使用VC++6.0打开考生文件夹下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成类的构造函数功能,请在注释1后添加适当的语句。 (2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。 (3)定义类的友元函数fun,请在注释3后添加适当的语句。 (4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: include<iostream.h> classPeople { public: //********1******** { inti; for(i=0;sUserName[i]!=0;i++) {m_UserName[i]=sUserName[i]; } //********2******** m_Old=nOld; } private: charm_UserName[32]; intm_Old; //********3******** }; voidfun(char*s,People&personl,People&person2 { //********4******** if { for(inti=0;personl.m_UserName[i]!=0;i+ +) { s[i]=personl.m_UserName[i]; s[i+1]=0; } } else { for(inti=0;person2.m_UserName[i]!=0;i+ +) {s[i]=person2.m_UserName[i]; s[i+1]=0; } } } voidmain { chars[32]; Peoplepl("abc",20); Peoplep2("def",30): fun(S,p1,p2); cout<<s<<endl: return; }


    正确答案:
    (1)应添加“People(char*sUserName,intnOld)”。
    (2)应添加“m_UserName[i]=0;”。
    (3)应添加“friendvoidfun(char*s,People&personl,People&person2);”。
    (4)将“if”补充完整为“if(personl.m_Old)person2.mOld)”。
    【解析】本题第1处要求“完成类的构造函数”。根据
    “classPeople” 语句知道People为类,所以类People的构造函数名为People,根据第1处的大括弧中的语句知道函数中的参数为数组sUserName存放姓 名,整型nOld存放年龄,所以补充构造函数定义为“People(char*sUserName,intnOtd)”。第2处要求“完成构造函数对姓名 的贼值”。第2处补全姓名赋值,即“m_UserName[i]=0;”。第3处要求“定义类的友元函数fun”。在C++中,如果在本类以外的其他地方 定义了一个函数,在类体中是用friend对该函数进行声明的,此函数称为本类的友元函数,并且能够调用本类中的成员变量。程序中的fun函数定义为 “voidfun(char*S,People&personl,People&person2)”,所以声明fun为类People的友元函数,即 这里补全“friendvoktfun(char*s,People&personl,People&person2);”。第4处要求“补充函数fun 的年龄比较”。类People中年龄的变量为m_Old,根据C++中类变量的调用格式补充第4处if语句中的条件判断语句,即“if(per- sonl.m_O1d)person2.m_Old)”。

  • 第5题:

    使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列撮作,将类的定义补充完整。

    (1)利用define定义常量TRUE为1,定义常量FALSE为0,请在注释1后添加适当的语句。

    (2)在类A2前增加A1的声明,请在注释2后添加适当的语句。

    (3)在类Cl中声明友元函数boolrune(A2&a,A1&b),请在注释3后添加适当的语句。

    (4)实现函数boolfunc(A2&obj1,Al&obj2)的功能,检查两个类的值都为TRUE,则返回TRUE,请在注释4后添加适当的语句。 注意:除在指定位置添加语句之外,不要改动程序中的其他内容。

    试题程序: include(iostream.h> //********1******** defineFALSE0 //********2******** classA2 { private: boolm_A2; friendboolfunc(A2&objl,A1&obj2); public: A2 { m_A2=FALSE。 } public:

    voidsetA2(booln) { m_A2=n; } };

    elaSSA1 { private: boolm_A1; //********3*********

    public: A1 { m_A1=TRUE; }

    public: voidsetAl(booln) { m_A1=n; } }; boolfunc(A2&objl,A1&obj2) { //********4******** return }

    intmain { A20bj0; A10bj1; cout<


    正确答案:

    【解析】#define命令一般用一个指定的标识符(即宏
    名)来代表一个字符串,其定义形式一般为“#define宏名(参数表)字符串”,因此第1处应添加“#defineTRUEl”。 类声明格式为“class<类名>;”,故第2处应添加“class
    A1;”。友元不是本类的成员函 数,在它的函数体内可以通过对象名来访问类的私有成员和保护成员。友元函数是在类声明中由关键字friend修饰的非成员函数,第3处应添加 “friendboolfune(A2&objl,Al&obj2);”。函数func返回变量m_A2和m_A1的逻辑与运算结果,因此第4处的语句应 改为“returnobj1.m_A2==TRUE&&obj2.m_A1==TRUE;”。
    (1)应添加“#defineTRUE1”。
    (2)应添加“classA1;”。
    (3)应添加“friendboolfunc(A2&objl,Al&obj2);”。
    (4)将“return”补充完整为“return objl.m_A2==TRUE&&obj2.m_A1==TRUE;”。