定义复数变量时出错

时间:2012-11-28 16:25:58

标签: c complex-numbers

  

可能重复:
  How to work with complex numbers in 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>,为什么“复杂”仍然存在错误。还有其他错误,但我们首先要关注这个错误。

2 个答案:

答案 0 :(得分:4)

您使用GCC作为编译器吗?如果是,则需要使用-std=c99-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;

答案 1 :(得分: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;
 }