编写一个完整的C#应用程序使用复数类Complex,并验证两个复数1+2i和3+4i相加产生一个新的复数4+6i。复数类Complex必须满足如下要求:
(1)复数类Complex的属性有:
RealPart: int型,代表复数的实数部分
ImaginPart: int型,代表复数的虚数部分
(2)复数类Complex的方法有:
Complex();构造函数,将复数的实部和虚部都置为0
Complex(int r,int i):构造函数,形参r为实部的初值,i为虚部的初值。
Complex complexAdd(Complex a): 将当前复数对象与形参复数对象相加,所得结果仍然是一个复数对象,返回给此方法的调用者。
Void PrintComplex();把当前复数对象的实部,虚部组合成a+bi的字符串形式并打印出来,其中,a 和 b 分别为实部和虚部的数据。我写的程序是这样的:
using System;
namespace _1515
{ class Complex
{
protected int RealPart,ImaginPart;
[STAThread]
public Complex()
{
RealPart=0;
ImaginPart=0;
}
public Complex(int r,int i)
{
RealPart=r;
ImaginPart=i;
}
public Complex complexAdd(Complex a)
{
return RealPart=+r;
return ImaginPart=+i;
}
Void PrintComplex()
{
Console.WriteLine("{0}i+{1}",RealPart,ImaginPart);
}
static void Main(string[] args)
{
Complex f1=new Complex(1,2);
Complex f2=new Complex(3,4);
Console.WriteLine("{0}i+{1}",f1.PrintComplex);
Console.WriteLine("{0}i+{1}",f2.PrintComplex);
Console.WriteLine("{0}i+{1}",f1.complexAdd+f2.complexAdd);
}
}
}

解决方案 »

  1.   

    complex类namespace testApplication1
    {
    /// <summary>
    /// Complex
    /// </summary>
    public class Complex
    {
    private int realPart = 0;
    private int imaginPart = 0; public int RealPart
    {
    get
    {
    return realPart;
    }
    set
    {
    realPart = value;
    }
    } public int ImaginPart
    {
    get
    {
    return imaginPart;
    }
    set
    {
    imaginPart = value;
    }
    }
    public Complex() : this(0,0)
    { }
    public Complex(int r,int i)
    {
    RealPart = r;
    ImaginPart = i;
    }
    public Complex complexAdd(Complex a)
    {
    realPart += a.RealPart;
    imaginPart += a.ImaginPart;
    return this;
    }
    public string PrintComplex()
    {
    return realPart.ToString() + "+" + imaginPart.ToString() + "i";
    }
    }
    }
    调用
    Complex f0=new Complex();
    Complex f1=new Complex(1,2);
    Complex f2=new Complex(3,4);
    Console.WriteLine(f1.PrintComplex());
    Console.WriteLine(f2.PrintComplex());
    Complex f3 = f1.complexAdd(f2);
    Console.WriteLine(f3.PrintComplex());
    Complex f4 = f0.complexAdd(f3);
    Console.WriteLine(f4.PrintComplex());
      

  2.   

    namespace testApplication1
    {
    /// <summary>
    /// Complex
    /// </summary>
    public class Complex
    {
    private int realPart = 0;
    private int imaginPart = 0;public int RealPart
    {
    get
    {
    return realPart;
    }
    set
    {
    realPart = value;
    }
    }public int ImaginPart
    {
    get
    {
    return imaginPart;
    }
    set
    {
    imaginPart = value;
    }
    }
    public Complex() : this(0,0)
    {}
    public Complex(int r,int i)
    {
    RealPart = r;
    ImaginPart = i;
    }
    public Complex complexAdd(Complex a)
    {
    realPart += a.RealPart;
    imaginPart += a.ImaginPart;
    return this;
    }
    public string PrintComplex()
    {
    return realPart.ToString() + "+" + imaginPart.ToString() + "i";
    }
    }
    }
    调用
    Complex f0=new Complex();
    Complex f1=new Complex(1,2);
    Complex f2=new Complex(3,4);
    Console.WriteLine(f1.PrintComplex());
    Console.WriteLine(f2.PrintComplex());
    Complex f3 = f1.complexAdd(f2);
    Console.WriteLine(f3.PrintComplex());
    Complex f4 = f0.complexAdd(f3);
    Console.WriteLine(f4.PrintComplex());
      

  3.   

    楼主的这个方法有问题,
    public Complex complexAdd(Complex a)
    {
    return RealPart=+r;
    return ImaginPart=+i;
    }
    怎么可以return两个呢,应该编译都不会通过吧!
    而且r和i是哪里来得?
    应该这样写吧:
    public Complex complexAdd(Complex a) {
    this.RealPart += a.RealPart;
    this.ImaginPart += a.ImaginPart;
    return this;
    }
      

  4.   

    好象不要用到重载,就用到了属性;如果RealPart和ImaginPart不需要封装,直接用public也可以