算法训练 P1103
时间限制:1.0s 内存限制:256.0MB
编程实现两个复数的运算。设有两个复数 和 ,则他们的运算公式为:
要求:(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
编程实现两个复数的运算。设有两个复数 和 ,则他们的运算公式为:
要求:(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
要注意复数实部和虚部的计算!!!
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
double a,b,c,d;
char e;
int flag;
scanf("%c %lf %lf %lf %lf",&e,&a,&b,&c,&d);
if(e=='+') flag=0;
if(e=='-') flag=1;
if(e=='*') flag=2;
if(e=='/') flag=3;
double n,m;
switch(flag)
{
case 0:n=a+c;m=b+d;break;
case 1:n=a-c;m=b-d;break;
case 2:n=a*c-b*d;m=a*d+b*c;break;
case 3:n=(a*c+b*d)/(c*c+d*d);m=(b*c-a*d)/(c*c+d*d);break;
}
printf("%.2lf+%.2lfi\n",n,m);
return 0;
}