[C数据结构]创建复数数据类型

对于复数 我们只需要实部(realpart)和虚部(imagepart)便可以创建一个复数的数据类型

对于复数的四则运算 + - * /

我们可以设a1+b1*i 和a2 + b2*i 进行四则运算,获得的表达式即为四则运算的表达式

代入函数中计算即可

#include 
#include 
typedef struct complex *Complex;    //定义复数类型指针
struct complex{
	float real;
	float image;              //创建复数的数据类型
};
Complex assign(float real,float image)        //定义返回复数指针类型的函数                
{
	Complex c1=(Complex)malloc(sizeof(struct complex));
	if(c1==NULL)            //若malloc申请内存空间失败会返回NULL
	{
		printf("创建失败!"); return c1; 
	}
	c1->image=image;
	c1->real=real;
	return c1;        
}
Complex multiply(Complex c1,Complex c2)    //乘法运算
{
	Complex c3=(Complex)malloc(sizeof(struct complex));
	c3->real=c1->real*c2->real - c2->image*c1->image;
	c3->image=c1->real*c2->image - c2->real*c1->image;
	return c3;
}
Complex divide(Complex c1,Complex c2) //除法运算
{
	Complex c3=(Complex)malloc(sizeof(struct complex));
    if(c2->real==0&&c2->image==0){
        printf("ERROR:该数为INF类型!"); return c3;//若分母为0提示错误信息,并返回无数据复数
    }
	c3->real=(c1->real*c2->real+c1->image*c2->image)/(c2->real*c2->real+c2->image*c2->image);
	c3->image=(c1->image*c2->real-c1->real*c2->image)/(c2->real*c2->real+c2->image*c2->image);
	return c3;
}
Complex sub(Complex c1,Complex c2) //减法运算
{
	Complex c3=(Complex)malloc(sizeof(struct complex));
	c3->real=c1->real-c2->real;
	c3->image=c1->image-c2->image;
	return c3;
}
Complex add(Complex c1,Complex c2)   //加法运算
{
	Complex c3=(Complex)malloc(sizeof(struct complex));
	c3->real=c1->real+c2->real;
	c3->image=c1->image+c2->image;
	return c3;
}
void output(Complex c1)   //输出函数
{
	printf("%.6f+%.6fi",c1->real,c1->image);
 } 
int main()
{	
    float image,real,image1,real1;
	scanf("%f%f",&real,&image);
	scanf("%f%f",&real1,&image1);
	Complex c1=assign(real,image);
	Complex c2=assign(real1,image1);
	Complex c3=divide(c1,c2);
	output(c3); 
}

下面是除法运算 运行示例

[C数据结构]创建复数数据类型_第1张图片

你可能感兴趣的:(c语言,数据结构,开发语言)