7-3 复数四则运算_代码晓菜鸡的博客-程序员宅基地

技术标签: c语言  PTA  

7-3 复数四则运算 (15分)

本题要求编写程序,计算2个复数的和、差、积、商。
输入格式:
输入在一行中按照a1 b1 a2 b2的格式给出2个复数C1=a1+b1i和C2=a2+b2i的实部和虚部。题目保证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 <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

#define MARK 0.05

int demo_1(double a, double b){
    //一部分    
    if(abs(a) < MARK && abs(b) < MARK) printf("(0.0+0.0i)");
        
    else if(abs(a) < MARK && abs(b) >= MARK) printf("(0.0+%0.1lfi)", b);
        
    else {
            
        if(abs(b) < MARK) printf("(%0.1lf+0.0i)", a);        
        else if(abs(b) >= MARK && b < 0) printf("(%0.1lf-%0.1lfi)", a, -b);        
        else printf("(%0.1lf+%0.1lfi)", a, b);   
     }    
    return 0;
}

int path_0(double i, double j){
    // 固定过程 //    
    if (abs(i) < MARK && abs(j) < MARK)        printf("0.0");    
    else if (abs(i) < MARK && abs(j) >= MARK)        printf("%0.1lfi", j);     
    else    {
     //abs(i) >= 0.05        
        if (abs(j) < MARK)            printf("%0.1lf", i);        
        else if (abs(j) >= MARK && j < 0)            printf("%0.1lf-%0.1lfi", i, -j);        
        else            printf("%0.1lf+%0.1lfi", i, j);    }   
 return 0}
 
double rounding(double num){
        //四舍五入
if (num > 0)        
num = (int)(num * 10 + 0.5) / 10.0;    
else        num = (int)(num * 10 - 0.5) / 10.0;    
return num;
}

//start to solve where is down by this. 

int CL_add(double a, double b, double c, double d){
       //加法
 double i = a + c, j = b + d;    
 path_0(rounding(i), rounding(j));    puts("");    
 return 0;}
 
int CL_sub(double a, double b, double c, double d){
        //减法
double i = a - c, j = b - d;    
path_0(rounding(i), rounding(j));    puts("");    
return 0;
}

int CL_mul(double a, double b, double c, double d){
        //乘法
double i = a*c - b*d, j = a*d + b*c;    path_0(rounding(i),rounding(j));     puts("");    
return 0;
}

int CL_div(double a, double b, double c, double d){
        //除法
//double i = (a*c + b*d)/(c*c + d*d), j = (b*c - a*d)/(c*c + d*d);    
path_0(rounding((a * c + b * d) / (c * c + d * d)), rounding((b * c - a * d) / (c * c + d * d)));    puts("");   
 return 0;
 }
 
//divide into four parts
int main(){
       
double a1, a2, b1, b2;
   scanf("%lf%lf%lf%lf", &a1, &b1, &a2, &b2);
      
   demo_1(a1,b1);    printf(" + ");    demo_1(a2,b2);    printf(" = ");   CL_add(a1,b1,a2,b2);
   
   demo_1(a1, b1);   printf(" - ");   demo_1(a2, b2);   printf(" = ");   CL_sub(a1,b1,a2,b2);
   
   demo_1(a1, b1);   printf(" * ");   demo_1(a2, b2);   printf(" = ");   CL_mul(a1,b1,a2,b2);
   
   demo_1(a1, b1);   printf(" / ");   demo_1(a2, b2);   printf(" = ");   CL_div(a1,b1,a2,b2);
   system("pause");  
    return 0;
    }

**过了三个测试点,第一个总是过不了,还得再想想。 **

注意fabs()和abs()的区别!!!
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xufer/article/details/108067615

智能推荐

risc-v Sifive learn inventor基础之串口&操作寄存器 HifiveRev B_sifive uart_killer-p的博客-程序员宅基地

risc-v Sifive learn inventor基础之串口上一章了解了中断后,继续实践另一个重要的外设串口以及Sifive提供的操作寄存器的函数__METAL_ACCESS_ONCESifive learn inventor基础之串口gpio中断配置开发板只有两个串口,分别是uart0和uart1,uart0外接到jlink模块,可以用于与上位机的通信,uart1与esp32连接。本章以uart0为例子来初始化uart0,并且实现pc端串口发送数据,开发板自动返回接收的数据。一,硬件连

用C#.NET编写软件注册机_普通网友的博客-程序员宅基地

验证注册码是保护软件产品产权的常用手段。一般过程如下,1、  软件发行者收集用户特有的信息;2、  根据用户特有的信息,使用注册机生成注册码并把注册码发给客户;3、  向软件导入注册码,由软件自己验证注册码的正确性。这个过程是如何实现的呢? 我写了一个简单的实现,供大家研究。因为是初次进入这个编程领域,希望高手们给我更多的指导。 第一步利用用户的机器名生成客户特有的认证码...

jupyter安装java内核_htfenght的博客-程序员宅基地

jupyter安装java内核JAVA JDK首先下载最新的Java JDK解压,配置环境变量测试java -version安装jupyter java内核首先查看jupyter内核jupyter kernelspec list#删除内核使用以下命令jupyter kernelspec remove java安装IJAVA使用unzip解压,解压之后的目录机构为:...

InnoDB: Unable to lock ibdata1, error: 35_unable to lock ./ibdata1 error: 35_leonpengweicn的博客-程序员宅基地

这个是由于有别的MYSQL的进程也读取了数据文件,需要kill掉这个进程即可ps -eaf | gerp mysqlkil

sipXecs总体介绍_梦幻骑士syc的博客-程序员宅基地

pXecs是一款针对各类企的基于织模块化并可扩展的通信解决方案。它提供核心的SIP路由,同时,所有业务都通过统一的WEB去管理。它提供PBX的基本通信功能,例如即时消息,甚至视频通信。 sipXecs是一款基于SIP的IP PBX,但功能远非一般PBX,包括语音信箱、综合通讯、自动话务员、会议、状态呈现以及呼叫中心功能。sipXecs可以作为一台服务器为小型企业服务,也可以通过集群的形式为大

Vue项目如何关闭Eslint校验_vue 关闭eslint校验_陌溪教你学编程的博客-程序员宅基地

Vue项目如何关闭Eslint校验前言最近有老哥提出蘑菇博客每次在运行的时候,都会出现一堆的错误,其实这是因为开启了ESlint校验而引起的,但是因为校验过于严格,我们没办法按照自己的喜好随心所欲书写代码,所有下面采纳了老哥的意见,将Eslint校验关闭。关闭Eslint首先我们进入vue_mogu_web项目,然后我们找到build目录下的webpack.base.conf.js文件c...

随便推点

java 读fdb文件_如何真正理解java中的NIO?_weixin_39900468的博客-程序员宅基地

1、简介1.1 Java中的IO介绍BIO:BlockingIO,同步式阻塞式IO,即传统的IO,是java中最早期的流NIO:Non-BlockingIO,又称New IO,同步式非阻塞IO,是JDK1.4提供的流AIO:AsynchronousIO,异步是非阻塞IO,可以认为是NIO的二代版本,是JDK1.8提供的流1.2 概述NIO是JDK1.4出现的一个新的用于进行数据传输的流全称是Non...

Quartz.NET 任务调度教程。_weixin_30376083的博客-程序员宅基地

https://www.cnblogs.com/yaopengfei/p/9216229.html转载于:https://www.cnblogs.com/baiqian/p/9216946.html

netty4.0 ByteArrayDecoder 学习_weixin_30532973的博客-程序员宅基地

收到ByteBuf解码成一个字节数组。一个典型的TCP / IP设置将是:ChannelPipeline pipeline = ...; / / 解码 / / Decoders pipeline.addLast("frameDecoder", new LengthFieldBasedFrameDecoder(1048576, 0, 4, 0...

Spring PropertyEditor Spring conversion框架分析_自我修炼的小石头的博客-程序员宅基地

PropertyEditorhttps://blog.csdn.net/pentiumchen/article/details/44026575conversionhttps://blog.csdn.net/pentiumchen/article/details/44066173  BeanWrapperhttps://blog.csdn.net/z6918...

3d目标检测_Det3D 首个通用 3D 目标检测框架_weixin_39707597的博客-程序员宅基地

点击上方“CVer”,选择加"星标"或“置顶”重磅干货,第一时间送达作者:poodar.chuhttps://zhuanlan.zhihu.com/p/101346137本文已由作者授权,未经允许,不得二次转载背景介绍应用于自动驾驶、室内导航等领域的 3D 检测是近一段时间比较热门的一个研究方向。其数据格式包括 image、point cloud、RGBD、mesh 等。作为对比,2D ...

mac 使用小技巧,持续更新_小瑾yes的博客-程序员宅基地

mac 使用小技巧持续更新文章目录mac 使用小技巧前言一、使用python3开启http服务二、使用命令获取文件或者文本绝对路径三、自带截图总结前言作为一个攻城狮,日常使用技巧记录提示:以下是本篇文章正文内容,下面案例可供参考一、使用python3开启http服务执行的路径下都可以成为http访问的路径python -m http.server 80 二、使用命令获取文件或者文本绝对路径option+command+c三、自带截图截取部分图片shift+co

推荐文章

热门文章

相关标签