#7-8 复数四则运算 (10分)

该篇博客讲述了作者在编程实现复数四则运算时遇到的问题和解决过程,包括复数输出格式、虚部正负判断以及实部为零的情况。通过多次尝试,作者最终理解到在输入为0时不应省略输出,并且总结了难点在于复数的正确输出和检查实部虚部是否为零的判断。
摘要由CSDN通过智能技术生成

**

#7-8 复数四则运算 (10分)**

**

本题要求编写程序,计算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

第一次写这个代码理所当然的想把两个复数直接输出大概就是这个样子
printf("(%.1lf+%.1lfi)符号(%.1lf+%.1lfi)=%.1lf");
依次输出然后再写一个复数的计算函数就可以了
没想到忽略了虚部正负的问题
嗯~ o( ̄▽ ̄)o当然复数的计算函数也想了很久
总想一次把结果全部输出
结果卒
第二次写因为第一次的莽我由判断虚部的正负得到了灵感
1.要分步输出复数
2.每次输出复数都要对虚部进行判断(三种情况:正,负,0)
实部也要进行判断如果是零就给它省去
3.既然复数都是分步输出,那么结果我不如也是分别计算实部与虚部再利用2进行判断
结果四个数据点只过了一半,纯实数和纯虚数没过

第三次写看到网上的大佬说因为要先进行四舍五入在进行判断是否为0,而本弱鸡是先判断是否为0,在输出,所以觉得可能是这一点出现了问题,所以马上改变了顺序,但依然未过,我内牛满面

第四次写终于我领悟到了奥义
原来输入两个函数时当实部与虚部为0时,不用省去直接输出
我的天啊!!!亏我省去了,还在只有实部或虚部时连括号都省去了,再次捂脸,白瞎了我的头发

经测试第三次说的无效,可能是数据点的问题,不过少些一个四舍五入的函数不香吗?嘿嘿嘿!!!

**总结一下难点复数的输出以及结果实部与虚部是否为零的判断
那个结果实部与虚部是否为零的判断本弱鸡是用绝对值
如果有更好的方法还请
大佬*指出

#include<stdio.h>
#include<math.h>
char fu[5]={
   ' ','+','-','*','/'};
void shuchu(double a,double b,double c,double d,int i);
double shi(double a,double b,double c,doub
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值