算法提高 6-17复数四则运算
%g不会输出无用的0;
刚开始用int 结果应该是double
算法提高 6-17复数四则运算
时间限制:1.0s 内存限制:512.0MB
设计复数库,实现基本的复数加减乘除运算。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
样例输入
2 4 * -3 2
样例输出
-14-8i
样例输入
3 -2 + -1 3
样例输出
2+1i
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { double a,b,c,d; double s1=0,s2=0; char s; scanf("%lf%lf",&a,&b); getchar(); scanf("%c",&s); scanf("%lf%lf",&c,&d); // printf("c=%c\n",s); int flag=0; if(s=='*') { s1=a*c-b*d; s2=b*c+a*d; } if(s=='/') { if(c==0&&d==0) { printf("error"); flag=1; } else { s1=((a*c+b*d)/(c*c+d*d)); s2=(b*c-a*d)/(c*c+d*d); } } if(s=='-') { s1=a-c; s2=b-d; } if(s=='+') { s1=a+c; s2=b+d; } if(flag==0) { if(s2>0&&s1!=0) printf("%g+%gi\n",s1,s2); if(s2<0&&s1!=0) printf("%g%gi\n",s1,s2); if(s2==0) printf("%g\n",s1); if(s1==0&&s2!=0) printf("%gi",s2); } return 0; }