1

可能重复:
如何在 C 中处理复数?

所以我有这段 C 代码编译错误,说“复杂”没有命名类型:

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

int main ()
{
    int B=9;
    double theta;

    double complex w;
    float x,y;

    x= 5*cos (theta) - 2;
    y= 5*sin (theta);


    double complex z=x+y*I;
    w=z+(B/z);

    for(theta=0;theta<=360;theta=+30)
    { printf ("%.2f  %.2f  %.2f  %.2f",creal(z), cimag(z),y,creal(w), cimag(w));
        printf ("/n");
    } 

    return 0;

    system ("pause");
}

我已经包括了<complex.h>为什么“复杂”仍然存在错误。还有其他错误,但让我们先关注这个。

4

2 回答 2

4

您是否使用 GCC 作为编译器?如果是,您需要使用-std=c99or-std=gnu99编译器标志来启用 C99 支持。

此外,在使用变量之前声明它们。这里:

double complex z=x+y*I;

既没有xy没有被宣布。当然,您还需要初始化它们。例如:

float x = 5 * cos(theta) - 2;
float y = 5 * sin(theta);
double complex z = x + y * I;
于 2012-11-28T16:29:24.187 回答
1

这应该工作:

#include <stdio.h>
#include <complex.h>
#include <math.h>
int main ()

{
 int B=9;
 double theta;
 double complex w;
 float x = 5*cos (theta) - 2;
 float y = 5*sin (theta);
 double complex z=x+y*I;

 w=z+(B/z);

 for(theta=0;theta<=360;theta=+30)
  { printf ("%.2f  %.2f  %.2f  %.2f",creal(z), cimag(z),y,creal(w), cimag(w));
   printf ("/n");
  } 

  return 0;
 }
于 2012-11-28T16:35:13.320 回答