PAT_B_结构-06. 复数四则运算(15)
来源:互联网 发布:网络恶意诽谤刑法 编辑:程序博客网 时间:2024/05/30 22:51
本题要求编写程序,计算2个复数的和、差、积、商。
输入格式:
输入在一行中按照“a1 b1 a2 b2”的格式给出2个复数C1=a1+b1*i和C2=a2+b2*i的实部和虚部。题目保证C2不为0。
输出格式:
分别在4行中按照“(a1+b1i) 运算符 (a2+b2i) = 结果”的格式顺序输出2个复数的和、差、积、商,数字精确到小数点后1位。如果结果的实部或者虚部为0,则不输出。如果结果为0,则输出0.0。
输入样例1:2 3.08 -2.04 5.06输出样例1:
(2.0+3.1i) + (-2.0+5.1i) = 8.1i(2.0+3.1i) - (-2.0+5.1i) = 4.0-2.0i(2.0+3.1i) * (-2.0+5.1i) = -19.7+3.8i(2.0+3.1i) / (-2.0+5.1i) = 0.4-0.6i输入样例2:
1 1 -1 -1.01输出样例2:
(1.0+1.0i) + (-1.0-1.0i) = 0.0(1.0+1.0i) - (-1.0-1.0i) = 2.0+2.0i(1.0+1.0i) * (-1.0-1.0i) = -2.0i(1.0+1.0i) / (-1.0-1.0i) = -1.0
略坑的一题目,算法考量的一点没有,输出太麻烦。
#include <iostream>using namespace std;struct Data{ double s; double x;};double abs(double n){ if (n<0) { return -n; } else { return n; }}void friter(double &x){ if (x>0) { x=(double)((int)((x+0.05)*10))/10; } else { x=(double)((int)((x-0.05)*10))/10; }}char operators(double n){ if (n<0) { return '-'; } else { return '+'; }}int main(int argc, const char * argv[]){ Data a,b,pa,pb; char operatora,operatorb; scanf("%lf %lf %lf %lf",&a.s,&a.x,&b.s,&b.x); operatora=operators(a.x); operatorb=operators(b.x); pa=a; pb=b; pa.x=abs(pa.x); pb.x=abs(pb.x); friter(pa.s); friter(pa.x); friter(pb.s); friter(pb.x); for (int i=0; i<4; i++) { Data result; char opera=0; switch (i) { case 0: opera='+'; result.x=a.x+b.x; result.s=a.s+b.s; break; case 1: opera='-'; result.x=a.x-b.x; result.s=a.s-b.s; break; case 2: opera='*'; result.x=a.s*b.x+a.x*b.s; result.s=a.s*b.s-a.x*b.x; break; case 3: opera='/'; result.x=(a.x*b.s-a.s*b.x)/(b.x*b.x+b.s*b.s); result.s=(a.s*b.s+a.x*b.x)/(b.x*b.x+b.s*b.s); break; default: break; } friter(result.x); friter(result.s); if (result.x!=0&&result.s!=0) { if (result.x>0) { printf("(%.1lf%c%.1lfi) %c (%.1lf%c%.1lfi) = %.1lf+%.1fi\n",pa.s,operatora,pa.x,opera,pb.s,operatorb,pb.x,result.s,result.x); } else { printf("(%.1lf%c%.1lfi) %c (%.1lf%c%.1lfi) = %.1lf%.1fi\n",pa.s,operatora,pa.x,opera,pb.s,operatorb,pb.x,result.s,result.x); } } else if(result.x==0&&result.s==0) { //测试点2 printf("(%.1lf%c%.1lfi) %c (%.1lf%c%.1lfi) = 0.0\n",pa.s,operatora,pa.x,opera,pb.s,operatorb,pb.x); } else if(result.x==0) { //测试点4 printf("(%.1lf%c%.1lfi) %c (%.1lf%c%.1lfi) = %.1lf\n",pa.s,operatora,pa.x,opera,pb.s,operatorb,pb.x,result.s); } else { //测试点2 printf("(%.1lf%c%.1lfi) %c (%.1lf%c%.1lfi) = %.1lfi\n",pa.s,operatora,pa.x,opera,pb.s,operatorb,pb.x,result.x); } } return 0;}
0 0
- PAT_B_结构-06. 复数四则运算(15)
- 结构-06. 复数四则运算(15)
- 结构-06. 复数四则运算(15)
- 结构-06. 复数四则运算(15)
- 结构-06. 复数四则运算(15)
- 结构-06. 复数四则运算(15)
- 结构-06. 复数四则运算(15)
- 结构-06. 复数四则运算
- PAT_B_结构-02. 有理数加法(15)
- 复数四则运算
- 5-36 复数四则运算 (15分)
- 5-36 复数四则运算 (15分)
- 5-36 复数四则运算 (15分)
- 7-36 复数四则运算(15 分)
- java求复数四则运算
- 复数的四则运算
- 6-17复数四则运算
- 6-17复数四则运算
- 二叉树的抽象数据类型
- 最短路问题(广搜:迪杰斯特拉算法)
- QTP webTable
- windwos 编译 CoMISo
- 1.2 日期/时间的程序
- PAT_B_结构-06. 复数四则运算(15)
- " Server error. Please try again. "Google APAC 2015 University Graduates Test解决方法
- 【UVA】1151 - Buy or Build(二进制枚举子集 + 并查集)
- hdu 1166 敌兵布阵(线段树)
- Linux学习笔记(一)
- 诶。。。第一篇文章
- 湖大训练赛第十场 Battleship
- NYOJ 题目298 点的变换(数学,矩阵相乘,模板经典)
- 魔兽争霸---------常见简称