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

题目

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

}


相似考题
更多“使用VC6打开考生文件夹下的工程test42_3。此工程包含—个test42_3.cpp,其中定义了类Cpolygon、COutp ”相关问题
  • 第1题:

    使用VC6打开考生文件夹下的工程test34_1,此工程包含一个源程序文件test34_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:

    David 3123 1000

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

    include <iostream.h>

    include <string.h>

    class person

    {

    public:

    char name[20];

    unsigned long id;

    float salary;

    void print(){cout<<name<<' '<<id<<' '<<salary<<

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

    }

    void main( )

    {

    person p;

    person *ptr;

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

    ptr=p;

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

    strcpy("David",ptr->name);

    ptr->id=3123;

    ptr->salary=1000;

    ptr->print();

    }


    正确答案:(1)错误:} 正确:}; (2)错误:ptr=p; 正确:ptr=&p; (3)错误:strcpy("David"ptr>name); 正确:strcpy(ptr->name"David");
    (1)错误:} 正确:}; (2)错误:ptr=p; 正确:ptr=&p; (3)错误:strcpy("David",ptr>name); 正确:strcpy(ptr->name,"David"); 解析:(1)类定义的一般格式为:
    class类名>
    {
    pubic:
    数据成员或成员函数的说明>
    private:
    数据成员或成员函数的说明>
    protected:
    数据成员或成员函数的说明>
    };
    花括号表示类的声明范围,说明该类的成员,其后的分号表示类声明结束,类声明最后的分号是不可少的;
    (2)p为类person的对象,ptr为指向类person对象的指针,所以将p的值赋给ptr应该为ptr=&p,即ptr指向对象p;
    (3)strcpy()函数的一般形式为:
    strcpy(to,from);
    该函数将from字符串中的内容复制到to字符串,所以将字符串“David”赋值给ptr所指对象的数据成员name的语句应该为:
    strcpy(ptr->name,"David")。

  • 第2题:

    使用VC6打开考生文件夹下的工程RevProj15。此工程包含一个源程序文件RevMain15.cpp,但该程序中类的定义有错误。请改正程序中的错误,使它能得到正确结果。

    注意,不要改动主函数,不得删行或增行,也不得更改程序的结构。

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

    //RevMain15.cpp

    include<iostream>

    using namespace std;

    class Sample

    {

    private:

    int x;

    static int y;

    public:

    Sample(int a)

    {

    x=a;

    y+=x;

    }

    static void print(Sample s)

    {

    cout<<"x="<<x<<<<",y="<<y<<end1;

    }

    Sample::y=5;

    int main()

    {

    Sampel s1(10);

    Sample s2(15);

    Sample::print(s1);

    Sample::print(s2);

    return 0;

    }


    正确答案:

  • 第3题:

    请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件 main.cpp,其中有类CPolygon(“多边形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。该程序的正确输出结果应为: 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。 include<lostream> {tout<<——<<endl;} class CRectangle:public CPolygon{ CRe&angle(int w,int h):width(w),height(h){} int area(void){return(width *height);} class CTriangle:public CPolygon{ int length;//三角形一边长 int height;//该边上的高 public: CTriangle(int l,int h):length(1),height(h){} //*********found********* int area(void){return(——)/2;} }; int main{ CRectangle rect(4,5); CTriangle trgl(4,5); //*********found********* ______ *ppolyl,* ppoly2; ppolyl=&rect; ppoly2=&trgl; ppolyl->printarea; ppoly2->printarea; retun 0;


    正确答案:

    (1)virtual int area(void)=0;
    (2)area
    (3)length*height
    (4)CPolygon

  • 第4题:

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

    The grade is 3

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

    include<iostream.h>

    class student

    {

    private:

    int grade;

    public:

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

    student(int thegra):(thegra){}

    ~student(){}

    int get_grade(){return grade;}

    };

    void main()

    {

    int thegra=3;

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

    student point=new student(thegra);

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

    cout<<"The grade is"<<point.get_grade()<<endl;

    delete point;

    }


    正确答案:(1)错误:student(int thegra):(thegra){} 正确:student(int thegra):grade(thegra){} (2)错误:student point=new student(thegra) 正确:student*point=new student(thegra); (3)错误:cout"The grade is"point.get_grade()endl; 正确:cout"The grade is"point->get_grade()endl;
    (1)错误:student(int thegra):(thegra){} 正确:student(int thegra):grade(thegra){} (2)错误:student point=new student(thegra) 正确:student*point=new student(thegra); (3)错误:cout"The grade is"point.get_grade()endl; 正确:cout"The grade is"point->get_grade()endl; 解析:(1)主要考查考生对于构造函数使用参数列表初始化数据成员的掌握,可以使用参数列表的形式,也可以在函数内部实现,不过参数赋值的双方都必须出现,本题的错误就在于并没有把参数赋值给数据成员;
    (2)主要考查考生对于使用指针申请动态空间的方法的理解,new运算符申请的空间返回值为指针类型,指针类型的定义是在变量名前加上“*”;
    (3)主要考查考生对于对象指针调用成员函数方法的掌握,必须使用符号“->”,而对象本身使用符号“.”。

  • 第5题:

    使用VC6打开考生文件夹下的工程test41_1,此工程包含一个源程序文件test41_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:

    7

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

    include<iostream.h>

    class myclass

    {

    int a, b;

    public:

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

    int sum(myclass x);

    void set_ab(int i, int j);

    }:

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

    void myclass:set_ab(int i, int j)

    {

    a=i;

    b=j;

    }

    int sum (myclass x)

    {

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

    x.a+x.b;

    }

    void main ( )

    {

    myclass n;

    n.set_ab (3, 4);

    cout <<sum(n)<<endl;

    }


    正确答案:(1) 错误:int sum(myclass x); 正确:friend int sum(myclass x); (2) 错误:void myclass:set_ab(int iint j) 正确:void myclass::set_ab(int iint j) (3) 错误:x.a+x.b; 正确:return x.a+x.b;
    (1) 错误:int sum(myclass x); 正确:friend int sum(myclass x); (2) 错误:void myclass:set_ab(int i,int j) 正确:void myclass::set_ab(int i,int j) (3) 错误:x.a+x.b; 正确:return x.a+x.b; 解析:(1)函数sum中含有对于myclass类的私有数据成员a和b的操作,而普通函数没有这样的权限,所以编译器会报错,只有把sum定义成该类的友元函数,这样根据友元函数可以访问该类的所有元素的规则,就可以正确地实现该函数:
    (2)函数的参数列表只能用于类的构造函数,对于构造函数,参数列表与在函数体内赋值是等价的,但是一般的类的成员函数只能使用函数体内赋值一种方法;
    (3)该函数的返回值为int型,所以计算之后的结果应该使用关键字return返回主函数,return返回值可以使用括号,也可以不使用,后面可以是表达式也可以是变量或者常量。