蓝桥杯 6-17复数四则运算
2016-01-16 21:02
211 查看
算法提高 6-17复数四则运算
时间限制:1.0s 内存限制:512.0MB
设计复数库,实现基本的复数加减乘除运算。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
样例输入
2 4 * -3 2
样例输出
-14-8i
样例输入
3 -2 + -1 3
样例输出
2+1i
首先把数学里复数的四则运算的计算法则弄懂后,敲出代码。
用printf输出,然而输出的时候用%lf的话会出现小数点后面多余的0,因此我选择采用%g。%g用来输出实数,根据数值大小,自动选f或e格式不输出无意义的零。
时间限制:1.0s 内存限制:512.0MB
设计复数库,实现基本的复数加减乘除运算。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
样例输入
2 4 * -3 2
样例输出
-14-8i
样例输入
3 -2 + -1 3
样例输出
2+1i
首先把数学里复数的四则运算的计算法则弄懂后,敲出代码。
用printf输出,然而输出的时候用%lf的话会出现小数点后面多余的0,因此我选择采用%g。%g用来输出实数,根据数值大小,自动选f或e格式不输出无意义的零。
#include<stdio.h> int main() { double a,b,c,d; char ch; while(~scanf("%lf %lf %c %lf %lf",&a,&b,&ch,&c,&d)) { if(ch=='+') { if(b+d>0) printf("%g+%gi\n",a+c,b+d); else if(b+d==0) printf("%g\n",a+c); else printf("%g%gi",a+c,b+d); } if(ch=='-') { if(b-d>0) printf("%g+%gi\n",a-c,b-d); else if(b-d==0) printf("%g\n",a+c); else printf("%g%gi",a-c,b-d); } if(ch=='*') { if(a*d+b*c>0) printf("%g+%gi\n",a*c-b*d,a*d+b*c); else if(a*d+b*c==0) printf("%g\n",a*c-b*d); else printf("%g%gi\n",a*c-b*d,a*d+b*c); } if(ch=='/') { if(c==0&&d==0) printf("error\n"); else { double xubu=(a*(-d)+b*c)/(c*c+d*d);//这里一定要注意是double定义xubu,之前用int一直有一组测试数据过不了,诶! if(xubu>0) printf("%g+%gi\n",(a*c-b*(-d))/(c*c+d*d),xubu); else if(xubu==0) printf("%g\n",(a*c-b*(-d))/(c*c+d*d)); else printf("%g%gi\n",(a*c-b*(-d))/(c*c+d*d),xubu); } } } return 0; }
相关文章推荐
- 利用A、G、DL、P策略来管理网络资源访问权限
- 《收集苹果》 动态规划入门
- 《DNA比对》蓝桥杯复赛试题
- 《背包问题》 动态规划
- 连号区间 蓝桥杯 算法
- 蓝桥杯——历届试题(1-10)
- 2015 蓝桥杯第六届 省赛java A组第7题 扑克牌组合
- 蓝桥网练习题 日期计算
- 2015蓝桥杯校内选拔C/C++组题1
- 2015蓝桥杯C/C++校内选拔 C组 题2
- 蓝桥杯 历届试题 邮局 2017-09-24 修改
- 蓝桥杯—兰顿蚂蚁
- 蓝桥杯-蚂蚁感冒
- rand函数 软件大赛题目 夺冠概率
- vs2005应用之GridView(收藏)
- 创建git项目并同步到远程仓库的最简单步骤和常用操作。
- win7上安装tornado2.2并安装GX-2410bsp包(简洁版)
- 连号区间算法(蓝桥杯)
- 小朋友排队
- 兰顿蚂蚁