<C语言> 求关于复数的极坐标形式和笛卡尔形式的转换

笛卡尔形式: z = a + b * i

极坐标形式: z = r * (cos(𝜑) + i * sin(𝜑))

𝑟= √𝑎2+𝑏2

𝜑=arccos(𝑎/𝑟)=arcsin(𝑏/𝑟)

𝑎=𝑟∙cos𝜑

𝑏=𝑟∙sin𝜑

并完成下面两个自定义函数

void inPolarform(double a, double b, double *r, double *phi);

void inKartesischeForm(double r, double phi, double *a, dou-ble *b);

最后需要使用第二个函数来检验结果是否正确

代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>
#include <math.h>

void inPolarform(double a, double b, double *r, double *phi)
{
	*r = sqrt(a*a + b*b);
	*phi = acos(a/(*r));
}

void inKartesischeForm(double r, double phi, double *a, double *b)
{
	*a = r*cos(phi);
	*b = r*sin(phi);
}

int main()
{
	double a = 2;
	double b = 3;
	double r,phi,a2,b2;
	inPolarform(a,b,&r,&phi);
	inKartesischeForm(r,phi,&a2,&b2);
	printf("a2=%g  b2=%g\n",a2,b2);
	return 0;
}