1051. 复数乘法 (15) PAT乙级真题

来源:互联网 发布:vb.net 添加控件 编辑:程序博客网 时间:2024/05/17 01:35

1051. 复数乘法 (15)

复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1;也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形式 R(cos(P) + isin(P))。

现给定两个复数的R和P,要求输出两数乘积的常规形式。

输入格式:

输入在一行中依次给出两个复数的R1, P1, R2, P2,数字间以空格分隔。

输出格式:

在一行中按照“A+Bi”的格式输出两数乘积的常规形式,实部和虚部均保留2位小数。注意:如果B是负数,则应该写成“A-|B|i”的形式。

输入样例:
2.3 3.5 5.2 0.4
输出样例:
-8.68-8.23i
说真的,我真为这题只值15分感到不值,这是我最后做的15分题,这道题不是说难度有多大,而是能让我们非常“深刻”地了解到浮点型的大小比较。还有就是需要用浮点型时直接选择double,就当自己不知道有float这个东西(真的是怨念颇深)。在乙级里面不知道要被float坑多少次。浮点型的大小比较一定要是做差以后和一个非常小的数比较(具体多少我也记不太清了,反正在小数点后面多加几个0就好了)。下面是我的代码:
#include<stdio.h>#include<math.h>int main(void){    double R1,R2,P1,P2;    double a,b;    scanf("%lf %lf %lf %lf",&R1,&P1,&R2,&P2);    a = R1 * R2 * cos(P1) * cos(P2) - R1 * R2 * sin(P1) * sin(P2);    b = R1 * R2 * cos(P1) * sin(P2) + R1 * R2 * sin(P1) * cos(P2);    if (a + 0.005 >= 0 && a < 0)        printf("0.00");    else        printf("%.2f",a);    if (b >= 0)        printf("+%.2fi", b);    else if (b + 0.01 >= 0 && b < 0)        printf("+0.00i");    else        printf("%.2fi", b);    return 0;}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手游cf用模拟器画面很抖怎么办 腾讯手游助手模拟器游戏卡死怎么办 腾讯手游模拟器提示注册以满怎么办 手游绝地求生被检测成模拟器怎么办 腾讯手游助手模拟器内存不够怎么办 微信视频对方听不到我的声音怎么办 学生考试传纸条作弊老师应怎么办 苹果手机微信小游戏没有声音怎么办 红米手机游戏下好了安装不了怎么办 小米手机sd卡存储已满怎么办 英雄联盟峡谷之巅资格被收回怎么办 人进监狱之前信用卡没还怎么办 荒野行动资源文件下载卡住了怎么办 荒野行动绑定的手机号停机了怎么办 不小心误点了爱奇艺扣款了怎么办 和别人吵架别人先骂你怎么办 自己人被带到了缅甸黑社会了怎么办 绝地求生忘记复制钥匙激活码怎么办 绝地求生买的钥匙激活码丢了怎么办 蓝河奶粉宝宝吃了不长肉怎么办 苹果ios版本太低激活不了怎么办 脸上被油烫伤了 起了水泡怎么办 皮肤被油烫伤起来个水泡怎么办 去泰国旅游没来得及兑换泰铢怎么办 游戏和安卓 不和 出现黑屏怎么办 邻居把垃圾放在楼梯口不丢怎么办 58热敏小票打印机口松了怎么办 王鹏的眼睛今天起疙瘩了怎么办 背包带子老从肩膀滑下来怎么办 绝地求生用手机流量更新不成怎么办 手机拍的视频在电脑上放不了怎么办 炉石传说手机点登陆游戏闪退怎么办 车到信号屏蔽区一键启动不了怎么办 王者荣耀战队活跃度满了怎么办 win10你的账户已被停用怎么办 电脑一键还原后一直黑屏怎么办? 被打了狂犬疫苗的狗咬伤怎么办 美版苹果7系统坏了怎么办 韩服的球球大作战网络不稳定怎么办 球球大作战号删了找不回来怎么办 队友传足球球的时候接不到怎么办