算法提高 6-17复数四则运算

            %g不会输出无用的0;

          刚开始用int 结果应该是double 

                                                                                                  算法提高 6-17复数四则运算  
时间限制:1.0s   内存限制:512.0MB
    
  设计复数库,实现基本的复数加减乘除运算。
  输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按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;
}

 

posted @ 2015-03-22 20:05  疯狂的癫子  阅读(168)  评论(0编辑  收藏  举报