关于#c语言#的问题:两个复数分别是1.00+1.00i2.00+2.00i复数和是3.00+3.00i复数差是-1.00-1.00i复数积是0.00+4.00i复数商是0.50+0.00i

计算两个复数的和、差、积、商。

定义一个可以表示复数的结构体类型。
利用子函数分别实现和、差、积、商的计算。
在主函数输入数据。

输入:
1.0 1.0
2.0 2.0

则输出:
两个复数分别是
1.00+1.00i
2.00+2.00i
复数和是3.00+3.00i
复数差是-1.00-1.00i
复数积是0.00+4.00i
复数商是0.50+0.00i


#include<stdio.h>
#include <math.h>
/*复数结构体*/
struct MyComplex 
{
    double re;
    double im;
}ca,cb;
 
void Cadd(struct MyComplex x,struct MyComplex y)
{
    struct MyComplex z;
    z.re =x.re +y.re ;
    z.im =x.im +y.im ;
    printf("复数和是%.2lf+%.2lfi\n",z.re,z.im);
}
void Csub(struct MyComplex x,struct MyComplex y)
{
    struct MyComplex z;
    z.re =x.re -y.re ;
    z.im =x.im -y.im ;
    printf("复数差是%.2lf+%.2lfi\n",z.re,z.im);
}
void Cmul(struct MyComplex x,struct MyComplex y)
{
    struct MyComplex z;
    z.re =(x.re *y.re)-(x.im *y.im ) ;
    z.im =(x.re *y.im)+(x.im *y.re ) ;
    printf("复数积是%.2lf+%.2lfi\n",z.re,z.im);
}
void Cdiv(struct MyComplex x,struct MyComplex y)
{
    struct MyComplex z;
    double z0=y.re*y.re+y.im *y.im;
    z.re =((x.re *y.re)+(x.im *y.im))/z0;
    z.im =-((x.re *y.im)+(x.im *y.re))/z0;
    printf("复数商是%.2lf+%.2lfi\n",z.re,z.im);
}

int main(){
    double re,im;
    scanf("%lf %lf",&re,&im);
    ca.re = re;
    ca.im = im;
    scanf("%lf %lf",&re,&im);
    cb.re = re;
    cb.im = im;
    printf("两个复数分别是\n");
    printf("%.2lf+%.2lfi\n", ca.re, ca.im);
    printf("%.2lf+%.2lfi\n", cb.re, cb.im);
    Cadd(ca, cb);
    Csub(ca, cb);
    Cmul(ca, cb);
    Cdiv(ca, cb);
    return 0;
}
#include <stdio.h> 
typedef struct {
    float s;
    float x;
} NP;

NP npadd(NP a,NP b){
    NP rt;
    rt.s=a.s+b.s;
    rt.x=a.x+b.x;
    return rt;
}

NP npsub(NP a,NP b){
    NP rt;
    rt.s=a.s-b.s;
    rt.x=a.x-b.x;
    return rt;
}

NP npmult(NP a,NP b){
    NP rt;
    rt.s=a.s*b.s-a.x*b.x;
    rt.x=a.s*b.x+a.x*b.s;
    return rt;
}

NP npdiv(NP a,NP b){
    NP rt;
    if(b.s!=0 && b.x!=0){
        rt.s=(a.s*b.s+a.x*b.x)/(b.s*b.s+b.x*b.x);
        rt.x=(b.s*a.x-a.s*b.x)/(b.s*b.s+b.x*b.x);
    }
    return rt;
}
int main(void){
    NP a,b,x;
    scanf("%f %f",&(a.s),&(a.x));
    scanf("%f %f",&(b.s),&(b.x));
    x=npadd(a,b);
    printf("复数和是%.2f%+.2fi\n",x.s,x.x);
    x=npsub(a,b);
    printf("复数差是%.2f%+.2fi\n",x.s,x.x);
    x=npmult(a,b);
    printf("复数积是%.2f%+.2fi\n",x.s,x.x);
    x=npdiv(a,b);
    printf("复数商是%.2f%+.2fi\n",x.s,x.x);
}