复数的加减乘除

#include<iostream>
using namespace std;
typedef struct {
double real;
double imag;
} cpxNum;
cpxNum c;
void assign(cpxNum &c, double r, double i); //初始化
void print(cpxNum c);  //打印
cpxNum cplus( cpxNum c1,  cpxNum c2); //加
cpxNum cmilus(cpxNum c1, cpxNum c2);  //减
cpxNum cmultiply( cpxNum c1, cpxNum c2); //乘
cpxNum cdivide(cpxNum c1, cpxNum c2); //除
int main(){
    cpxNum c1, c2;
    double real, imag;
    cout << "请输入第一个复数的实部和虚部: ";
    cin >> real >> imag;
    assign(c1, real, imag);
    cout << "您生成的第一个复数是: " ;
    print(c1);
    cout << "请输入第二个复数的实部和虚部: " ;
    cin >> real >> imag;
    assign(c2, real, imag);
    cout << "您生成的第二个复数是: ";
    print(c2);
    cout << endl;
    cout << "***********复数运算测试*************" << endl;
    cout << "c1 + c2的结果是: ";
    print(cplus(c1, c2));
    cout << "c1 - c2的结果是: ";
    print(cmilus(c1, c2));
    cout << "c1 * c2的结果是: ";
    print(cmultiply(c1, c2));
    cout << "c1 / c2的结果是: ";
    if(c2.real*c2.real+c2.imag*c2.imag == 0) cout << "无法相除" << endl;
    else print(cdivide(c1, c2));
    cout << "***********复数运算测试结束*************" << endl;
    return 0;
}
void assign(cpxNum &c, double r, double i){
    c.real = r;
    c.imag = i;
}
void print(cpxNum c){
    if(c.real != 0) cout << c.real;
    if(c.imag > 0){
        if(c.imag != 1){
            cout << "+" << c.imag << "i" << endl;
        }else{
            cout << "+" << "i" << endl;
        }
    }else if(c.imag < 0){
        if(c.imag != -1){
            cout << c.imag << "i" << endl;
        }else{
             cout << "-i" << endl;
        }
    }else{
        if(c.real == 0) cout << "0" <<endl;
        else cout << endl;
    }
    //cout << c.real << " " << c.imag << endl;

}
cpxNum cplus( cpxNum c1,  cpxNum c2){
    c.real = c1.real + c2.real;
    c.imag = c1.imag + c2.imag;
    return c;
}
cpxNum cmilus(cpxNum c1, cpxNum c2){
    c.real = c1.real - c2.real;
    c.imag = c1.imag - c2.imag;
    return c;
}
cpxNum cmultiply( cpxNum c1, cpxNum c2){
    c.real = c1.real * c2.real - c1.imag * c2.imag;
    c.imag = c1.imag * c2.real + c1.real * c2.imag;
    return c;
}
cpxNum cdivide(cpxNum c1, cpxNum c2){
    c.real = (c1.real*c2.real+c1.imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);
    c.imag = (c1.imag*c2.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);
    return c;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值