zoukankan      html  css  js  c++  java
  • 1051 复数乘法 (15 分)C语言

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

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

    输入格式:
    输入在一行中依次给出两个复数的 R​1, P​1, R​2,P​2,数字间以空格分隔。

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

    输入样例:

    2.3 3.5 5.2 0.4
    

    输出样例:

    -8.68-8.23i
    

    思路

    • 这道题思路很简单了,就直接展开计算就好啦,但是要注意的点是输出的时候是保留两位小数的,也就是说,如果 -0.001的话,最终输出的是-0.00,但这很显然就是0了,正确的是应该输出0.00,因此我们使用了两个if语句来避免这种情况。

    AC

    #include <stdio.h>
    #include <math.h>
    int main(){
    	double r1,p1,r2,p2;
    	double a,b;
        scanf("%lf %lf %lf %lf",&r1,&p1,&r2,&p2);
    	a=r1*r2*cos(p1+p2);
    	b=r1*r2*sin(p1+p2);
    	if(a<0&&a > -0.005) a = 0; 
        if(b<0&&b > -0.005) b = 0;
    	printf("%.2lf%+.2lfi",a,b);
    	return 0;
     } 
    

    AC2

    #include <stdio.h>
    #include <math.h>
    int main(){
    	double r1,p1,r2,p2;
    	double a,b;
        scanf("%lf %lf %lf %lf",&r1,&p1,&r2,&p2);
    	a=r1*r2*cos(p1+p2);
    	b=r1*r2*sin(p1+p2);
        if (fabs(a) < 0.01) a = 0;//fabs函数是一个求绝对值的函数
        if (fabs(b) < 0.01) b = 0;
    	printf("%.2lf%+.2lfi",a,b);
    	return 0;
     } 
    
    欢迎查阅
  • 相关阅读:
    如何看待和选择基础设施软件
    target vs currentTarget, clientWidth vs offsetWidth
    undefined
    C# and android and socket
    hdu 4781 Assignment For Princess (2013ACMICPC 成都站 A)
    [置顶] Jquery中DOM操作(详细)
    hdu 4786 Fibonacci Tree (2013ACMICPC 成都站 F)
    android开发教程(八)——环境搭建之java-ndk
    cloudstack4.2+xenserver6.0.2 详细配置攻略
    11道php面试题
  • 原文地址:https://www.cnblogs.com/gh110/p/12158196.html
Copyright © 2011-2022 走看看