复数运算

7-1 复数运算 (5 分)
复数是由两个实数分别作为实部和虚部构成的一个复合数,从另一个角度来说复数就是由两个实数构成的有序对,在C语言中适合用结构类型来表示复数。现在要求用结构类型

typedef struct
{
float x;
float y;
} Comp;
及其变量来表示与存储复数,编写程序实现复数的加减法运算。

输入格式:
在一行输入四个用空格分开的实数a1 b1 a2 b2分别表示复数c1 = a1 + b1i和c2 = a2 + b2i

输出格式:
复数的输出应符合数学上关于复数的表示习惯:实部与虚部都为零时只输出一个0.00; 有一个为零时,只输出非零的部分; 虚部为负时,例如3-4i,应输出为3.00-4.00i的形式,不要输出为3.00±4.00i。实部与虚部均保留2位小数,例如3.00-4.00i 输出在两行进行,第一行输出求和的结果,第二行输出求差的结果。

输入样例:
5.00 4.00 3.00 2.00
结尾无空行
输出样例:
8.00+6.00i
2.00+2.00i

#include<iostream>
using namespace std;

struct fs{
    float x;
    float y;
    
};

int main()
{
    fs s1,s2;
    cin>>s1.x>>s1.y>>s2.x>>s2.y;
    float num1=s1.x+s2.x;
    float num2=s1.y+s2.y;
    if(num1==0 && num2==0){
        cout<<"0.00"<<endl;
    }else if(num1==0 || num2==0){
        if(num1==0){
            printf("%.2fi\n",num2);
            
        }else{
            printf("%.2f\n",num1);
        }
    }else{
        if(num2>0){
            printf("%.2f+%.2fi\n",num1,num2);
        }else if(num2<0){
            printf("%.2f%.2fi\n",num1,num2);
        }
    }
    
    float num3=s1.x-s2.x;
    float num4=s1.y-s2.y;
    if(num3==0 && num4==0){
        cout<<"0.00"<<endl;
    }else if(num3==0 || num4==0){
        if(num3==0){
            printf("%.2fi\n",num4);
            
        }else{
            printf("%.2f\n",num3);
        }
    }else{
        if(num4>0){
            printf("%.2f+%.2fi\n",num3,num4);
        }else if(num4<0){
            printf("%.2f%.2fi\n",num3,num4);
        }
    }
}

 

posted @ 2023-05-10 23:13  刘冰宇  阅读(177)  评论(0)    收藏  举报