当给出正整数n时,我必须编写显示统一的第n个根的程序。它是K.N.King关于C编程的书中的编程项目27.4。
我的尝试:
#include <stdio.h>
#include <complex.h>
#include <math.h>
int main(void)
{
int n, k;
double complex nth;
printf("Enter positive integer: ");
scanf("%d", &n);
for (k = 0; k < n; k++) {
nth = exp(2 * M_PI * I * k / n);
printf("k = %d, %g + %g\n", k, creal(nth), cimag(nth));
}
return 0;
}
无论n的值是多少,我传递的结果都是一样的。你能给我一些提示吗?
答案 0 :(得分:2)
exp
函数需要double
,但您传递double complex
。
改为使用cexp
:
nth = cexp(2 * M_PI * I * k / n);
输出:
Enter positive integer: 5
k = 0, 1 + 0
k = 1, 0.309017 + 0.951057
k = 2, -0.809017 + 0.587785
k = 3, -0.809017 + -0.587785
k = 4, 0.309017 + -0.951057