有以下程序;#include<iostream>usingnamespacestd;classComplex{public:Complex(doubler=0,doublei=O):re(r),im(i){}doublereal()const{returnre;}doubleimag()const{returnim;}Complexoperator+(Complexc)const{returnComplex(re+C.re,im+C.im);}private:doublere,im;};intmain()

题目

有以下程序;

#include<iostream>

usingnamespacestd;

classComplex

{

public:

Complex(doubler=0,doublei=O):re(r),im(i){}

doublereal()const{returnre;}

doubleimag()const{returnim;}

Complexoperator+(Complexc)const

{returnComplex(re+C.re,im+C.im);}

private:

doublere,im;

};

intmain()

{

Complexa=Complex(1,1)+Complex(5);

cout<<a.real()<<'+'<<a.imag()<<'i'<<endl;

return0;

}

程序执行后的输出结果是( )。

A.6+6i

B.6+1i

C.1+6i

D.1+1i


相似考题
更多“有以下程序; #include&lt;iostream&gt;usingnamespacestd; classComplex{public: Complex(double ”相关问题
  • 第1题:

    阅读下列Java程序和程序说明,将应填入(n)处的字句写在对应栏内。

    【说明】下面的程序先构造Point类,再顺序构造Ball类。由于在类Ball中不能直接存取类Point中的xCoordinate及yCoordinate属性值,Ball中的toString方法调用Point类中的toString方法输出中心点的值。在MovingBall类的toString方法中,super.toString调用父类Ball的toString方法输出类Ball中声明的属性值。

    public class Point

    {

    private double xCoordinate;

    private double yCoordinate;

    public Point 0 }

    public Point(ouble x, double y)

    {

    xCoordinate = x;

    yCoordinate = y;

    }

    public String toString()

    {

    return "( + Double.toString(Coordinate)+ ","

    + Double.toString(Coordinate) + ");

    }

    //other methods

    }

    public class Ball

    {

    (1); //中心点

    private double radius; //半径

    private String colour; ///颜色

    public Ball() { }

    public Ball(double xValue, double yValue, double r)// 具有中心点及半径的构造方法

    {

    center=(2);//调用类Point 中的构造方法

    radius = r;

    }

    public Ball(double xValue, double yValue, double r, String c)

    // 具有中心点、半径及颜色的构造方法

    {

    (3);//调用3个参数的构造方法

    colour = c;

    }

    public String toString()

    {

    return "A ball with center" + center, toString() + ", radius"

    + Double.toString(radius) + ", colour" + colour;

    }

    //other methods

    }

    public class MovingBall. (4)

    {

    private double speed;

    public MovingBall() { }

    public MovingBall(double xValue, double yValue, double r, String e, double s)

    {

    (5);// 调用父类Ball中具有4个参数的构造方法

    speed = s;

    }

    public String toString( )

    { return super, toString( ) + ", speed "+ Double.toString(speed); }

    //other methods

    }

    public class Tester{

    public static void main(String args[]){

    MovingBall mb = new MovingBall(10,20,40,"green",25);

    System.out.println(mb);

    }

    }


    正确答案:(1)private Point center (2)new Point (xValueyValue) (3)this(xValueyValuer) (4)extends Ball (5)super(xValueyValuerc)
    (1)private Point center (2)new Point (xValue,yValue) (3)this(xValue,yValue,r) (4)extends Ball (5)super(xValue,yValue,r,c) 解析:(1)private Point center
    Ball类以Point类的center对象作为私有成员。
    (2)new Point (xValue,yValue)
    用类Point中的构造方法Point构造Point类的center对象。
    (3)this(xValue,yValue,r)
    利用this指针调用本类的3个参数的重载构造方法。
    (4)extends Ball
    MovingBall类由Ball类扩展而来。
    (5)super(xValue,yValue,r,c)
    调用父类Ball中具有4个参数的构造方法:
    Ball(double xValue, double yValue, double r,String c)

  • 第2题:

    ( 13 )有如下复数类的声明,请补充完整。

    class complex{

    double real; // 实部

    double imag; // 虚部

    public:

    complex(double x , double y){

    real=x;

    imag=y;

    }

    perator+(complex c){// 重载加法运算符 “ + ”

    return complex(___________)

    }

    };


    正确答案:

  • 第3题:

    有以下程序include using namespacestd;class Complex{public:Complex (doubler=0, d

    有以下程序 #include <iostream> using namespace std; class Complex { public: Complex (double r=0, double i =0 :re(r) ,im (i) {} double real() const {return re;} double imag() const { return im;} Complex operator + (Complex c} const {return Complex(re+c.re, im+c.im);} privane: double re,im; }; int main { Complex a =Complex (1,1)+Complex(5); cout<<a.real()<<'+'<<a.imag() << 'i' <<endl return 0; } 程序执行后的输出结果是

    A.6+6i

    B.6+1i

    C.1+6i

    D.1+1i


    正确答案:B
    解析:本题考核类与对象、运算符重载。运算符“+”在类Complex中作为成员函数重载,实现两个对象的数据成员的相加。所以main函数中语句“Complexa=Complex(1,1)+Complex(5);”的作用相当于“Complexa(1+5,1);”即对象a的数据成员re的值为6,imag的值为1,所以输出为6+1i。

  • 第4题:

    有以下程序: #include<iostream> usingnamespacestd; classA{ public: A( ){cout<<"A";} }; classB{public:B( ){cout<<"B";}}; classC:publicA{ Bb; public: C( ){cout<<"C";} }; intmain( ){Cobj;return0;} 执行后的输出结果是( )。

    A.CBA

    B.BAC

    C.ACB

    D.ABC


    正确答案:D
    D。【解析】本题考查的是类的继承和派生。系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化,然后对派生类中的新增成员初始化。

  • 第5题:

    阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。

    [说明]

    本程序的功能是给公司的员工Tom,Jack,Green增加薪水。三人的职位分别是programmer, Manager,CEO。

    程序由6个类组成:WorkerTest是主类,programmer,Manager,CEO三个类,薪水增加的规则是 programmer的涨幅是5%;Manager的是10%;CEO也是Manager,但是它除了有Manager的涨幅,还有1000元的bonus。接口SalaryRaise提供了一个增加薪水的方法raise()。

    [java程序]

    public class WorkerTest {

    public WorkerTest( ) {}

    public static void main( String[] args) {

    Programmer programmer = new Programmer( "Tom" ,3000);

    Manager manager = new Manager( "Jack" ,4000);

    CEO ceo = new CEO( "Green" ,4000);

    Worker [] worker = new Worker[3];

    programmer, raise( );

    manager, raise( );

    ceo. raise( );

    worker[0] = programmer;

    worker [1] = manager;

    worker[2] = ceo;

    for ( int i = 0 ;i < worker, length; i + + ) {

    System. out. prinfln (" Name:" + worker [i]. getName ( ) +" \ tSalary:" + worker [i]. getSalary ());

    public interface SalaryRaise { void raise( ); }

    public class Worker {

    public String name;

    public double (1);

    public Worker( ) {}

    public String getName( ) {return name;}

    public void setName( String name) {this. name = name;}

    public double getSalary( ) {return salary;}

    public void setSalary(double salary) { this. salary = salary; }

    }

    public class Programmer extends Worker implements (2) {

    public Programmer( ) {}

    public void raise( ) {

    double pets=0.05;

    double sala = this. getSalary( ) * (1 + pers);

    this. setSalary (sala);

    public Programmer( Siring name, double salary) t

    this. name = name;

    this. salary = salary;

    public class Manager extends (3) implements SalaryRaise {

    public Manager( ) { }

    public Manager(String name, double salary) {

    this. name = name;

    this. salary = salary;

    }

    public void raise( ) {

    double pets = 0.1;

    double sala = this. getSalary() * (1 + pers);

    this. setSalary(sala);

    }

    }

    public class CEO extends Manager implements SalaryRaise {

    public CEO() {}

    public CEO( String name,double salary) {

    this. name = name;

    this. salary = salary;

    }

    public void raise( ) {

    double bonus = 1000;

    (4);

    double sala = this. getSalary( );

    (5);

    this. setSalary(sala);

    }

    }


    正确答案:(1)salary (2)SalaryRalse (3)Worker (4) super. raise() (5)sala+=bonus及其等效形式
    (1)salary (2)SalaryRalse (3)Worker (4) super. raise() (5)sala+=bonus及其等效形式 解析:(1)从Worker这个类的结构来看,它有两个属性ufinle和salary,因此这里应该填salary;
    (2)~(3):很显然Programmer类和Manager类继承于 Worker类和SalaryRaise接口。
    (4)~(5):CEO类继承于Manager类,而根据题意, CEO除了有Managor的涨幅,还有1000元的bonus。所以,CEO薪水的涨幅可以使用基类相同的方法super. raise(),然后再加上奖金sala+=bonus即可。

  • 第6题:

    下列是定义一个接口ITF的程序,在横线处应填入的选项是( )。 publid interface ITF { public static final double PI=3.14; public______double area(double a,double B) ; }

    A.interface

    B.static

    C.final

    D.abstract


    正确答案:D
    解析:接口中所有的方法都是abstract属性的,即在父类中不定义方法体,而在子类中进行覆盖父类的方法。接口中的变量都必须是staticfinal属性。

  • 第7题:

    下列程序的执行结果为【 】。include class Point{public:Point(double i, double j)

    下列程序的执行结果为【 】。

    include <iostream. h>

    class Point

    {

    public:

    Point(double i, double j) { x=i; y=j;}

    double Area() const { return 0.0;}

    private:

    double x, y;

    };

    class Rectangle: public Point

    {

    public:

    Rectangle(double i, double j, double k, double 1)

    double Area() const {return w * h;}

    private:

    double w, h;

    };

    Rectangle: :Rectangle(double i, double j, double k. double 1): Point(i,j).

    {

    w=k, h=1

    }

    void fun(Point &s)

    {

    cout<<s. Area()<<end1;

    }

    void main( )

    {

    Rectangle rec(3.0, 5.2, 15.0. 25.0);

    fun(rec)

    }


    正确答案:×
    0 解析:注意本题不同于基类的指针指向派生类对象。Fun函数的形参是Point基类的引用。在可以用基类对象的地方,均可以用派生类替代,完成基类的行为。反之,在使用派生类对象的地方却不能用基类对象代替,这是因为派生类中的某些行为在基类对象中是不存在的。本题调用的是Point类对象的面积函数,其值永远为0。

  • 第8题:

    在下列程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD( )。 #include<iostream> usingnamespacestd; classA { public:A(){cout<<A;} }; classB: { public:B(){cout<<B;} }; classC:virtualpublicA { public:C(){cout<<C;} }; classD:publicB,publicD { public:D(){cout<<D;} }; voidmain(){D04;}

    A.publicA

    B.privateA

    C.protectedA

    D.virtualpublicA


    正确答案:D
    D。【解析】由主函数main入手,定义了类D对象obi。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为ABCD,依次为类A、类B、类C、类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。

  • 第9题:

    有以下程序:includeusing namespace std;class sample{private:int x;public:sample(

    有以下程序: #include<iostream> using namespace std; class sample { private: int x; public: sample(int A) { x=a; friend double square(sample s); }; double square(sample s) { return S.X*S.K; } int main() { sa

    A.20

    B.30

    C.900

    D.400


    正确答案:C
    解析: 本题考查友元函数的应用。程序中函数square是类sample的一个友元函数,它可以直接访问类sam- pie的所有成员。它的功能是返回类sample的私有数据成员x的平方。所以程序的执行结果是900。

  • 第10题:

    有下列程序:includeusing namespace std;class Complex{double re,im;public:Complex

    有下列程序: #include<iostream> using namespace std; class Complex { double re,im; public: Complex(double r,double i):re(r),im(i){} double real()const{retum re;} double image()const{return im;} Complex& operator+=(Complex A) { r

    A.(1,-2)

    B.(2,3)

    C.(3,5)

    D.(3,1)


    正确答案:C
    解析: 此题考查的是“+”运算符的重载。重载后的“+”运算符的功能是对参数的两部分分别进行加法运算,然后返回复数值。所以x+=y使得对象x(1,2)与y(2,3)的re和im分别相加,最后输出结果(3,5)。

  • 第11题:

    有如下程序: include using namespace std; class Complex { dou

    有如下程序: #include<iostream> using namespace std; class Complex { double re, im; public: Complex(double r, double i): re(r), im(i) {} double real() const { return re; } double image() const { return im; } Complex& operator+= (Complex a) { re += a.re; im += a.im; return *this; } }; ostream& operator<<(ostream& s, const Complex& z) { remm s<<'('<<z.real()<<','<<z.image()<<')'; } int main() { Complex x(1,-2), y(2,3); cout<<(x+=y)<<endl; return 0; } 执行这个程序的输出结果是

    A.(1,-2)

    B.(2,3)

    C.(3,5)

    D.(3,1)


    正确答案:D
    解析:本题考查了运算符重载的综合应用。解本题的关键是要弄明白cout(x+=y)endl;语句是怎么执行的。因为x和y都是Complex类的对象,而Complex类中已经重载了仁运算符,所以表达式x+=y就等价于x.operator+=(y)。该函数将y中的re、 im成员累加到x的对应成员之上,并返回x自身。故表达式(x+=y)返回的值是一个 Complex类对象,其内容为(3,1)。因为运算符的结合性是从左至右的,所以现在要计算的表达式是cout(x+=y),cout是C++语言中预定义的输出流类ostream的对象,所以运算符两边的分量类型正好符合上面的重载函数,故其等价于函数调用operator(cout,(x+=y))。在的重载函数中输出结果是(3,1),最后函数返回并输出一个换行符endl,程序结束。故应该选择D。

  • 第12题:

    在接口中以下哪条定义是正确的?()

    • A、void methoda();
    • B、public double methoda();
    • C、public final double methoda();
    • D、static void methoda(double d1);
    • E、protected void methoda(double d1);

    正确答案:A,B

  • 第13题:

    有以下程序include using namespace std;class Complex{public: Complex(double r=O,

    有以下程序 #include<iostream> using namespace std; class Complex { public: Complex(double r=O,double i=0):re(r),im(i){} double real() const {return re;} double imag()const {return im;} Complex operator +(Complex C) const {return Complex (re+c.re,im+c.im);} private: double re,im; }; int main() { Complex a=Complex(1,1)+Complex (5); cout<<a.real()<<'+'<<a.imag()<<'i'<<endl; retum 0; } 程序执行后的输出结果是

    A.6+6i

    B.6+1i

    C.1+6i

    D.1+1i


    正确答案:B
    解析:本题考核类与对象、运算符重载。运算符“+”在类Complex中作为成员函数重载,实现两个对象的数据成员的相加。所以main函数中语句“Complex a=Complex(1,1)+Complex(5);”的作用相当于“Complex a(1+5,1);”即对象a的数据成员re的值为6,imag的值为1,所以输出为6+1i。

  • 第14题:

    下列是定义一个接口ITF的程序,在横线处应填入的选项是 ( )public interface ITF{public static final double PI=3.14,public ______ double area(double a,double b);}

    A.interfaee

    B.static

    C.final

    D.abstract


    正确答案:D
    解析:该题考查的是接口的定义。Java中的接口与类相似,但是接口的成员变量应该全部都是静态的和最终的,并且接口中的方法也应该全是抽象的。所以,在本题的定义中,把接口的方法定义为抽象的,应该用选项D。

  • 第15题:

    有以下程序include using namespace std;class Complex{public:Complex(double r=0,d

    有以下程序#include <iostream>using namespace std;class Complex{public: Complex(double r=0,double i=0):re(r),im(i){ double real() const {return re;} double imag() const { return im; } Complex operator+(Complex c) const {return Complex(re+c.re,im+c.im);}private: double re,im;};int main(){ Complex a =Complex(1,1)+ Complex(5); cout<<a.real()<<'+'<<a.imag()<<'i'<<end1; retura 0;}

    A.6+6i

    B.6+1i

    C.1+6i

    D.1+1i


    正确答案:B

  • 第16题:

    有如下程序: include using namespace std; class Complex { double re, im, public

    有如下程序: #include <iostream> using namespace std; class Complex { double re, im, public: Complex(double r, double i): re(r), im(i) {} double real() const {return re;} double image() const {return im,} Complex& operator +=(Complex a) { re +=a.re; im +=a.im; return *this; } }; ostream& operator << (ostream& s, const Complex& z) { return s<<'('<<z.real()<<','<<z.image()<<')'; } int main() { Complex x(1,-2), y(2,3); cout << (x+=y) << endl; return 0; } 执行这个程序的输出结果是( )。

    A.(1,-2)

    B.(2,3)

    C.(3,5)

    D.(3,1)


    正确答案:D

  • 第17题:

    有如下程序: include using namespace std; class Complex { double

    有如下程序: #include<iostream> using namespace std; class Complex { double re,im; public: Complex(double r,double i):re(r),im(i){} double real()const{return re;} double image()const{return im;} Complex& operator+=(Complex a) { re+=a.re; im+=a.im; return *this; } }; ostream& operator<<(ostream& s,const Complex& z) { return s<<'('<<z.real()<<','<<z.image()<<')'; } int main() { Complex x(1,2),y(2,3); tout<<(x+=y)<<endl; return 0; } 执行这个程序的输出结果是( )。

    A.(1,-2)

    B.(2,3)

    C.(3,5)

    D.(3,1)


    正确答案:C
    解析:此题考查的是“+”运算符的重载。重载后的“+”运算符的功能是对参数的两部分分别进行加法运算,然后返回复数值。所以x+=y使得对象x(1,2)与y(2,3)的re和im分别相加,最后输出结果(3,5)。

  • 第18题:

    有以下程序,输出结果()。includeusing namespace std;class Complex{public:Complex(d

    有以下程序,输出结果( )。 #include<iostream> using namespace std; class Complex { public: Complex(double r=0,double i=0):re(r),im(i){} double real()const{return re;} double imagoconst{return im;} Complex operator+(Complex C) const {return Complex(re+c.re,im+c.im);} private: double re,im; }; int main() { Complex a=Complex(1,1)+Complex(5); cout<<a.real()<<'+'<<a.imag()<<'i'<<end1; return 0; }

    A.6+i

    B.2i+5

    C.6+1i

    D.1i+5


    正确答案:C
    解析:由主函数入手,调用“Complex a=Complex(1,1)+Complex(5);”,实际是“Complex a=Complex(1,1)+Complex(5,0);”,调用“return Complex(re+c.re,im+c.im);”结果为:6+1i。

  • 第19题:

    若有以下程序: #include<iostream> usingnamespacestd; classBase {public: Base() {x=0;} intx;}; classDerivedl:virtualpublicBase {public: Derivedl() {x=10;}}; classDerived2:virtua11publicBase {public: Derived2() {x=20;}}; classDerived:publicDerivedl,protectedDerived2{};intmain() {Derivedobj; cout<<obj.x<<endl; return0;} 该程序运行后的输出结果是( )。

    A.20

    B.30

    C.10

    D.0


    正确答案:A
    A。【解析】本题考查虚基类的应用。虽然Derivedl和Derived2都是由共同的基类x派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员x只存在一份副本,不论在类Derivedl中修改,还是在Derived2中修改,都是直接对这唯一副本进行操作。本题程序执行语句“Derivedobj;”时.就会先调虚基类Base的构造函数,使得X=0,然后执行类Derivedl的构造函数使得x=10,再执行类Derived2的构造函数,使得x=20。最后输出x的值为20。

  • 第20题:

    有以下程序; #include<iostream> usingnamespacestd; classComplex { public: Complex(doubler=0,doublei=O):re(r),im(i){} doublereal()const{returnre;} doubleimag()const{returnim;} Complexoperator+(Complexc)const {returnComplex(re+C.re,im+C.im);} private: doublere,im; }; intmain() { Complexa=Complex(1,1)+Complex(5); cout<<a.real()<<+<<a.imag()<<i<<endl; return0; } 程序执行后的输出结果是( )。

    A.6+6i

    B.6+1i

    C.1+6i

    D.1+1i


    正确答案:B
    B。【解析】运算符+在类Complex中作为成员函数重载,实现两个对象的数据成员的相加。所以main函数中语句Complexa=Complex(1,1)+Complex(5);的作用相当于Complexa(1+5,1);,即对象a的数据成员re的值为6,imag的值为1,所以输出为6+1i。

  • 第21题:

    有以下程序:includeincludeusing namespace std; class point{private:double

    有以下程序: #include<iostream> #include<math> using namespace std; class point { private: double x; double y; public: point(double a,double B) { x=a; y=b; } friend double distance (point a,point B) ;

    A.1

    B.5

    C.4

    D.6


    正确答案:C
    解析:本题考核友元函数的应用。分析程序:类point中定义了两个私有成员x和y,以及一个友元函数distance。从而,函数distance可以访问类point中的任何成员。在函数distance中,返回值为sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))。由此可知,函数distance的功能是计算a、b两点之间的距离。在主函数main中,先定义两点:p1(1,2)和p2(5,2)。然后调用函数distance计算两点之间的距离为4,所以程序最后输出为4。

  • 第22题:

    有以下程序include using namespace std; class sample { private: int x; public:

    有以下程序 #include <iostream> using namespace std; class sample { private: int x; public: sample(int a) { x=a; } friend double square(sample s); }; double square(sample s) { return s.x*s.x; } int main() { sample s1 (20),s2(30); cout<<square(s2)<<end1; return 0; } 执行结果是

    A.20

    B.30

    C.900

    D.400


    正确答案:C
    解析:本题考核友元函数的应用。程序中函数square是类sample的一个友元函数,它可以直接访问类sample的所有成员。它的功能是返回类sample的私有数据成员x的平方。所以程序的执行结果是:900。注意:友元函数不是类的成员函数,在类外定义时不要加上类名及其作用域运算符(::)。友元函数的调用与一般函数的调用的方式和原理一致,可以在程序的任何地方调用它。

  • 第23题:

    有以下程序:includeusing namespace std;class Complex{public:Complex(dOuble r=0,d

    有以下程序: #include<iostream> using namespace std; class Complex { public: Complex(dOuble r=0,dOuble i=0):re(r),im(i){} doublereal()const{return re;} doubleimag()const{return im;} Complex operator+(Complex c)const {return Complex

    A.6+6i

    B.6+1i

    C.1+6i

    D.1+1i


    正确答案:B
    解析: 运算符”+”在类Complex中作为成员函数重载,实现两个对象的数据成员的相加。所以main函数中语句”Complexa=Complex(1,1)+Complex(5);”的作用相当于”Complexa(1+5,1);”即对象a的数据成员re的值为6,imag的值为l,所以输出为6+1i。