Problem Description
计算两个复数之和。
Input Description
在两行中分别输入两个复数a+bi,a和b均为正整数。
Output Description
在一行中输出两个复数的和。
Sample Input
1+2i
3+4i
Sample Output
(1+2i)+(3+4i)=4+6i
写个复数类,一个实数,一个虚数,做个+重载就可以了。或者直接读取4个数分别计算也行。
代码如下:
#include <stdio.h>
void trans(char* s,int* a,int* b,char* ch)
{
int i=0;
//计算a1
*a=0;
*b=0;
while(s[i]>='0'&&s[i]<='9')
{
*a = *a*10 + s[i]-'0';
i++;
}
//过滤空格
while(s[i]==' ') i++;
*ch = s[i];
i++;
//过滤空格
while(s[i]==' ') i++;
//计算b
while(s[i]>='0'&&s[i]<='9')
{
*b = *b*10 + s[i]-'0';
i++;
}
}
int main()
{
char s1[20],s2[20];
int a1,a2,b1,b2;
int c,d;
char ch1='+',ch2='+';
scanf("%s",s1);
scanf("%s",s2);
trans(s1,&a1,&b1,&ch1);
trans(s2,&a2,&b2,&ch2);
if(ch1=='-')
b1 = -b1;
if(ch2=='-')
b2 = -b2;
c = a1+a2;
d = b1+b2;
if(d>0)
printf("(%d%c%di)+(%d%c%di)=%d+%di",a1,ch1,b1,a2,ch2,b2,c,d);
else if(d==0)
printf("(%d%c%di)+(%d%c%di)=%d",a1,ch1,b1,a2,ch2,b2,c);
else
printf("(%d%c%di)+(%d%c%di)=%d%di",a1,ch1,b1,a2,ch2,b2,c,d);
return 0;
}