1.定义表示复数的构造体
作成返回两个复数之积的函数zmul
z1 = (1.00000, 2.00000)
z2 = (-2.00000, -4.00000)
z1 * z2 = (6.00000, -8.00000)
v1 = (2.00000, 0.00000)
v2 = (-1.00000, -1.00000)
v1 * v2 = -2.0
#include <stdio.h>
typedef struct Complex_ {
double real;
double image;
}
Complex;
Complex zmul(Complex z1, Complex z2) {
Complex z;
z.real = z1.real * z2.real - z1.image * z2.image;
z.image = z1.real * z2.image + z1.image * z2.real;
return z;
}
typedef struct Vector2D_ {
double x;
double y;
} Vectro2D;
double dotProduct(Vectro2D v1, Vectro2D v2) {
return v1.x * v2.x + v1.y * v2.y;
}
int main() {
Complex z1 = {1.0, 2.0};
Complex z2 = {-2.0, -4.0};
Complex z = zmul(z1, z2);
printf("z1 * z2 = (%lf, %lf)\n", z.real, z.image);
Vectro2D v1 = {2.0, 0.0};
Vectro2D v2 = {-1.0, -1.0};
double d = dotProduct(v1, v2);
printf("v1 * v2 = %lf\n", d);
return 0;
}
复素数是?和复数啥关系啊
z1 * z2 = (6.00000, -8.00000)
v1 * v2 = -2.0
咋理解?怎么两个结果?
明白了
typedef struct _comp
{
double a;
double b;
}comp;
comp zmul(comp c1,comp c2)
{
comp c;
c.a = c1.a * c2.a - c1.b * c2.b;
c.b = c1.a * c2.b + c1.b * c2.a;
return c;
}
int main()
{
comp c1,c2,c;
printf("input first comp:");
scanf("%lf %lf",&c1.a,&c1.b);
printf("input second comp:");
scanf("%lf %lf",&c2.a,&c2.b);
c = zmul(c1,c2);
if(c.b == 0)
printf("%lf",c.a);
else
{
if(c.a == 0)
printf("%lfi",c.b);
else if(c.b>0)
printf("%lf+%lfi",c.a,c.b);
else
printf("%lf%lfi",c.a,c.b);
}
}