基础编程题目集 - 7-36 复数四则运算(15 分)

简介: 基础编程题目集 - 7-36 复数四则运算(15 分)

题目链接


题目大意:

解题思路:double round(double num,unsigned int bits) 构造 或 找到临界值 0.05 来控制 if...else...;round 函数IDE可能不会提示,但是是可以用的,需要引入math头文件

AC 代码

#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a)
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
double a,b,c,d,rs1,rs2;
double round(double num,unsigned int bits)
{
    stringstream ss;
    ss<<fixed<<setprecision(bits)<<num;
    ss>>num;
    return num;
}
void print(double rs1,double rs2,char op)
{
    if(fabs(rs1)<1e-2 && fabs(rs2)<1e-2)
    {
        if(b<0 && d<0) printf("(%.1lf%.1lfi) %c (%.1lf%.1lfi) = 0.0",a,b,op,c,d);
        else if(b<0) printf("(%.1lf%.1lfi) %c (%.1lf+%.1lfi) = 0.0",a,b,op,c,d);
        else if(d<0) printf("(%.1lf+%.1lfi) %c (%.1lf%.1lfi) = 0.0",a,b,op,c,d);
        else printf("(%.1lf+%.1lfi) %c (%.1lf+%.1lfi) = 0.0",a,b,op,c,d);
    }
    else if(fabs(rs1)<1e-2)
    {
        if(b<0 && d<0) printf("(%.1lf%.1lfi) %c (%.1lf%.1lfi) = %.1lfi",a,b,op,c,d,rs2);
        else if(b<0) printf("(%.1lf%.1lfi) %c (%.1lf+%.1lfi) = %.1lfi",a,b,op,c,d,rs2);
        else if(d<0) printf("(%.1lf+%.1lfi) %c (%.1lf%.1lfi) = %.1lfi",a,b,op,c,d,rs2);
        else printf("(%.1lf+%.1lfi) %c (%.1lf+%.1lfi) = %.1lfi",a,b,op,c,d,rs2);
    }
    else if(fabs(rs2)<1e-2)
    {
        if(b<0 && d<0) printf("(%.1lf%.1lfi) %c (%.1lf%.1lfi) = %.1lf",a,b,op,c,d,rs1);
        else if(b<0) printf("(%.1lf%.1lfi) %c (%.1lf+%.1lfi) = %.1lf",a,b,op,c,d,rs1);
        else if(d<0) printf("(%.1lf+%.1lfi) %c (%.1lf%.1lfi) = %.1lf",a,b,op,c,d,rs1);
        else printf("(%.1lf+%.1lfi) %c (%.1lf+%.1lfi) = %.1lf",a,b,op,c,d,rs1);
    }
    else
    {
        if(rs2<0)
        {
            if(b<0 && d<0) printf("(%.1lf%.1lfi) %c (%.1lf%.1lfi) = %.1lf%.1lfi",a,b,op,c,d,rs1,rs2);
            else if(b<0) printf("(%.1lf%.1lfi) %c (%.1lf+%.1lfi) = %.1lf%.1lfi",a,b,op,c,d,rs1,rs2);
            else if(d<0) printf("(%.1lf+%.1lfi) %c (%.1lf%.1lfi) = %.1lf%.1lfi",a,b,op,c,d,rs1,rs2);
            else printf("(%.1lf+%.1lfi) %c (%.1lf+%.1lfi) = %.1lf%.1lfi",a,b,op,c,d,rs1,rs2);
        }
        else
        {
            if(b<0 && d<0) printf("(%.1lf%.1lfi) %c (%.1lf%.1lfi) = %.1lf+%.1lfi",a,b,op,c,d,rs1,rs2);
            else if(b<0) printf("(%.1lf%.1lfi) %c (%.1lf+%.1lfi) = %.1lf+%.1lfi",a,b,op,c,d,rs1,rs2);
            else if(d<0) printf("(%.1lf+%.1lfi) %c (%.1lf%.1lfi) = %.1lf+%.1lfi",a,b,op,c,d,rs1,rs2);
            else printf("(%.1lf+%.1lfi) %c (%.1lf+%.1lfi) = %.1lf+%.1lfi",a,b,op,c,d,rs1,rs2);
        }
    }
    puts("");
}
int main()
{
    while(~scanf("%lf%lf%lf%lf",&a,&b,&c,&d))
    {
        rs1=round(a+c,1); rs2=round(b+d,1);
        print(rs1,rs2,'+');
        rs1=round(a-c,1); rs2=round(b-d,1);
        print(rs1,rs2,'-');
        rs1=round(a*c-b*d,1); rs2=round(b*c+a*d,1);
        print(rs1,rs2,'*');
        rs1=round((a*c+b*d)/(c*c+d*d),1); rs2=round((b*c-a*d)/(c*c+d*d),1);
        print(rs1,rs2,'/');
    }
    return 0;
}
目录
相关文章
|
7月前
|
C语言
c语言编程练习题:7-9 求整数均值
本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内
79 0
|
算法 搜索推荐 程序员
C语言第十二练——计算两个正整数的最小公倍数和最大公因数
C语言第十二练——计算两个正整数的最小公倍数和最大公因数
110 0
|
算法 搜索推荐 程序员
C语言第三练——编程实现三个数的平均值
C语言第三练——编程实现三个数的平均值
354 0
|
6月前
|
C语言
C语言学习记录——操作符习题、算数转换习题,多解法&优解法&单选题
C语言学习记录——操作符习题、算数转换习题,多解法&优解法&单选题
32 1
|
7月前
|
C语言
c语言编程练习题:7-51 求奇数分之一序列前N项和
c语言编程练习题:7-51 求奇数分之一序列前N项和
77 0
|
6月前
1034 有理数四则运算 (20 分)
1034 有理数四则运算 (20 分)
|
7月前
|
C语言
c语言编程练习题:7-54 求阶乘序列前N项和
c语言编程练习题:7-54 求阶乘序列前N项和
68 0
|
存储 算法
【每日挠头算法题】Leetcode 989. 数组形式的整数加法 —— 高精度加法解法
【每日挠头算法题】Leetcode 989. 数组形式的整数加法 —— 高精度加法解法
146 0
【每日挠头算法题】Leetcode 989. 数组形式的整数加法 —— 高精度加法解法
|
大数据 网络安全 数据安全/隐私保护
考点:枚举法解数学题,按照条件来限定枚举结果【Python习题11】
考点:枚举法解数学题,按照条件来限定枚举结果【Python习题11】
153 0