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

这篇博客讲述了作者在解决PTA上的7-36复数四则运算问题时遇到的困难,主要难点在于复杂的if-else判断逻辑。通过封装函数简化问题,作者在分心的情况下感到困扰,但后来在平静的状态下找到了清晰的解决方案。博客强调了编程时保持专注和选择安静环境的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


本题我认为主要是麻烦在了各种的判断if,else if等的判断,但是只要写一个函数把他都封装起来,就简单了很多。
在做这道题是在c语言的课上,没有集中注意力,静下心来导致很烦躁,让他的判断给搞烦了,但是晚上回宿舍再看题目时,思路就清晰了许多,也就做出来了。
这提示我们编程时要选择相对安静的环境,或者自己能够静下心来。

#include <stdio.h>
#include <stdlib.h>
//打印相同的部分
void Print_same(double a1,double b1,double a2,double b2,char c);
//打印最后的结果
void Print_result(double res1,double res2);
//对结果进行四舍五入操作
double rounding(double num); 

int main()
{
   
	double a1,b1,a2,b2;
//	a1 = 2;b1 = 3.08;a2 = -2.04;b2 = 5.06;
	scanf("%lf%lf%lf%lf",&a1,&b1,&a2,&b2);
	//加法 
	Print_same(a1,<
import java.io.*; public class Book{ double sb; double xb; Book(double x,double y){ this.sb=x; this.xb=y; } Book(){ } public static void main(String args[]){ System.out.println("请输入数据:"); double a=0; double b=0; double c=0; double d=0; String s; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入第一个复数的实部:"); try{ s = in.readLine(); a=Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} System.out.println("请输入第一个复述的虚部:"); try{ s = in.readLine(); b =Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} System.out.println("请输入第二个复述的实部:"); try{ s = in.readLine(); c =Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} System.out.println("请输入第二个复述的虚部:"); try{ s = in.readLine(); d =Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} Book h; h=new Book(a,b); Book j; j=new Book(c,d); System.out.println("您输入的一个数为:"); toString(h); System.out.println("您输入的二个数为:"); toString(j); Book k; k=new Book(); char z=&#39;y&#39;; do{ System.out.println("请选择您要进行的计算:"); System.out.println("1 :进行加法运算"); System.out.println("2 :进行减法运算"); System.out.println("3 :进行修改"); System.out.println("4 :进行乘法运算"); System.out.println("5 :进行除法运算"); System.out.println("6 :查看修改结果"); int i=0; try{ i= Integer.parseInt(in.readLine()); } catch(IOException e) { System.out.println("抛掷异常");} switch(i) { case 1: k.sb=jia(h.sb,j.sb); k.xb=jia(h.xb,j.xb); System.out.println("计算结果的实部为:"+k.sb); System.out.println("计算结果的虚部为:"+k.xb); toString(k); break ; case 2: k.sb=jian(h.sb,j.sb); k.xb=jian(h.xb,j.xb); System.out.println("计算结果的实部为:"+k.sb); System.out.println("计算结果的虚部为:"+k.xb); toString(k); brea
复数是由实部和虚部组成的数,通常表示为$a + bi$的形式,其中$a$是实部,$b$是虚部,而$i^2 = -1$。对于两个复数$x_1 + y_1i$ 和 $x_2 + y_2i$来说,四则运算可以通过下面的方式实现。 加法: 要执行两个复数相加的操作,只需别将它们的实部与虚部对应相加即可得到结果。 $$ (x_1 + y_1i) + (x_2 + y_2i) = (x_1+x_2) + (y_1+y_2)i $$ 减法: 类似地,为了从第一个复数中减去第二个复数,需要从第一个复数的实部和虚部别减去第二个复数对应的实部和虚部。 $$ (x_1 + y_1i) - (x_2 + y_2i) = (x_1-x_2) + (y_1-y_2)i $$ 乘法: 当涉及到复数之间的乘法时,则应用配律展开括号,并记住$i^2=-1$这一规则。 $$ (x_1 + y_1i)(x_2 + y_2i) = x_1x_2 + x_1y_2i + y_1ix_2 + y_1iy_2i^2 = (x_1x_2 - y_1y_2) + (x_1y_2 + y_1x_2)i $$ 除法: 对于复数的除法则稍微复杂一些,因为母含有虚数单位$i$。解决办法是对子和母同时乘以母的共轭复数,从而消掉母中的$i$。 设$c=x_2+iy_2 \neq 0$, 则其倒数为$\frac{\overline{c}}{|c|^2}$, 其中$\overline{c}=x_2-iy_2$ 是$c$的共轭复数,而$|c|$代表模长即 $\sqrt{x_2^2 + y_2^2}$. 因此, $$\frac{(x_1 + iy_1)}{(x_2 + iy_2)}=\frac{(x_1 + iy_1)\cdot(x_2 - iy_2)}{{x_2}^2 + {y_2}^2} = \left(\frac{x_1x_2 + y_1y_2}{x_2^2 + y_2^2}\right)+ i\left(\frac{-x_1y_2 + y_1x_2}{x_2^2 + y_2^2}\right).$$ 在编程环境中实现这些运算是直接的;大多数现代编程语言都提供了内置的支持或者库函数来进行复数计算。例如,在Python中有`complex()`构造器以及相关的算术操作符可以直接用于处理复数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值