用结构体类型实现复数的加、减、乘、除运算,每种运算用函数完成

任务描述
本关任务:编程实现两个复数的加、减、乘、除运算。

相关知识
用函数来实现复数之间的加减乘除,有两种方法返回计算结果:

使用结构体指针作函数的形参,将函数的计算结果返回;
将函数的计算结果作为函数返回值返回。
编程要求
根据提示,在右侧编辑器补充代码,实现两个复数的加、减、乘、除运算,将函数的计算结果作为函数返回值返回,复数之间的加法、减法、乘法和除法分别用不用的函数来实现。具体要求如下:

函数 input() 实现复数的输入;
函数 output() 实现复数的输出;
函数 add()、sub()、mul()、div()分别实现复数的加减乘除;
函数 main() 定义变量并分别调用以上子函数。
测试说明
平台会对你编写的代码进行测试。

测试输入:
1.2 3.4 - -5.6 -7.9

输入说明:输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔。

预期输出:
(1.2+3.4i) - (-5.6-7.9i) = (-6.8+11.3i)

输出说明:输出时按(a+bi)的格式在屏幕上打印结果,输出时 a、b 都保留一位小数。注意考虑特殊情况,无法计算时输出字符串"error"。

测试输入:
1.2 3.4 --5.6 -7.9
预期输出:
(1.2+3.4i) - (-5.6-7.9i) = (6.8+11.3i)

开始你的任务吧,祝你成功!

#include
typedef struct complex
{
    float real;
    float imag;
}COMPLEX;
void input(COMPLEX *s);
void output(COMPLEX s);
COMPLEX add(COMPLEX str1,COMPLEX str2);
COMPLEX sub(COMPLEX str1,COMPLEX str2);
COMPLEX mul(COMPLEX str1,COMPLEX str2);
COMPLEX div(COMPLEX str1,COMPLEX str2);
/********** Begin **********/
int main()
{
    COMPLEX str,str1,str2;
    char ch;
    input(&str1);    
    scanf(" %c",&ch);
    input(&str2);
    switch(ch)
    {
    case '+':
        str = add(str1,str2);
        output(str1);
        printf(" %c ",ch);
        output(str2);
        printf(" = ");
        output(str);
      printf("\n");
        break;
    case '-':
        str = sub(str1,str2);
        output(str1);
        printf(" %c ",ch);
        output(str2);
        printf(" = ");
        output(str);
     printf("\n");
        break;
    case '*':
        str = mul(str1,str2);
        output(str1);
        printf(" %c ",ch);
        output(str2);
        printf(" = ");
        output(str);
     printf("\n");
        break;
    case '/':
        str = div(str1,str2);
        output(str1);
        printf(" %c ",ch);
        output(str2);
        printf(" = ");
        output(str);
     printf("\n");
     break;
    default:
        printf("error\n");
        break;
    }
    return 0;
    
}
void input(COMPLEX *s)
{
    scanf("%f%f",&s->real,&s->imag);
}
void output(COMPLEX s)
{
    if(s.imag>=0)
    {
        printf("(%0.1f+%0.1fi)",s.real,s.imag);
    }
    else
    {
        printf("(%0.1f%0.1fi)",s.real,s.imag);
    }
}
COMPLEX add(COMPLEX str1,COMPLEX str2)
{ 
    COMPLEX str;
    str.real=str1.real+str2.real;
    str.imag=str1.imag+str2.imag;
    return str;
}
    
COMPLEX sub(COMPLEX str1,COMPLEX str2)
{ 
    COMPLEX str;
    str.real=str1.real-str2.real;
    str.imag=str1.imag-str2.imag;
    return str;
}
COMPLEX mul(COMPLEX str1,COMPLEX str2)
{
    COMPLEX str;
    str.real=str1.real*str2.real-str1.imag*str2.imag;
    str.imag=str1.real*str2.imag+str1.imag*str2.real;
    return str;
}
COMPLEX div(COMPLEX str1,COMPLEX str2)
{ 
    COMPLEX str;
    str.real=(str1.real*str2.real+str1.imag*str2.imag)/(str2.real*str2.real+str2.imag*str2.imag);
    str.imag=(str1.imag*str2.real-str1.real*str2.imag)/(str2.real*str2.real+str2.imag*str2.imag);
    return str;
}
/********** End **********/

思路其实不难,但是要注意细节,一步一步来。

你可能感兴趣的:(c语言,算法)