蓝桥杯 算法提高 6-17复数四则运算
题目如下:
设计复数库,实现基本的复数加减乘除运算。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
样例输入
2 4 * -3 2
样例输出
-14-8i
样例输入
3 -2 + -1 3
样例输出
2+1i
-----分割线-----
此题倒是很简单,就是要注意除法输出使用%g。
#include<stdio.h> #include<stdlib.h> int main() { char *s=malloc(sizeof(char)*2); int a,ai,b,bi,c,ci,t; scanf("%d%d",&a,&ai); scanf("%s",s); scanf("%d%d",&b,&bi); if(*s=='+') { c=a+b; ci=ai+bi; } if(*s=='-') { c=a-b; ci=ai-bi; } if(*s=='*') { c=a*b-ai*bi; ci=a*bi+b*ai; } if(*s=='/') { t=b*b+bi*bi; c=a*b+ai*bi; ci=b*ai-a*bi; if(t==0) { printf("error"); return 0; } if(ci>0) printf("%g+%gi",c*1.0/t,ci*1.0/t); else printf("%g%gi",c*1.0/t,ci*1.0/t); return 0; } if(ci>0) printf("%d+%di",c,ci); else printf("%d%di",c,ci); return 0; }