main.cpp
#include
#include
#include "Complex.h"
Complex c1,c2,c3;
float r,i;
float a,b,c,d;
int main(int argc, char** argv)
{
begin:system("cls");
printf("请选择功能: \n");
printf(" 1.复数相加 2.复数相减\n");
printf(" 3.复数相乘 4.共轭复数\n");
printf(" 5.退出 \n" );
int choice;
scanf("%d", &choice);
system("cls");
switch(choice)
{
case 1:
printf("请输入第一个加数的实部");
scanf("%f",&a);
printf("第一个加数的虚部");
scanf("%f",&b);
printf("第二个加数的实部");
scanf("%f",&c);
printf("第二个加数的虚部");
scanf("%f",&d);
AssignComplex(c1,a,b);
AssignComplex(c2,c,d);
AssignComplex(c3,0,0);
system("cls");
Add(c1,c2,c3);
GetReal(c3,r);
GetImag(c3,i);
printf("结果=%f+%fi",r,i);
break;
case 2:
printf("请输入被减数的实部");
scanf("%f",&a);
printf("被减数的虚部");
scanf("%f",&b);
printf("减数的实部");
scanf("%f",&c);
printf("减数的虚部");
scanf("%f",&d);
AssignComplex(c1,a,b);
AssignComplex(c2,c,d);
AssignComplex(c3,0,0);
system("cls");
subtracte(c1,c2,c3);
GetReal(c3,r);
GetImag(c3,i);
printf("结果=%f+%fi",r,i);
break;
case 3:
printf("请输入第一个乘数的实部");
scanf("%f",&a);
printf("第一个乘数的虚部");
scanf("%f",&b);
printf("第二个乘数的实部");
scanf("%f",&c);
printf("第二个乘数的虚部");
scanf("%f",&d);
AssignComplex(c1,a,b);
AssignComplex(c2,c,d);
AssignComplex(c3,0,0);
system("cls");
multiply(c1,c2,c3);
GetReal(c3,r);
GetImag(c3,i);
printf("结果=%f+%fi",r,i);
break;
case 4:
printf("请输入数的实部");
scanf("%f",&a);
printf("请输入数的虚部");
scanf("%f",&b);
AssignComplex(c1,a,b);
AssignComplex(c3,0,0);
system("cls");
conjugate(c1,c3);
GetReal(c3,r);
GetImag(c3,i);
if(i>0)
printf("结果=%f+%fi",r,i);
else
printf("结果=%f%fi",r,i);
break;
case 5:
exit(0);
default:
printf("选项无效,即将跳转到主菜单...\n");
sleep(1);
system("cls");
}
getchar();
printf("\n按任意键返回...");
getchar();
goto begin;
}
Complex.cpp
#include "Complex.h"
void AssignComplex(Complex &z,float v1,float v2)
{
z=(float*)malloc(2*sizeof(float));
z[0]=v1;
z[1]=v2;
}
void GetReal(Complex z,float &real)
{
real=z[0];
}
void GetImag(Complex z,float &Imag)
{
Imag=z[1];
};
void Add(Complex z1,Complex z2,Complex &sum)
{
sum[0]=z1[0]+z2[0];
sum[1]=z1[1]+z2[1];
}
void subtracte(Complex z1,Complex z2,Complex &sum)
{
sum[0]=z1[0]-z2[0];
sum[1]=z1[1]-z2[1];
}
void conjugate(Complex z1,Complex &sum)
{
sum[0]=z1[0];
sum[1]=-z1[1];
}
void multiply(Complex z1,Complex z2,Complex &sum)
{
sum[0]=z1[0]*z2[0]-z1[1]*z2[1];
sum[1]=z1[1]*z2[0]+z1[0]*z2[1];
}
complex.h
#include
#include
typedef float * Complex;
void AssignComplex(Complex &z,float v1,float v2);
void GetReal(Complex z,float &real);
void GetImag(Complex z,float &Imag);
void Add(Complex z1,Complex z2,Complex &sum);
void subtracte(Complex z1,Complex z2,Complex &sum);
void multiply(Complex z1,Complex z2,Complex &sum);
void conjugate(Complex z1,Complex &sum);