课堂小练习: 设计、定义并实现Complex类

【实验结论】

#Complex.h

#ifndef HEADER_Complex_H
#define HEADER_Complex_H
#include<cmath>
#include<iostream>
using namespace std;
class Complex
{
    public:
        Complex(double real0=0,double imaginary0=0);
        Complex(Complex &p);
        void add(Complex a);
        void show();
        double mod();
    private:
        double real,imaginary;
};
 Complex::Complex(double real0,double imaginary0):real(real0),imaginary(imaginary0)
 {}
 Complex::Complex(Complex &p):real(p.real),imaginary(p.imaginary)
 {}
void Complex::add(Complex a)
{
    real+=a.real;
    imaginary+=a.imaginary;
}
 void Complex::show()
 {
     cout<<real<<"+"<<imaginary<<"i"<<endl;
 }
double Complex::mod()
 {
     return sqrt(real*real+imaginary*imaginary);
 }
 #endif

#main

#include<iostream>
#include"Complex.h"
using namespace std;
int main()
{
    Complex c1(3,5);
    Complex c2(4.5);
    Complex c3(c1);
    c1.add(c2);
    c1.show();
    cout<<c1.mod();
    return 0;
}

[运行结果]

 

【实验总结】

本来是想着用结构体定义类的,但是发现main函数里给出的输入比较适合用普通类,用结构体的话定义成员函数时大概想了一下,会比较麻烦,所以最后就没用结构体了。

还有一个小问题,就是“Complex c2=4.5”Dev-C++编译出来也显示了错误(如下图)

错误显示“对于'Complex::Complex(Complex)'即复制构造函数没有匹配的变量”。之后参照上面从c1的定义,直接将c2写成了c2(4.5),编译之后就对了。但是后来巧合之下把复制构造函数删了之后试了一下,发现“Complex c2=4.5"是可以运行的,在查过了CSDN和博客园之后都没有结果,嗯,个人感觉,可能是因为系统无法判断4.5是给复制构造函数的还是构造函数的,嗯,,,如果知道的话可以告诉我一下吗。

嗯,上面那个问题再补充一下,我将构造函数的初值去掉之后,再定义了一个构造函数Complex(double real0)/Complex(double real0=0),如果删去复制构造函数是可以的实现“Complex=4.5”的,但是加上复制构造函数依旧是不行的,所以我还是觉得是系统无法判断4.5是给复制构造函数还是构造函数。

 

【评论地址】

https://www.cnblogs.com/xiaobailong123/p/10631549.html
https://www.cnblogs.com/xtn-0326/p/10631725.html
https://www.cnblogs.com/Tiger-Hu22/p/10631879.html

 

转载于:https://www.cnblogs.com/bzwy/p/10627992.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python中定义了一个复数complex,可以通过使用该创建复数对象并进行复数相加运算。例如以下代码: ```python c1 = complex(3, 4) # 创建一个复数3+4j c2 = complex(1, 2) # 创建一个复数1+2j c3 = c1 + c2 # 复数相加 print(c3) # 输出结果为(4+6j) ``` 其中,`complex`的参数分别为实部和虚部。可以通过实部和虚部属性(`real`和`imag`)访问复数的实部和虚部。 ### 回答2: Python是一种高级编程语言,它提供了丰富的库和工具,方便程序员快速地进行开发和实现。在Python中,我们可以使用定义自己的数据型,其中包括复数。 复数是由一个实数和一个虚数构成的数,例如2 + 3i,其中2是实数部分,3i是虚数部分,i是虚数单位。在Python中,可以使用内置的complex函数来创建复数对象,如下所示: ```python z = complex(2, 3) print(z) # 输出:(2+3j) ``` 创建一个复数complex,需要定义实数和虚数两个成员变量,并提供构造函数来初始化这两个成员变量,如下所示: ```python class Complex: def __init__(self, real=0, imag=0): self.real = real self.imag = imag ``` 在上面的代码中,我们使用了构造函数__init__来初始化实数和虚数。real和imag是实数和虚数的成员变量,它们的初始值都为0。 然后,我们需要实现复数相加的功能。在复数相加时,需要将两个复数的实数部分和虚数部分分别相加,如下所示: ```python class Complex: def __init__(self, real=0, imag=0): self.real = real self.imag = imag def __add__(self, other): real = self.real + other.real imag = self.imag + other.imag return Complex(real, imag) ``` 在上面的代码中,我们定义了一个__add__方法来实现复数相加。它接受其他一个复数对象other作为参数,将两个复数的实数和虚数相加,并返回一个新的复数对象。 现在,我们可以创建两个复数对象,然后使用加号操作符进行相加,如下所示: ```python z1 = Complex(2, 3) z2 = Complex(4, 5) z3 = z1 + z2 print(z3.real, z3.imag) # 输出:6 8 ``` 在上面的代码中,我们使用加号操作符进行复数相加,然后输出结果。 综上所述,我们可以使用Python定义一个复数complex,然后实现复数相加的功能。在实现过程中,需要定义实数和虚数的成员变量,提供构造函数和__add__方法来初始化成员变量和实现复数相加。 ### 回答3: 复数是数学中的一种数形结合物,它由实部和虚部组成。在计算机编程中,我们可以定义一个复数来表示复数,并实现复数相加。 Python 中已经内置了复数型,我们可以通过 complex(real, imag) 函数创建一个复数对象。其中 real 表示实部,imag 表示虚部。例如: ```python z = complex(2, 3) print(z) # 输出 (2 + 3j) ``` 如果我们要自定义一个复数,可以用 class 关键字定义: ```python class Complex: def __init__(self, real, imag): self.real = real self.imag = imag def __add__(self, other): return Complex(self.real + other.real, self.imag + other.imag) def __repr__(self): return '(%s + %sj)' % (self.real, self.imag) ``` 在这个中,我们通过 __init__ 方法定义了实部和虚部,并通过 __add__ 方法实现了两个复数相加。__repr__ 方法用于返回对象的字符串表示。 我们可以使用这个创建两个复数对象并相加: ```python a = Complex(2, 3) b = Complex(4, 5) c = a + b print(c) # 输出 (6 + 8j) ``` 这样,我们就成功定义了一个复数实现了复数相加的操作。在实际编程中,我们可以将复数和复数运算应用于各种计算场景,具有很强的实用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值