%g不会输出无用的0;
刚开始用int 结果应该是double
#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; }
原文:http://www.cnblogs.com/cancangood/p/4357870.html