算法联系——复数运算

来源:互联网 发布:crm系统数据 编辑:程序博客网 时间:2024/06/05 16:41

编程实现两个复数的运算。设有两个复数和 ,则他们的运算公式为:

  要求:(1)定义一个结构体类型来描述复数。
  (2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。
  (3)必须使用结构体指针的方法把函数的计算结果返回。
  说明:用户输入:运算符号(+,-,*,/) a b c d.
  输出:a+bi,输出时不管a,b是小于0或等于0都按该格式输出,输出时a,b都保留两位。

输入:
  - 2.5 3.6 1.5 4.9
输出:
  1.00+-1.30i

 

C++代码:

#include<stdio.h>#include <stdlib.h> struct node{         doublea;         doubleb;}; node *add(node x,node y){         node*w=(node *)malloc(sizeof(node));         w->a=x.a+y.a;         w->b=x.b+y.b;         returnw;}node *sub(node x,node y){         node*w=(node *)malloc(sizeof(node));         w->a=x.a-y.a;         w->b=x.b-y.b;         returnw;}node *mul(node x,node y){         node*w=(node *)malloc(sizeof(node));         w->a=x.a*y.a-x.b*y.b;         w->b=x.a*y.b+y.a*x.b;         returnw;}node *div(node x,node y){         node*w=(node *)malloc(sizeof(node));         w->a=(x.a*y.a+x.b*y.b)/(y.a*y.a+y.b*y.b);         w->b=(x.b*y.a-x.a*y.b)/(y.a*y.a+y.b*y.b);         returnw;}int main(){         charc;         structnode n,m;         structnode *s;         scanf("%c%lf %lf %lf %lf",&c,&n.a,&n.b,&m.a,&m.b);         switch(c)         {                   case'+':                            s=add(n,m);                            break;                   case'-':                            s=sub(n,m);                            break;                   case'*':                            s=mul(n,m);                            break;                   case'/':                            s=div(n,m);          }          printf("%.2lf+%.2lfi",s->a,s->b);                    return 0;}


0 0
原创粉丝点击