问答题使用VC6打开考生文件夹下的源程序文件modi3.cpp。请完成以下部分,实现在屏幕上输出为:  TestClass3  TestClass2  这个程序需要修改的部分,请按照以下部分实现。  1.类TestClass0不能被实例化,请定义一个纯虚函数print,在注释//********1********后添加适当的语句。  2.类TestClass1私有虚继承类TestClass0,请在注释//********2********后添加适当的语句。  3.类TestClass2公有继承类TestC

题目
问答题
使用VC6打开考生文件夹下的源程序文件modi3.cpp。请完成以下部分,实现在屏幕上输出为:  TestClass3  TestClass2  这个程序需要修改的部分,请按照以下部分实现。  1.类TestClass0不能被实例化,请定义一个纯虚函数print,在注释//********1********后添加适当的语句。  2.类TestClass1私有虚继承类TestClass0,请在注释//********2********后添加适当的语句。  3.类TestClass2公有继承类TestClass0,请在注释//********3********后添加适当的语句。  4.类TestClass3公有继承类TestClass2与TestClass1,请在注释//********3********后添加适当的语句。  注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。

相似考题
更多“问答题使用VC6打开考生文件夹下的源程序文件modi3.cpp。请完成以下部分,实现在屏幕上输出为:  TestClass3  TestClass2  这个程序需要修改的部分,请按照以下部分实现。  1.类TestClass0不能被实例化,请定义一个纯虚函数print,在注释//********1********后添加适当的语句。  2.类TestClass1私有虚继承类TestClass0,请在注释//********2********后添加适当的语句。  3.类TestClass2公有继承类TestC”相关问题
  • 第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题:

    使用VC6打开考生文件夹下的工程MyProj7。此工程包含一个源程序文件MyMain7.cpp。其中定义了类Sample,但类Sample的定义并不完整。

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

    ①定义私有数据成员n,它是int型的数据。请在注释“//* *1**”之后添加适当的语句。

    ②完成重载构造函数Sample()的定义,使Sample对象的默认值:n=0。请在注释“//* *2* *”之后添加适当的语句。

    ③完成成员函数add()的类体内的定义,使成员函数返回的Sample对象的值n为两类Sample对象s1和s2的私有成员n的和。请在注释“//* *3* *”之后添加适当的语句。

    ④完成成员函数disp()的类外定义,使其以“n=”的格式将Sample对象的值输出到屏幕上。请在注释“* *4* *”之后添加适当的语句。

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

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

    //MyMain7.cpp

    include<iostream>

    using namespace std;

    class Sample

    {

    private:

    //* * 1* *

    public:

    Sample(){}

    //* *2* *

    Sample add(Sample s1,Sample s2)

    {

    //* *3* *

    }

    void disp();

    };

    void Sample: :disp()

    {

    //* * 4 * *

    }

    int main()

    {

    Sample s1(10),s2(5),s3;

    cout<<"s1:";

    s1.disp();

    cout<<"\n S2:";

    s2,disp();

    s3.add(s1,S2);

    cout<<"\n s3.add(s1,s2)\n s3:";

    s3.disp();

    return 0;

    }


    正确答案:

  • 第3题:

    使用VC6打开考生文件夹下的工程MyProj6。此工程包含一个源程序文件MyMain6.cpp。在程序中,定义了一个Furniture类,Bed类和Sofa类是在Furniture类的基础上按公有继承的方式产生的派生类,Sleepersofa类是在Bed类和Sofa类的基础上按公有继承的方式产生的派生类。

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

    ①Bed类是在Furniture类的基础上按公有继承的方式产生的派生类,为了使程序中的多重继承关系不出现二义性。请在注释“//**1**”之后添加适当的语句。

    ②Sofa类是在Furniture类的基础上按公有继承的方式产生的派生类,为了使程序中的多重继承关系不出现二义性。请在注释“//**2**”之后添加适当的语句。

    ③Sleepersofa类是在Bed类和Sofa类的基础上按公有继承的方式产生的派生类。请在注释“//**3**”之后添加适当的语句。

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

    源程序文件MyMain6.cpp清单如下;

    //MyMain6.cpp

    include<iostream>

    using namespace std;

    class Furniture

    {

    public:

    Furniture(){}

    void setweight(int w)

    {

    weight=w;

    }

    int getweight()

    {

    return weight;

    }

    protected:

    int weight;

    };

    //* *1 * * class Bed definition

    {

    public:

    Bed(){}

    void sleep()

    {

    cout<<"sleeping..."<<end1;

    }

    };

    //* *2* * class Sofa definition

    {

    public:

    Sofa(){}

    void watchTV()

    {

    cout<<"watching TV..."<<end1;

    }

    };

    //* * * 3 * * *

    {

    public:

    Sleepersofa(){}

    void Foldout()

    {

    cout<<"Fold out the sofa".<<endl;

    };

    int main()

    {

    Sleepersofa ss;

    ss.setweight(20);

    cout<<ss.getweight()<<end1;

    return 0;

    }


    正确答案:

  • 第4题:

    使用VC6打开考生文件夹下的工程test12_3,此工程包含一个test12_3.cpp,其中定义了类Base和类A,类A公有继承 Base,但这两个类的定义都并不完整。请按要求完成下列操作,将程序补充完整。

    (1)定义枚举类型变量en,它包含两个枚举符front和back,请在注释“//**1**”之后添加适当的语句。

    (2)在类Base中添加常成员虚函数void E()的定义,该函数输出“In Base E!”,请在注释“//**2**”之后添加适当的语句。

    (3)在类A中添加常成员虚函数void E()的定义,该函数先调用基类中的虚函数 E()再输出“In AE!”,请在注释“//** 3**”之后添加适当的语句。

    (4)完成类A构造函数的定义,请使用参数列表的形式初始化类A的成员,并输出“A constructor.”,请在注释“//** 4**”之后添加适当的语句。

    输出结果如下:

    Base constructor.

    A constructor.

    In BaseE!

    In AE!

    In BaseP!

    In A!

    1

    A destructor.

    Base destructor.

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

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

    include<iostream .h>

    // ** 1 **

    class Base

    {

    protected:

    int b1;

    int b2;

    public:

    Base();

    ~Base();

    int Getb1()const { return b1; }

    void Setb1(int x){ b1 = x; }

    int Getb2()const { return b2; }

    void Setb2(int y) { b2 = y; }

    void Print()const {cout<<"In Base P!"<<end1;}

    // ** 2 **

    };

    Base::Base():b1(1),b2(5)

    {

    cout<<"Base constructor."<<endl;

    }

    Base::~Base()

    {

    cout<<"Base destructor."<<endl;

    }

    class A:public Base

    {

    protected:

    en enA;

    public:

    A();

    ~A();

    en GetColor()const { return enA; }

    void SetColor(en color){ enA = color; }

    void InA(){cout<<"In A!"<<endl;}

    // ** 3 **

    {

    Base::E();

    cout<<"In AE!"<<endl;

    }

    };

    // ** 4 **

    {

    cout<<"A constructor."<<endl;

    }

    A::~A()

    {

    cout<<"A destructor."<<endl;

    }

    void main()

    {

    A a1;

    a1.E();

    cout<<endl;

    a1.Print();

    a1.InA();

    cout<<a1.Getbl()<<endl;

    }


    正确答案:(1) enum en{front back}; (2) virtual void E()Const{cout"In BaseE!"endl;} (3) virtual void E()const (4) A::A():enA(front)
    (1) enum en{front, back}; (2) virtual void E()Const{cout"In BaseE!"endl;} (3) virtual void E()const (4) A::A():enA(front) 解析:主要考查考生对于枚举和虚函数的定义的掌握,注意(1)中枚举类型使用enum关键字定义,它实际上就是一个有名字的常量,定义格式如下:enum枚举名{枚举表},(2)中常成员函数的定义格式中const的位置不能随便改动,因为const关键字是修饰其右侧文字的,(3)中调用基类函数E的方法Base::E()中使用了作用域符。

  • 第5题:

    使用VC6打开考生文件夹下的工程MyProj15。此工程包含一个源程序文件MyMain15.cpp。程序中定义了3个类A、B和C,但类的定义并不完整。

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

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

    ②完成类Inherit成员函数setvalue(int a,int b,int c,int d)的定义,此函数实现的功能是将基类成员x、y、z和派生类的数据成员m的值分别设置成a、b、c和d。请在注释“//* *2* *”之后添加适当的语句。

    ③完成类Inherit成员函数display()的类体外定义,此函数实现的功能是以“,,,,”的格式将x、y、z和m的值输出到屏幕上。请在注释“//* *3* *”之后添加适当的语句。

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

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

    //Mymain15.cpp

    include<iostream>

    using namespace std;

    class Base

    {

    private:

    int x;

    protected:

    int y;

    public:

    int z;

    void setx(int i)

    {

    x=i;

    }

    int getx()const

    {

    return x;

    }

    };

    //* * *1* * *

    {

    private:

    int m;

    public:

    void setvalue(int a,int b,int c,int d)

    {

    //* * *2* * *

    }

    void display()const;

    };

    //* * *3* * *

    int main()

    {

    Inherit A;

    A.setvalue(1,2,3,4);

    A.display();

    return 0;

    }


    正确答案:

  • 第6题:

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

    }


    正确答案:

  • 第7题:

    使用VC++6.0打开考生文件夹下的源程序文件3.cpp。请完成以下部分,实现在屏幕上输出为 C3 C2 这个程序需要修改的部分,请按照以下部分实现。 (1)类C0不能被实例化,请定义一个纯虚函数print,在注释1后添加适当的语句。 (2)类C1私有虚继承类C0,请在注释2后添加适当的语句。 (3)类C2公有继承于C0,请在注释3后添加适当的语句。 (4)类c3公有继承于C2与C1,请在注释4后添加适当的语句。 注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 试题程序: include(iostream.h) classCO { //********1******** }; //********2******** classC1: { public: voidprint { cout<"”C1"<<endl; } }; //********3******** classC2: { public: voidprint { cout<<"C2"<<endl; } }; //********4***x**** classC3: { public: voidprint { cout<<"C3"<<endl; } }; voidmain { C30bj3; C20bj2; obj3.print; obj2.print; return; }


    正确答案:
    (1)应添加“virtualvoidprint=0,”。
    (2)“classC1:”应改为“classC1:virtualprivateC0”。
    (3)“classC2:”应改为“classC2:publicC0”。
    (4)“classC3:”应改为“classC3:publicC2,publicC1”。
    【解析】本题考查了类的继承。根据题意,第1处应该添加“virtualvoidprint=0;”。第2处根据题意,在冒号后面应添加“virtualprivateCO”。第3处根据题意,冒号后应添加“publicCO”。第4处根据题意,冒号后应添加“publicC2,publicC1”。

  • 第8题:

    使用VC6打开考生文件夹下的工程test16_3,此工程

    (1)定义类Cat 的保护数据成员itsAge用于表示年龄,它是int型的数据。请在注释“//**1**”之后添加适当的语句。

    (2)定义类Cat的保护数据成员GetAge()的类外定义,返回成员的itsAge值,请在注释“//**2**”之后添加适当的语句。

    (3)完成成员函数SetAge(int age)的类外定义,把数据成员itsAge赋值为参数age的值,请在注释“//**3**”之后添加适当的语句。

    (4)完成成员函数Meow的类外定义,使其输出字节符串“meow.”到屏幕上。请在注释“**4**”后添加适当的语句。

    输出结果如下:

    meow.

    kitty is a cat who is 5 years old.

    meow.

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

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

    include<iostream.h>

    class Cat

    {

    public:

    int GetAge();

    void SetAge(int age);

    void Meow();

    protected:

    //**1**

    };

    int Cat::GetAge()

    {

    //**2**

    }

    void Cat::SetAge(int age)

    {

    //**3**

    }

    void Cat: :Meow()

    {

    //**4**

    }

    void main ( )

    {

    Cat kitty;

    kitty.Meow();

    kitty. SetAge(5);

    cout<<"kitty is a cat who is ";

    cout<<kitty.GetAge();

    cout<<" years old.\n";

    kitty. Meow();

    }


    正确答案:(1) int itsAge; (2) return itsAge; (3) itsAge=age; (4) cout"meow.\n";
    (1) int itsAge; (2) return itsAge; (3) itsAge=age; (4) cout"meow.\n"; 解析:本题主要考查考生对于类的定义和成员函数的定义的深刻理解,考查的都是最基本的操作。

  • 第9题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。  1.在类TestClass中定义name为字符串类型,age为整型,请在注释∥********1********之后添加语句。  2.设置类TestClass0的基类为TestClass类的定义,请在注释∥********2********后添加语句。  3.在类TestClass的派生类TestClass0的公有成员中定义析构函数TestClass0,请在∥********3********后添加。  4.设置类TestClass1的基类为TestClass类的定义,请在∥********4********后实现。  本程序输出如下结果:  TestClass class constructor  TestClass0 class constructor  TestClass on class constructor  TestClass1 class constructor  TestClass1 class constructor  TestClass class constructor  TestClass0 class constructor  TestClass class constructor  注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。

    正确答案: 1.添加语句:char* name;int age;
    2.添力语句:class TestClass0:public TestClass
    3.添加语句:~TestClass0()
    4.添加语句:class TestClass1:public TestClass
    解析:1.题目1要求“TestClass中定义name为字符串类型,age为整型”。根据题目要求,在程序TestClass类中定义变量name和age,即“char* name;int age;”。
    2.题目2要求“设置类TestClass0的基类为TestClass类的定义”。在C++中,从已有的类产生一个新的子类,称为类的派生。声明派生类的一般形式为:class派生类名:[继承方式] 基类名。根据声明派生类的一般形式,这里补全“classTestClass0:public TestClass”。
    3.题目3要求“在类TestClass的派生类TestClass0的公有成员中定义析构函数TestClass0”。析构函数的名字是类名的前面加一个“~”符号,声明析构函数为“~TestClass0()”。
    4.题目4要求“设置类TestClass1的基类为TestClass1类的定义”,在第4个标识下补充“class TestClass1:public TestClass”。
    解析: 暂无解析

  • 第10题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:  1.定义类CPoint的带有两个参数的构造函数,两个变量为x、y都为int型,且缺省值为0。请在注释//********1********料料料后添加适当的语句。  2.完成类CRectangle的构造函数,给point1和point2进行赋值。请在注释//********2********后添加适当的语句。  3.完成类CRectangle的函数GetArea(),用来计算矩形面积。请在注释//********3********后添加适当的语句。  4.定义CRectangle类,拥有两个私有对象point1和point2,类型为Point,请在注释//********4********后添加适当的语句。  注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

    正确答案: 1.添加语句:“CPoint(int i=0,int j=0)”
    2.添加语句:“CRectangle(int top,int left,int right,int bottom): point1(top,left), point2(right,bottom)”
    3.添加语句:“int width=point1.GetX()-point2.GetX();”
    4.添加语句:“CPoint point1;”
    解析:1.在第1个标识下添加构造函数,该构造函数带有两个整型参数x和y,缺省值为0,因此第1个标识下应添加语句:“CPoint(int i=0,int j=0)”。
    2.第2个标识下通过CPoint类的构造函数来完成CRectangle类成员的初始化,构造初始化列表完成对变量的初始化,故第2个标识下应添加语句:“CRectangle(int top,int left,int right,int bottom):point1(top,left),point2(right,bottom)”。
    3.矩形面积为矩形长和宽的乘积,两个CPoint对象的x坐标相减的绝对值为矩形的宽,CPoint对象的x坐标为私有成员,只能通过公有接口函数调用获得,因此第3个标识下添加语句:“int width=point1.GetX()-point2.GetX();”。
    4.CRectangle类的成员变量为两个Cpoint对象成员point1和point2,第4个标识下补充类对象point1的定义,故第4个标识下应添加语句:“CPoint point1;”。
    解析: 暂无解析

  • 第11题:

    问答题
    使用VC6打开源程序文件modi3.cpp。其中类TestClass用于把文件输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的大小是文件的前一半,另外一个文件的大小是剩余部分。  此程序将in.txt文件中的内容输出到屏幕,并且将文件按照以上方式分割,存于文件out1.txt和out2.txt中。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。  1.从输入文件中获得一个字符,并判断是否到文件结尾,如果到文件结尾,则退出循环。请在注释//********1********后添加适当的语句。  2.把获得的输入文件的内容存储到buf中,并且用len记录下文件的长度。请在注释//********2********后添加适当的语句。  3.将输入文件的后一半内容存储在第二个文件中,请在注释//********3********后添加适当的语句。  4.使用文件流对象打开输入文件modi3.txt,请在注释//********4********后添加适当的语句。  注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。

    正确答案: 1.将“while()”补充完整为:while(infile.get(ch))
    2.添加语句:buf[1en++]=ch;
    3.添加语句:outfile2<<buf[i++];
    4.将“TestClass Fsp();”修改为“TestClass Fsp(modi3.txt);”
    解析:1.题目1要求“从输入文件中获得一个字符,并判断是否到文件结尾”。程序中的“while()”循环条件中缺少从文件中获得字符并判断是否到达文件结尾的语句,所以这里补全while循环判断条件,即“while(infile.get(ch))”。
    2.题目2要求“把获得的输入文件的内容存储到buf中,并且用len记录下文件的长度”。因此为buf分配空间,即“buf[1en++]=ch;”。
    3.题目3要求“将输入文件的后一半内容存储在第二个文件中”。在C++中,用流插入运算符为“<<”,根据题目要求要将buf中存放的数据存入文件outfile2,即这里补全“outfile2<<buf[i++];”。
    4.题目4要求“使用文件流对象打开输入文件modi3.txt。”程序应该是调用类“TestClass”中的成员函数“split”。类的构造函数定义中存在参数char*fileName,所以修改注释下的语句缺少参数,即“TestClass Fsp(modi3.txt);”。
    解析: 暂无解析

  • 第12题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi3.cpp,阅读下列程序说明和代码,功能如下:  从屏幕输入数字,然后由大到小插入指定的链中。当输入0时,表示输出的数据已经输入完成,然后把数据打印到屏幕,然后释放内存。  其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。  1.在父节点的Next中保存新插入的节点的指针,请在注释//********1********后添加适当的语句。  2.把pNext的子节点赋给pNext本身,请在注释//********2********后添加适当的语句。  3.判定P的子节点不为空,如果不为空,则打印P其中的数据到屏幕,请在注释//********3********后添加适当的语句。  4.用temp1保存动态申请内存节点的链表头,请在注释//********4********后添加适当的语句。  注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。

    正确答案: 1.添加语句:pParent->next=temp;
    2.添加语句:pNext=pNext->next;
    3.补充完整为:while(p->next!=NULL)
    4.补充完整为:TestClass* templ=p->next;
    解析:1.题目1要求“在父节点的Next中保存新插入的节点的指针”。指针的操作pParent->next表示为pParent的子结点,在父节点的Next中保存新插入的节点的指针,即“pParent->next=temp;”。
    2.题目2要求“把pNext的予节点赋给pNext本身”。pNext->next表示pNext的子结点,把pNext的子节点赋给pNext本身,即“pNext=pNext->next;”。
    3.题目3要求“判定P的子节点不为空,如果不为空,则打印P其中的数据到屏幕”。程序中的“while()”缺乏p的子节点不为空的判断条件,所以修改为“while(p->next!=NULL)”。
    4.题目4要求“用temp1保存动态申请内存节点的链表头”。p为链表,p->next为链表头。程序中的语句“TestClass* temp1=;”中temp1没有被赋值,所以修改为“TestClass* templ=p->next;”。
    解析: 暂无解析

  • 第13题:

    使用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;”。

  • 第14题:

    使用VC6打开考生文件夹下的工程test8_3,此工程包含一个源程序文件test8_3.cpp,该文件设计了用于输出乘法九九表的类。请认真阅读已有的代码,按要求完成下列操作,将程序补充完整。

    (1)定义类Table的私有数据成员x和y,分别用于表示九九表中的两个乘数(x*y),它们都是int型的数据。请在注释“//**1**”之后添加适当的语句;

    (2)完成类Table的成员函数prin()的定义,该函数以“x*y=z”的格式打印出九九表中的一个乘法算式,请使用格式化输出函数prinff实现,在注释“//**2**”之后添加适当的语句;

    (3)完成类Table9的成员函数print()的定义,该函数调用基类Table的print()函数,将九九表输出到屏幕,请在注释“//**3**”之后添加适当的语句;

    (4)补充主函数,在屏幕上输出九九表,以便测试所定义的类的正确性。请在注释“//**4**”之后添加适当的语句。

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

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

    include<iostream.h>

    include<stdio.h>

    class Table

    {

    //**1**

    int z;

    public:

    void print(int x,int y,int z);

    };

    void Table::print(int x,int y,int z)

    {

    //**2**

    }

    class Table9:public Table

    {

    public:

    void print();

    };

    void Table9::print()

    {

    //**3**

    int x,y,z;

    for (i=1;i<1O;i++)

    {

    for(j=1;j<i+1;j++)

    {

    x=i;

    y=j;

    z=i*j;

    Table::print(y,x,z);

    }

    printf("\n");

    }

    }

    main()

    {

    //+*4**

    return 0;

    }


    正确答案:(1) int x; int y; (2) printf("%d*%d=%d"xyz); if(z10)printf(""); (3) int ij; (4) Table9 t_9; t_9.print();
    (1) int x; int y; (2) printf("%d*%d=%d",x,y,z); if(z10)printf(""); (3) int i,j; (4) Table9 t_9; t_9.print(); 解析:主要考查考生将具体问题抽象为类,将类的定义补充完整,并进行类定义测试的能力。注意(2)中格式化输出函数pnnfl的使用格式,%d代表输出的为整型。

  • 第15题:

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

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

    ①定义类shapes的保护成员x和y,它们都是整型变量。请在注释“//* *1* *”之后添加适当的语句。

    ②完成构造函数shapes(int d,int w)定义,使类shapes的保护成员x、y分别初始化为d、w,并分别具有默认值0、0。请在注释“//* *2* *”之后添加适当的语句。

    ③完成类shapes的成员函数setvalue(int d,int w)的定义,shapes类的数据成员x和y分别被设置成d和w。请在注释“//* *3* *”之后添加适当的语句。

    ④将类shapes的成员函数void disp()设置成纯虚函数。请在注释“//* *4* *”之后添加适当的语句。

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

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

    //MyMain13.cpp

    include<iostream>

    using namespace std;

    class shapes

    {

    //* * *1* * *

    public:

    //* * *2* * *

    void setvalue(int d,int w)

    {

    //* * *3* * *

    }

    //* * * 4 * * *

    };

    class square : public Shapes

    {

    public:

    void disp()

    {

    cout<<x*y<<end1;

    }

    };

    int main()

    {

    shapes*ptr;

    square s1;

    ptr=&s1;

    ptr->setvalue(10,5);

    ptr->disp();

    return 0;

    }


    正确答案:

  • 第16题:

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

    ①定义私有数据成员year、month和day分别用于表示年、月、日,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。

    ②完成默认构造函数Date的定义,使Date对象的默认值为:year=1,month=1, day=1,请在注释“//**2**”之后添加适当的语句。

    ③完成重载构造函数Date(int y, int m, int d)的定义,把数据成员year、month和day分别初始化为参数y、m和d的值,请在注释“//**3**”之后添加适当的语句。

    ④完成成员函数print的类外定义,使其以“年-月-日”的格式将Date对象的值输出到屏幕上。请在注释“//**4**”之后添加适当的语句。

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

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

    //MyMainl. cpp

    include <iostream>

    using namespace std;

    class Date

    {

    public:

    //* * 2 * *

    Date(int y, int m, int d)

    {

    //* * 3 * *

    }

    void print() const;

    private:

    //data member

    //* * 1 * *

    };

    void Date: :print () const

    {

    //* * 4 * *

    }

    int main ( )

    {

    Date national_day(1949,10,1);

    national_day.print();

    return 0;

    }


    正确答案:①int year month day; ②Date(){year=1;month=1;day=1;} ③year=y;month=m;day=d; ④coutyear"年"month"月"day"日"end1;
    ①int year, month, day; ②Date(){year=1;month=1;day=1;} ③year=y;month=m;day=d; ④coutyear"年"month"月"day"日"end1; 解析:这是一道综合应用题,主要考核类的定义。
    ①定义私有数据成员year、month和day分别用于表示年、月、日,它们都是血型的数据,所以在第1处填入:“int year, month, day;”。
    ②完成默认构造函数Date的定义,使Date对象的默认值为:year=1,month=1,day=1。
    根据以上要求可知,类Date的默认构造函数为:“Date(){year=1;month=1;day=1}:”。
    ③完成重载构造函数Date(int y, int m, int d)的定义,把数据成员year、month和day分别初始化为参数y、m和d的值。其实也就是给私有成员year、month和day赋值。
    所以在第3处应填入:“year=y;month=m;day=d;”。
    ④完成成员函数print的类定义,使其以“年-月-日”的格式将Date对象的值输出到屏幕上。函数print的功能是输出Date对象的值,此处主要考核C++的格式化输出。
    所以在第4处应该填入:“coutyear"年"month"月"day"日"end1;”。

  • 第17题:

    使用VC6打开考生文件夹下的工程MyProj2。此工程包含一个源程序文件 MyMain2.cpp,此程序的运行结果为:

    Derive1's Print() Called.

    Derive2's Print() called.

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

    ①定义函数Print()为无值型纯虚函数。请在注释“//**1**”之后添加适当的语句。

    ②建立类Derivel的构造函数,请在注释“//**2**”之后添加适当的语句。

    ③完成类Derive2成员函数Print()的定义。请在注释“//**3**”之后添加适当的语句。

    ④定义类Derivel的对象指针d1,类Derive2的对象指针d2。其初始化值分别为1和2。

    源程序文件MyMain2.cpp中的程序清单如下:

    //MyMain2. cpp

    include <iostream>

    using namespace std;

    class Base

    {

    public:

    Base(int i)

    {

    b=i;

    }

    //* * 1 * *

    protected:

    int b;

    };

    class Derivel: public Base

    {

    public:

    //* * 2 * *

    void print ()

    {

    cout<<" Derivel's Print() called."<<end1;

    }

    };

    class Derive2 : public Base

    {

    public:

    Derive2(int i) :Base(i) { }

    //* * 3 * *

    };

    void fun (Base *obj)

    {

    obj->Print ();

    }

    int main ( )

    {

    //* * 4 * *

    fun (d1);

    fun (d2);

    return 0;

    }


    正确答案:①virtual void Print()=0; ②Derivel(int i):Base(i){} ③void Print(){cout"Derive2's Print()called."end1;} ④Derivel*d=new Derive1(1);Derive2*d2=new Derive2(2)
    ①virtual void Print()=0; ②Derivel(int i):Base(i){} ③void Print(){cout"Derive2's Print()called."end1;} ④Derivel*d=new Derive1(1);Derive2*d2=new Derive2(2) 解析:本题是一道综合应用题,考核继承与派生,以及纯虚函数。
    ①在第1处定义函数Print()为无值型纯虚函数。根据C++中无纯虚函数的定义格式可知在第1处应填入“virtual void Print()=0;”。
    ②在第2处建立类Derivel的构造函数,其中还要调用基类的构造函数。所以应填入“Derivel(int i):Base(i){}”。
    ③在第3处完成类Derive2成员函数Print()的定义,根据程序的输出可知,此处应填入“void Print(){cout"Derive2's Print() called.”end1;}。
    ④在第4处定义类Derive1的对象指针d1,类Derive2的对象指针d2,其初始化值分别为1和2。所以应填入“Derive1 *d=new Derive1(1);Derive2 *d2=new Derive2(2)”。

  • 第18题:

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

    }


    正确答案:

  • 第19题:

    使用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;”。


  • 第20题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示坐标的类TestClass1,但类TestClass1的定义并不完整,按要求完成下列操作,将类的定义补充完整。  1.声明TestClass2类为TestClass1类的友元类,请在注释∥********1********后添加适当的语句。  2.完成类的构造函数,分别对成员变量赋值,请在注释∥********2********后添加适当的语句。  3.完成类的构造函数,分别对成员变量赋值,请在注释∥********3********后添加适当的语句。  4.完成计算平面上两点之间的距离函数Distance,计算的方法如下:X坐标之差的平方与Y坐标之差的平方之和的开方。请在注释∥********4********后添加适当的语句。  注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。

    正确答案: 1.添加语句:friend class TestClass2:
    2.添加语句:TestClass1(float a,float b)
    3.添加语句:TestClass1(float a)
    4.添加语句:result=sqrt((p.X-q.X)*(p.X-q.X)+(p.Y-q.Y)(p.Y-q.Y));
    解析:1.题目1要求“声明TestClass2类为TestClass1类的友元类”。C++中声明友元类的一般形式为friend类名:,所以这里补全“friend class TestClass2:”。
    2.题目2要求“完成类的构造函数,分别对成员变量赋值”。程序中TestClass1类的构造函数缺少定义,构造函数首部的一般格式为:构造函数名(类型1形参1,类型2形参2,……),所以在第2个标识下补全“TestClass1(float a,float b)”。
    3.题目3要求“完成类的构造函数,分别对成员变量m值”。同理,第三个标识下补全“TestClass1(float a)”。
    4.题目4要求“完成计算平面上两点之间的距离函数Distance”。题目中已经给出了计算方法,x坐标之差的平歹与y坐标之差的平方之和的开方。利用C++中的开方函数sqrt补全函数中的两点之间的距离,即“result=sqrt((p.X-q.X)*(p.X-q.X)+(p.Y-q.Y)(p.Y-q.Y));”。
    解析: 暂无解析

  • 第21题:

    问答题
    用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了多个类,但类不能达到输出要求,按照定义的输出修改函数,使得输出如下:  TestClass3  TestClass2  TestClass1  其中定义的类并不完整,按照要求完成下列操作,将类的定义补充完整。  1.类TestClass2公共继承于TestClass1,请在注释∥********1********后添加适当的语句。  2.print函数为虚函数,请在注释∥********2********后添加适当的语句。  3.修改语句,使得p指定对象obj3,请在注释∥********3********后添加适当的语句。  4.修改语句,利用p调用print()函数,完成输出信息,注释∥********4********后添加适当的语句。  注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。    使用VC6打开考生文件夹下的源程序文件modi3.cpp。程序通过继承关系,实现对姓名的控制。类TestClass1实现对名字访问的接口,TestClass2实现对名字的设置和输出。  程序输出为:  TestClass2Name  May  其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。  1.在类TestClass1中定义接口函数GetName()为纯虚函数。请在注释∥********1********后添加适当的语句。  2.函数GetName2()实现获得名字的缓存,但是只获得读允许操作这个缓存,请在注释∥********2********后添加适当的语句。  3.实现TestClass2的构造函数,请在注释∥********3********后添加适当的语句。  4.完成TestClass2的构造函数,实现对名字的处理。请在注释∥********4********后添加适当的语句。  注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。

    正确答案: 1.添加语句:virtual void GetName()=0;
    2.添加语句:const char* GetName2()
    3.添加语句:TestClass2(char* str)
    4.添加语句:m_str[i]=0;
    解析:1.题目1要求“在类TestClass1中定义接口函数GetName()为纯虚函数”。在C++中,基类用关键字virtual将成员函数声明为虚函数,而纯虚函数是在声明虚函数时“初始化”为0的函数,即“virtual void GetName()=0;”。
    2.题目2要求“函数GetName2()实现获得名字的缓存,但是只获得读允许操作这个缓存”。实际上是要求函数GetName2()只能对数据成员进行引用,而不能修改,所以应将GetName2()函数声明为常成员函数,即“const char* GetName2()”。
    3.题目3要求“实现TestClass2的构造函数”。TestClass2的构造函数与类TestClass2名相同,而且第三个标识下的大括弧中是对字符数组str的操作,所以类TestClass2的构造函数中的参数为str,即“TestClass2(char* str)”。
    4.题目4要求“完成TestClass2的构造函数,实现对名字的处理”。补全类TestClass2的构造函数,构造函数中的名字变量str对应于类TestClass1中的成员变量m_str,所以这里补全变量赋值操作“m_str[i]=0;”。
    解析: 暂无解析

  • 第22题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。  1.定义私有成员变量year、month、day,分别表示年、月、日,类型为int。请在注释∥********1********后添加适当的语句。  2.完成构造函数,分别给year、month、day赋值,请在注释∥********2********后添加适当的语句。  3.完成重载符号“+=”的定义,请在注释∥********3********后添加适当的语句。  4.完成print()打印函数,如2008年8月8日到屏幕和文件modi3.txt格式相同,请在注释∥********4********后添加适当的语句。  注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。

    正确答案: 1.添加语句:int year,month,day;
    2.添加语句:year=y;month=m;day=d;
    3.添加语句:Date & operator+=(int m)
    4.添加语句:cout<<year<<″年″<<month<<″月″<<day<<″日″<<endl;
    解析:1.题目1要求“定义私有成员变量year、month、day”。在C++程序的private区域中添加变量year、month、day的定义,即在第1个标识下添加“int year,month,day;”。
    2.题目2要求“完成构造函数,分别给year、month、 day赋值”。在程序中“Date(int y,int m,int d)”的构造函数中添加给year、month、day赋值的语句,即在第2个标识下添加“year=y;month=m;day=d;”。
    3.题目3要求“完成重载符号“+=”的定义”。在C++中,运算符重载的定义格式为函数operator+重载运算符+,所以这里补全“Date & operator+=(int m)”。
    4.题目4要求“完成函数print()打印函数”。在print()函数中补全其打印功能,即在第四个标识下添加“cout<<year<<″年″<<month<<″月″<<day<<″日″<<endl;”。
    解析: 暂无解析

  • 第23题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:  1.声明类objA1,请在注释∥********1********后添加适当的语句。  2.为类objA0增加友元函数func(),请在注释∥********2********后添加适当的语句。  3.为类objA1增加友元函数func(),请在注释∥********3********后添加适当的语句。  4.函数func()返回objA1对象中的变量和objA0的静态变量的乘积,请在注释∥********4********后添加适当的语句。  注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。

    正确答案: 1.添加语句:“class objA1;”
    2.添加语句:“friend int func(objA1&obj);”
    3.添加语句:“friend int func(objA1&obj);”
    4.添加语句:“return obj.m_A1*objA0::m_A0;”
    解析:1.类objA0中引用objA1的成员对象,因此需要在类objA0前添加类objA1的声明,第1个标识下应添加语句:“class objA1;”。
    2.友元函数是在类声明中由关键字friend修饰的非成员函数,func()函数在类外部给出了具体的实现形式,即“int func(objA1&obj)”,因此第2个标识下应添加语句:“friend int func(objA1&obj);”,这里参数是obiA1类的对象obj。
    3.声明友元函数,因此第3标识下应语句:“friend int func(objA1&obj);”。
    4.类objA1的对象obj对象可以直接访问obj.m_A1,objA0的静态变量m_A0是所有对象的共享成员,其访问形式为:objA0::m_A0,因此第4个标识下应添加语句:“return obj.m_A1*objA0::m_A0;”。
    解析: 暂无解析