使用VC6打开考生文件夹下的工程MyProj13。此工程包含一个源程序文件MyMain12.cpp。程序中定义了两个类Base和Derived,但类的定义并不完整。请按要求完成下列操作,将类的定义补充完成:①定义类shapes的保护成员x和y,它们都是整型变量。请在注释“//* *1* *”之后添加适当的语句。②完成构造函数shapes(int d,int w)定义,使类shapes的保护成员x、y分别初始化为d、w,并分别具有默认值0、0。请在注释“//* *2* *”之后添加适当的语句。③完成类sha

题目

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

}


相似考题
更多“使用VC6打开考生文件夹下的工程MyProj13。此工程包含一个源程序文件MyMain12.cpp。程序中定义了两个类Base和Derived,但类的定义并不完整。请按要求完成下列操作,将类的定义补充完成:①定义类shapes的保护成员x和y,它们都是整型变量。请在注释“//* *1* *”之后添加适当的语句。②完成构造函数shapes(int d,int w)定义,使类shapes的保护成员x、y分别初始化为d、w,并分别具有默认值0、0。请在注释“//* *2* *”之后添加适当的语句。③完成类sha”相关问题
  • 第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打开考生文件夹下的工程test19_3,此工程包含一个源程序文件test19_3.cpp,其中定义了用于表示向量的类 vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整。

    (1)补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。请在注释“//**1**”之后添加适当的语句。

    (2)完成类vector的成员函数input(int x,int y)的定义,将int型的参数x和y分别赋值给数据成员a和b,请在注释“//**2**”之后添加适当的语句。

    (3)完成类vector的友元函数friend double Multiply (vector &x,vector &y)的定义,先定义double型的临时变量c,然后将参数对象x和对象y的数据成员a与b分别相乘再相加后赋值给c,最后返回c的值,将请在注释“//**3**”之后添加适当的语句。输出结果如下:

    (10,20)

    (2, 3)

    80

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

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

    include <iostream.h>

    class vector

    {

    int a;

    int b;

    public:

    //**1**

    void input(int x, int y)

    {

    //**2**

    }

    void output ()

    {

    cout<<'('<<a<<','<<b<<")"<<end1;

    }

    friend double Multiply(vector &x,vector &y);

    }

    double Multiply (vector &x,vector &y)

    {

    //**3**

    c=x.a*y.a+x.b*y.b;

    return c;

    }

    void main()

    {

    vector x(10,20),y;

    double d;

    y.input (2,3);

    d=Multiply (x,y);

    x. output ( );

    y. output ( );

    cout<<d<<end1;

    }


    正确答案:(1) vector(int x=0int y=0):a(x)b(y){} (2) a=x; b=y; (3) double c;
    (1) vector(int x=0,int y=0):a(x),b(y){} (2) a=x; b=y; (3) double c; 解析:本题主要考查考生对于类的定义和友元函数定义的理解,请注意(1)中的参数列表形式和(3)中对象访问成员使用“.”操作符。

  • 第3题:

    使用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代表输出的为整型。

  • 第4题:

    使用VC6打开考生文件夹下的工程test30_3。此工程包含一个test30_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的构造函数,该构造函数有三个整型的参数x,y和2,在构造函数中请将x赋值给数据成员c,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//**3**”之后添加适当的语句。

    (4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员c的值,上述三个值在输出时以空格隔开。请在注释“//**4**”之后添加适当的语句。

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

    程序输出结果如下:

    9

    6

    962

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

    include <iostream.h>

    class A

    {

    int a;

    public:

    //** 1 **

    int geta() {return a;}

    };

    class A1:public A

    {

    int b;

    public:

    //** 2 **

    int getb() {return b;}

    };

    class A2:public A1

    {

    int c;

    public:

    //** 3 **

    void show()

    {

    //** 4 **

    }

    };

    void main()

    {

    A2 a(2,6,9);

    cout<<a.geta ( ) <<end1;

    cout<<a, getb ( ) <<end1;

    a. show( );

    }


    正确答案:(1) A(int x){a=x;} (2) A1(int xint y):A(y){b=x;} (3) A2(int xint yint z):A1(yx){c=x;} (4) coutgeta()" "getb()" "; coutc"\n";
    (1) A(int x){a=x;} (2) A1(int x,int y):A(y){b=x;} (3) A2(int x,int y,int z):A1(y,x){c=x;} (4) coutgeta()" "getb()" "; coutc"\n"; 解析:本题主要考查考生对继承和派生的掌握程度,涉及派生类构造函数的定义、基类成员函数的访问等内容。派生类的构造函数的格式请牢记,另外派生类构造函数及析构函数的执行顺序也是需要掌握的。

  • 第5题:

    使用VC6打开考生文件夹下的工程test24_3,此工程包含一个源程序文件test24_3.cpp,其中定义了抽象类point和它的派生类line,但它们的定义并不完整。请按要求完成下列操作,将程序补充完整。

    (1)定义类point的构造函数,函数含参数i和j它们都是int型数据,默认值都是0,用i和j分别将point的数据成员x0和y0初始化。请在注释“//**1**”之后添加适当的语句。

    (2)完成类point的成员函数纯虚函数void set()和void draw()的定义,请在注释“//**2**”之后添加适当的语句。

    (3)添加类line的构造函数,函数含参数i,j,m和n,它们都是int型数据,默认值都是0,用i和j分别将point的数据成员x0和y0初始化。请在注释“//**3**”之后添加适当的语句。输出结果如下:

    line::set()called.

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

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

    include<iostream.h>

    class point

    {

    public:

    //**1**

    //**2**

    protected:

    int xO,yO;

    }

    class line: public point

    {

    public:

    //**3**

    {

    x1=m;

    y1=n;

    }

    void set(){ cout<<"line::set() called.\n"; }

    void draw(){ cout<<"line::draw() called.\n"; }

    protected:

    int x1,y1;

    };

    void main()

    {

    line *lineobj = new line;

    1ineobj->set();

    }


    正确答案:(1) point(int i=Oint j=0){x0=i;y0=j;} (2) virtual void set()=0; virtual void draw()=0; (3) line(int i=Oint j=0int m=0int n=0):point(ij)
    (1) point(int i=O,int j=0){x0=i;y0=j;} (2) virtual void set()=0; virtual void draw()=0; (3) line(int i=O,int j=0,int m=0,int n=0):point(i,j) 解析:本题主要考查考生对于纯虚函数和抽象类以及派生类构造函数的使用,注意(2)中纯虚函数的定义格式。纯虚函数是一种特殊的函数,不是在基类中实现,而是在派牛类中实现,说明格式是在函数声明中加入关键字“virtual”和“=0”。
    如:virtual void set()=0;。而带有纯虚函数的类就是抽象类,它是不能定义对象的,只是一个公共的类。

  • 第6题:

    使用VC6打开考生文件夹下的工程test29_3。此工程包含一个test29_3.cpp,其中定义了二维坐标类Coordinate和三维坐标类ThreeDCoord,其中ThreeDCoord类由Coordinate类public派生,但两个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

    (1)定义类Coordinate的保护数据成员x和y,它们都是int型的数据,代表二维坐标的横纵坐标值。请在注释“//**1 **”之后添加适当的语句。

    (2)根据类Coordinate定义后的成员函数Display的实现,补充该函数在类Coordinate定义体内的声明,Display为二维坐标类的虚函数。请在注释“//**2**。”之后添加适当的语句。

    (3)完成二维坐标类Coordinate的构造函数,将参数a和b分别赋值给数据成员x和y。请在注释“//**3**”之后添加适当的语句。

    (4)根据ThreeDCoord类构造函数的声明,补充ThreeDCoord构造函数的实现,参数a和b通过调用基类的构造函数来初始化基类的数据成员x和y,c赋值给数据成员2。请在注释“//**4**”之后添加适当的语句。

    输出结果如下;

    [1,2]

    [3,4,5]

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

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

    include<iostream.h>

    class Coordinate

    {protected:

    //** 1 **

    public:

    Coordinate(int a=0, int b=0);

    //** 2 **

    };

    Coordinate::Coordinate(int a, int b)

    {

    //** 3 **

    }

    void Coordinate::Display() const

    {

    cout << '[' << x << ", "<< y << ']' << end1;

    }

    class ThreeDCoord:public Coordinate

    {

    int z;

    public:

    ThreeDCoord(int a=0, int b=0, int c=0);

    virtual void Display() const;

    };

    //** 4 **

    void ThreeDCoord::Display() const

    {

    cout << '[' << x << ", "<< y << ", "<< z << ']' << end1;

    }

    void main ( )

    {

    Coordinate c(1, 2);

    ThreeDCoord t(3, 4, 5);

    c.Display ();

    t.Display ();

    }


    正确答案:(1) int x; int y; (2) virtual void Display()const; (3) x=a; y=b; (4) ThreeDCoord::ThreeDCoord(int aint bint c):Coordinate(ab)
    (1) int x; int y; (2) virtual void Display()const; (3) x=a; y=b; (4) ThreeDCoord::ThreeDCoord(int a,int b,int c):Coordinate(a,b) 解析:本题主要考查考生对类数据成员的定义、构造函数、派生类及虚函数的理解,是C++类知识的一个综合考核。对虚函数的定义格式及继承类构造函数的定义格式请多加注意。

  • 第7题:

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

    (1)定义comp的构造函数,函数含参数x和y,它们都是in,型的数据,默认值都为0,请使用参数列表的形式分别将类数据成员a和b初始化x和y的值。请在注释“//**1**”之后添加适当的语句。

    (2)完成类comp的成员函数input(int x,int y)的定义,将int型的参数x和y分别赋值给数据成员s和b,请在注释“//**2**”之后添加适当的语句;

    (3)完成类comp的友元函数friend compplus(comp &x,comp &y)的定义,该函数首先要定义一个comp类的对象c,然后将参数x和y的数据成员a与b分别相加并分别赋值给c的成员a和b,最后返回c的值,请在注释“//**3**”之后添加适当的语句。输出结果如下:

    10+20i

    2+3i

    result:12+23i

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

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

    include <iostream.h>

    class comp

    {

    int a;

    int b;

    public:

    //**1**

    friend comp plus(comp &x, comp &y);

    void input(int x,int y)

    {

    //**2**

    }

    void output ( )

    {

    cout<<a<<'+'<<b<<"i"<<end1;

    }

    };

    comp plus(comp &x, comp &y)

    {

    //**3**

    c.b=x.b+y.b;

    return c;

    }

    void main()

    {

    comp x(10,20),y,z;

    y.input(2,3);

    z=plus(x,y);

    x.output();

    y.output();

    cout<<"result:";

    z.output();

    }


    正确答案:(1) comp(int x=0int y=0):a(x)b(y){} (2) a=x; b=y; (3) comp c; c.a=x.a+y.a;
    (1) comp(int x=0,int y=0):a(x),b(y){} (2) a=x; b=y; (3) comp c; c.a=x.a+y.a; 解析:本题考查考生对于类的定义和友元函数定义的掌握,请注意(1)中的参数列表形式和(3)中对象使用“.”访问它的数据成员。

  • 第8题:

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

  • 第9题:

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

  • 第10题:

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

    }


    正确答案:

  • 第11题:

    问答题
    使用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));”。
    解析: 暂无解析

  • 第12题:

    问答题
    使用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;”。
    解析: 暂无解析

  • 第13题:

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

    }


    正确答案:

  • 第14题:

    使用VC6打开考生文件夹下的工程test42_3。此工程包含—个test42_3.cpp,其中定义了类Cpolygon、COutput和CTriangle,其中CTriangle类由Cpolygon和COutput类public派生,但三个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

    (1)定义类CPolygon的保护数据成员width和height,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。

    (2)完成类CPolygon的成员函数set_values(int a,int b),使参数a和b分别赋值给保护数据成员width和height,请在注释“//**2**”之后添加适当的语句。

    (3)完成类Coutput的成员函数output(int)的定义,将传入的参数为血型的i输出到屏幕并换行,请在注释“//**3**”之后添加适当的语句。

    (4)完成派生类CTriangle的声明,它由Cpolygon和COutput类public派生,请在注释“//**4**”之后添加适当的语句。

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

    include <iostream.h>

    class CPolygon

    {

    protected:

    // ** 1 **

    public:

    void set_values(int a, int b)

    {

    // ** 2 **

    }

    };

    class COutput

    {

    public:

    void output(int i);

    };

    void COutput::output(int i)

    {

    // ** 3 **

    }

    // ** 4 **

    {

    public:

    int area (void)

    {

    return (width * height / 2);

    }

    }

    int main ()

    {

    CTriangle trgl;

    trgl.set_values (4,5);

    trgl.output (trgl.area());

    return 0;

    }


    正确答案:(1) int width height; (2) width=a; height=b; (3) cout i endl; (4) class CTriangle:public CPolygon public Coutput
    (1) int width, height; (2) width=a; height=b; (3) cout i endl; (4) class CTriangle:public CPolygon, public Coutput 解析:主要考查考生对于类的定义和派生类声明的掌握,其中(4)中对于多继承的声明按照如下的格式:关键字class派生类名:继承方式继承类名,继承方式继承类名,在多继承中,一定要注意防止程序的二义性,同时要善于利用基类中已经定义的方式,才能达到代码复用的作用。

  • 第15题:

    使用VC6打开考生文件夹下的工程test37_3。此工程包含一个test37_3.cpp,其中定义了类Letter和Number以及Grid,其中Grid类由Letter类和Number类public派生,但三个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

    (1)添加类Letter的带一个参数c的构造函数,c是char型的数据,默认值为'A',该函数把参数c的值赋给类的保护成员ch,请在注释“//**1**”之后添加适当的语句。

    (2)添加类Number的带一个参数n的构造函数,n是int型的数据,默认值为0,该函数把参数n的值赋给类的保护成员num,请在注释“//**2**”之后添加适当的语句。

    (3)添加派生类Grid构造函数的定义,传入的参数为char型的c和血型的n,并将其分别赋值给基类的ch和num,请在注释“//**3**”之后添加适当的语句。

    (4)完成派生类Grid的友元函数——“<<”运算符重载的定义,使其以格式“[g.ch,g.num]”输出,请在注释“//**4 **”之后添加适当的语句。

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

    include<iost ream. h>

    class Letter

    {

    protected:

    char ch;

    public:

    // ** 1 **

    };

    class Number

    {

    protected:

    int num;

    public:

    // ** 2 **

    };

    class Grid : public Letter, public Number

    {

    public:

    // ** 3 **

    friend ostream& operator<<(ostream &o,Grid &g);

    };

    // ** 4 **

    {

    o << "[" << g.ch << ", "<< g.num << "]";

    return o;

    }

    int main ( )

    {

    Grid g('C', 3);

    cout << "Grid reference: "<< g << end1;

    return 0;

    }


    正确答案:(1) Letter(char c='A'){ch=c;} (2) Number(int n=0){num=n;} (3) Grid(char c='A'int n=0):Letter(c)Number(n){} (4) ostream &operator(ostream &oGrid &g)
    (1) Letter(char c='A'){ch=c;} (2) Number(int n=0){num=n;} (3) Grid(char c='A',int n=0):Letter(c),Number(n){} (4) ostream &operator(ostream &o,Grid &g) 解析:主要考查考生对于类和派生类的构造函数的定义以及重载为友元的运算符函-数的定义的掌握,其中(3)使用了参数列表进行变量赋值,这是派生类构造函数中经常使用的,(4)对于友元函数在类体外的定义不需要使用作用域符,而ostream类的对象引用可直接使用原来意义的符号“”进行输出。

  • 第16题:

    使用VC6打开考生文件夹下的工程test17_3,此工程包含一个源程序文件test17_3.cpp,其中定义了用于表示点的类Point和表示内容的类Text以及二者的派生类CircleWithText,但它们的定义并不完整。请按要求完成下列操作,将它们的定义补充完整。

    (1)定义类Point的构造函数,请使用参数列表的形式将成员函数x和y分别初始化为参数x1和y1的值。请在注释“//**1**。”之后添加适当的语句。

    (2)完成类Text的构造函数Text(char *str)的定义,将char型的str指向的内容赋值给text并且输出str所指向的内容,请在注释“//**2**”之后添加适当的语句。

    (3)定义类CircleWithText的构造函数CircleWithText(int cx,int cy,char *msg),int型的cx和cy用于赋值给x和y,char型的指针*msg用于赋值给text,请在注释“//**3**”之后添加适当的语句。

    输出结果如下:

    Point:3 4

    hello

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

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

    include <iostream.h>

    include <string.h>

    class Point

    {

    int x,y;

    public:

    //**1**

    {

    cout<<"Point:"<<x<<' '<<y<<'\n';

    }

    ~Point(){}

    };

    class Text

    {

    char text[100];

    public:

    Text(char *str)

    {

    //**2**

    }

    ~Text () { }

    };

    class CircleWithText:public Point,public Text

    {

    public:

    //**3**

    {}

    ~CircleWithText() {}

    };

    void main()

    {

    CircleWithText cm(3,4,"hello");

    }


    正确答案:(1) Point(int×1=0int y1=0):x(x1)y(y1) (2) strcpy(textstr); coutstr"\n"; (3) CircleWithText(int cxint cychar * msg):Point(cxcy)Text(msg)
    (1) Point(int×1=0,int y1=0):x(x1),y(y1) (2) strcpy(text,str); coutstr"\n"; (3) CircleWithText(int cx,int cy,char * msg):Point(cx,cy),Text(msg) 解析:本题主要考查考生对于多继承中类的定义和派生类构造函数的定义的掌握。注意学会使用参数列表的形式定义派生类的构造函数,在列表中的格式是基类名1(向基类传递的参数列表),基类名2(向基类传递的参数列表)。

  • 第17题:

    使用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()中使用了作用域符。

  • 第18题:

    使用VC6打开考生文件夹下的工程test3_3,此工程包含一个源程序文件test3_3.cpp,其中建立了普通的基类base用于存储边的信息,建立派生类triangle和square,用于存储三角形和正方形的信息。按要求完成下列操作,将类定义补充完整。

    (1)定义基类base的保护数据成员x和y用于记录边的长度,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。

    (2)完成基类base默认构造函数的定义,把数据成员x和y分别初始化为参数a和b的值,要求使用作用域符“::”。请在注释“//**2**”之后添加适当的语句。

    (3)完成派生类triangle函数disp的定义,使其以“三角形面积:”的格式将三角形的面积输出到屏幕上。请在注释“//**3**”之后添加适当的语句。

    (4)添写派生类square的默认构造函数的定义,使其调用基类的构造函数,记录下正方形的边长信息a,其缺省值为0。请在注释“//** 4 **”之后添加适当的语句。

    输出结果如下:

    三角形面积:200

    正方形面积:400

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

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

    include<iostream.h>

    class base

    {

    protected:

    //** 1 **

    public:

    base(int a,int b)

    {

    //** 2 **

    }

    virtual void disp(){cout<<"调用base基类"<<endl;)

    };

    class triangle:public base

    {

    public:

    triangle(int a,int b):base(a,b){};

    void disp()

    {

    //** 3 **

    }

    };

    class square:public base

    {

    public:

    //** 4 **

    void disp(){cout<<"正方形面积:"<<x*y<<endl;}

    };

    void main()

    {

    base *p;

    triangle t(20,20);

    square s(20);

    p=&t;

    p—>disp();

    p=&S;

    p->disp();

    }


    正确答案:(1) int x; int y; (2) base::x=a; base::y=b; (3) cout"三角形面积:"x*y*0.5endl; (4) square(int a=0):base(aa){};
    (1) int x; int y; (2) base::x=a; base::y=b; (3) cout"三角形面积:"x*y*0.5endl; (4) square(int a=0):base(a,a){}; 解析:本题考查考生对类的继承与派生的掌握,包括派生类对基类成员的访问和派生类构造函数的定义等知识点。其中(4)是对类的构造函数设定参数的缺省值,该函数应该实现将参数传递给基类的功能。

  • 第19题:

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

    (1)定义类CRectangle的数据成员width和height,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。

    (2)添加类CRectangle的友元函数duplicate()的声明,其返回值类型和参数类型均为Crectangle的,请在注释“//**2**”之后添加适当的语句。

    (3)完成类Crectangle的成员函数set_values的定义,把传入的参数a和b分别赋值为数据成员width和height,请在注释“//**3**”之后添加适当的语句。

    (4)完成派生类Crectangle的友元函数duplicate的定义,把函数中的临时对象rectres的值返回主函数,请在注释“//** 4**”之后添加适当的语句。

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

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

    include <iostream.h>

    class CRectangle

    {

    // ** 1 **

    public:

    void set_values (int, int);

    int area (void) {return (width * height);}

    // ** 2 **

    };

    void CRectangle::set_values (int a, int b)

    {

    // ** 3 **

    }

    CRectangle duplicate (CRectangle rectparam)

    {

    CRectangle rectres;

    rectres.width = rectparam.width*2;

    rectres.height = rectparam.height*2;

    // ** 4 **

    }

    void main ( )

    {

    CRectangle rect, rectb;

    rect.set_values (2,3);

    rectb - duplicate (rect);

    cout << rectb.area()<<end1;

    }


    正确答案:(1) int widthheight; (2) friend CRectangle duplicate(CRectangle); (3) width=a; height=b; (4) return(rectres);
    (1) int width,height; (2) friend CRectangle duplicate(CRectangle); (3) width=a; height=b; (4) return(rectres); 解析:主要考查考生对于类的定义和友元函数的掌握,其中(2)中friend是定义友元的关键字,注意声明之后的分号不能缺少(4)中从子函数中返回应该使用关键字return,只要符合返回类型的要求就可以直接使用return返回。

  • 第20题:

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

    }


    正确答案:

  • 第21题:

    使用VC6打开考生文件夹下的工程test11_3。此工程包含一个test11_3.cpp,其中定义了类CPosition,但该类的定义都并不完整。请按要求完成下列操作,将类CPosition的定义补充完整。

    (1)在类定义外完成重载的两个构造函数CPosition()和CPosition(double dx,double dy),其中前者为不带参数的构造函数,使CPosition对象的默认值为x=0,y=0,后者为带参数的构造函数,把数据成员x和y分别初始化为参数dx和dy的值。请在注释“//**1**”之后添加适当的语句。

    (2)在类体中添加函数move(double ax,double ay)的定义,使得点的坐标x和y分别移动ax和ay个单位,请在注释“// **2**”之后添加适当的语句。

    (3)完成函数double distance (double bx,double by)的定义,该函数返回*this和点(bx,by)的距离,请在注释“//**3**”之后添加适当的语句。

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

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

    include<iostream.h>

    include<math.h>

    class CPosition

    {

    public:

    CPosition();

    CPosition(double dx,double dy);

    double getx();

    double gety();

    // ** 2 **

    double distance(double bx,double by);

    private:

    double x;

    double y;

    };

    // ** 1 **

    {

    x=0;y=0;

    }

    CPosition::CPosition(double dx,double dy)

    {

    x=dx;y=dy;

    }

    double CPosition::getx()

    {

    return x;

    }

    double CPosition::gety()

    {

    return y;

    }

    double CPosition::distance(double bx,double by)

    {

    // ** 3 **

    }

    void main()

    {

    double a,b;

    cout << "Input x, y position of a point:";

    cin >> a >> b;

    CPosition psA(a,b);

    cout << “Input x,y position of another point:";

    cin >> a >> b;

    cout << "The distance is " << psA.distance(a,b) <<endl;

    }


    正确答案:(1) CPosition::CPosition () (2) void move(double axdouble ay){x+=ax;y+=ay;}; (3) return sqrt (pow (x-bx2)+pow (y-by2));
    (1) CPosition::CPosition () (2) void move(double ax,double ay){x+=ax;y+=ay;}; (3) return sqrt (pow (x-bx,2)+pow (y-by,2)); 解析:本题主要考查考生对于类的定义和重载构造函数的掌握情况。在(3)中使用了基本的数学函数sqrt(x)求x的开方,pow (x, n)函数是求x的n次方。

  • 第22题:

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

    }


    正确答案:

  • 第23题:

    问答题
    使用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;”。
    解析: 暂无解析