C语言实现复数计算器

C语言实现复数计算器

复数定义:

  • 形如 z=a+bi(a、b均为实数)的数称为复数。其中,a 称为实部,b 称为虚部,i 称为虚数单位。当 z 的虚部 b=0 时,则 z 为实数 ;当 z 的虚部 b≠0 时,实部 a=0 时,常称 z 为纯虚数

复数运算法则

C语言实现复数计算器_第1张图片

代码具体实现:

/* 
Created on Sun Mar 12 9:45 2022
@author: h
算法目的:实现复数的相关运算
加法:(a+bi)+(c+di)=(a+c)+(b+d)i 
减法:(a+bi)-(c+di)=(a-c)+(b-d)i
乘法:(a+bi)(c+di)=(ac-bd)+(ad+bc)i		i*i=-1
除法:(a+bi)/(c+di)=[(a+bi){c-di)]/[(c+di)(c-di)]=[(ac+bd)+(bc-ad)i]/c^2+d^2
*/ 

#include 

#include 
//自定义一个复数抽象类型 
typedef struct {
	double realpart;		//实部 
	double imagpart;		//虚部 
}Complex;

//函数的声明
void assign(Complex *p, double real, double imag);
void add(Complex *p, Complex z1, Complex z2);
void subtraction(Complex *p, Complex z1, Complex z2);
void multiply(Complex *p, Complex z1, Complex z2);
void divide(Complex *p, Complex z1, Complex z2);
void display_complex(Complex z);


//函数的使用 
int main() {
	double realpart, imagpart;
	Complex z1, z2, z;
	int flag = 0;
	do {
		printf("--------------------------------\n");
		printf("欢迎您使用复数计算器\n");

        printf("请您输入复数的实部和虚部\n");
        scanf("%lf%lf", &realpart, &imagpart);
        assign(&z1, realpart, imagpart);
        display_complex(z1);
        
        printf("请您输入第二个复数的实部和虚部\n");
        scanf("%lf%lf", &realpart, &imagpart);
        assign(&z2, realpart, imagpart);
        display_complex(z2);
        
        printf("请您选择需要进行的操作\n");
        printf("1加法\n2减法\n3乘法\n4除法\n0退出复数计算器\n");
        scanf("%d", &flag);
        
        if(flag==1||flag==2||flag==3||flag==4) {
        	printf("您的计算结果是:");
		}
		
		switch(flag) {
			case 1:
				add(&z, z1, z2);
				display_complex(z);
				break;
			case 2:
				subtraction(&z, z1, z2);
				display_complex(z);
				break;
			case 3:
				multiply(&z, z1, z2);
				display_complex(z);
				break;
			case 4:
				divide(&z, z1, z2);
				display_complex(z);
				break;
			default:
				if(flag==0)
					printf("谢谢使用\n");
				else {
					printf("你输入的操作有误,请重新输入\n");
				}
		}
	}while(flag!=0);
	
	return 0;
}


//函数的实现 
//定义一个复数 
void assign(Complex *p, double real, double imag) {
	p->realpart = real;
	p->imagpart = imag;
}
//加法运算
void add(Complex *p, Complex z1, Complex z2) {
	p->realpart = z1.realpart + z2.realpart;
	p->imagpart = z1.imagpart + z2.imagpart;
} 
//减法运算
void subtraction(Complex *p, Complex z1, Complex z2) {
	p->realpart = z1.realpart - z2.realpart;
	p->imagpart = z1.imagpart - z2.imagpart;
}
//乘法运算
void multiply(Complex *p, Complex z1, Complex z2) {
	p->realpart = z1.realpart * z2.realpart - z1.imagpart * z2.imagpart;
	p->imagpart = z1.realpart * z2.imagpart + z2.realpart * z1.imagpart;
}
//除法运算 
void divide(Complex *p, Complex z1, Complex z2) {
	double temp = pow(z2.realpart, 2) + pow(z2.imagpart, 2);
	if(z2.realpart!=0&&z2.imagpart!=0) {
		p->realpart = (z1.realpart * z2.realpart + z1.imagpart * z2.imagpart) / temp;
		p->imagpart = (z1.imagpart * z2.realpart - z1.realpart * z2.imagpart) / temp;
	}
	else {
		printf("除数为0,请重新输入数据\n");
	}
}
//输出一个复数
void display_complex(Complex z) {
	if(z.imagpart > 0) {
		printf("%lf+%lfi\n", z.realpart, z.imagpart);
	}
	else if(z.imagpart < 0) {
		printf("%lf%lfi\n", z.realpart, z.imagpart);
	}
	else {
		printf("%lf\n", z.realpart);
	}
} 

结果展示:

C语言实现复数计算器_第2张图片

你可能感兴趣的:(算法实现,c语言,算法)