C语言_用结构体类型实现复数的加、减、乘、除运算,每种运算用函数完成

部分图片来自复数乘法(复数运算公式大全) - 红豆博客

如题ヽ(゜▽゜ )因为比较简单就直接给示例了。

这里输入的是复数 a+bi 中的实部 a 和虚部 b。

首先我们要知道复数的运算是如何的:

        加和减:

        乘:

        除:

代码如下:

#include<stdio.h>
typedef struct complex
{
	float real;
	float imag;
}COMPLEX;
void input(COMPLEX *s1,char *c,COMPLEX *s2);
void output(COMPLEX a,COMPLEX b,COMPLEX s,char c);
COMPLEX add(COMPLEX str1,COMPLEX str2);
COMPLEX sub(COMPLEX str1,COMPLEX str2);
COMPLEX mul(COMPLEX str1,COMPLEX str2);
COMPLEX div(COMPLEX str1,COMPLEX str2);
main ()
{
	COMPLEX a,b,s;
	char c;
	printf ("请输入两个复数和一个运算符(用空格隔开):\n");
	input(&a,&c,&b);
	if (c=='+')
		s=add(a,b);
	if (c=='-')
		s=sub(a,b);
	if (c=='*')
		s=mul(a,b);
	if (c=='/')
		s=div(a,b);
	output(a,b,s,c);
}
void input(COMPLEX *s1,char *c,COMPLEX *s2)
{
	scanf ("%f %f %c %f %f",&s1->real,&s1->imag,c,&s2->real,&s2->imag);
}
COMPLEX add(COMPLEX str1,COMPLEX str2)
{
	COMPLEX ad;
	ad.real=str1.real+str2.real;
	ad.imag=str1.imag+str2.imag;
	return ad;
}
COMPLEX sub(COMPLEX str1,COMPLEX str2)
{
	COMPLEX su;
	su.real=str1.real-str2.real;
	su.imag=str1.imag-str2.imag;
	return su;
}
COMPLEX mul(COMPLEX str1,COMPLEX str2)
{
	COMPLEX mu;
	mu.real=(str1.real*str2.real)-(str1.imag*str2.imag);
	mu.imag=(str1.real*str2.imag)+(str1.imag*str2.real);
	return mu;
}
COMPLEX div(COMPLEX str1,COMPLEX str2)
{
	COMPLEX di;
	di.real=(str1.real*str2.real+str1.imag*str2.imag)/(str2.real*str2.real+str2.imag*str2.imag);
	di.imag=(str1.imag*str2.real-str1.real*str2.imag)/(str2.real*str2.real+str2.imag*str2.imag);
	return di;
}
void output(COMPLEX a,COMPLEX b,COMPLEX s,char c)
{
	if (b.real==0&&b.imag==0)
		printf ("error\n");
	else
	{
		printf ("运算结果显示:\n");
		if (a.imag>0||b.imag>0)
			printf ("(%.1f+%.1fi) %c (%.1f%.1fi) = ",a.real,a.imag,c,b.real,b.imag);
		else
			printf ("(%.1f%.1fi) %c (%.1f%.1fi) = ",a.real,a.imag,c,b.real,b.imag);
		if (s.imag>0)
			printf ("(%.1f+%.1fi)\n",s.real,s.imag);
		else
			printf ("(%.1f%.1fi)\n",s.real,s.imag);
	}
}

运行结果:

        复数加法:

         复数减法:

        复数乘法:

        复数除法:

        无法运算:

以上! (欢迎评论互动)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值