使用VC6打开考生文件夹下的工程test38_3。此工程包含一个test38_3.cpp,其中定义了类complex,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)添加类complex的无参数的构造函数的定义,将私有成员real和imag都初始化为0。请在注释“//**1**”之后添加适当的语句。(2)添加类complex的带两个参数的重载构造函数,两个参数r和i都是double类型,要求将r赋值给私有成员real, i赋值给私有成员imag,同时允许调用时参数i可是省略,请在注释“//

题目

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

(1)添加类complex的无参数的构造函数的定义,将私有成员real和imag都初始化为0。请在注释“//**1**”之后添加适当的语句。

(2)添加类complex的带两个参数的重载构造函数,两个参数r和i都是double类型,要求将r赋值给私有成员real, i赋值给私有成员imag,同时允许调用时参数i可是省略,请在注释“//**2**”之后添加适当的语句。

(3)完成类complex重载加法函数的定义,该函数直接返回一个类complex的对象,同时把参数对象c的实部real和虚部imag分别与当前对象对应部分分别相加,请在注释“//**3**”之后添加适当的语句。

(4)完成类complex的友元函数print的定义,使其以格式“real+imagi”输出,请在注释“//**4**”之后添加适当的语句。

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

include <iostream.h>

class complex

{

public:

// ** 1 **

// ** 2 **

{

real=r;imag=i;

}

complex operator+(complex & c);

friend void print(complex &c);

private:

double real,imag;

};

complex complex::operator+(complex & c)

{

// ** 3 **

}

// ** 4 **

cout<<c.real<<"+"<<c.imag<<"i"<<endl;

}

void main( )

{

complex c1(2.0,3.0),c2(4.0,-2.0),c3;

c3=c1+c2;

print(c3);

c3=c3+complex(3.5);

print(c3);

}


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

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

    }


    正确答案:

  • 第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打开考生文件夹下的工程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;

    }


    正确答案:

  • 第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打开考生文件夹下的工程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;

    }


    正确答案: