如何计算复数的模 #包括 #包括 typedef结构复合体{ int-real,imag; }复杂的; int main() { int n; 复数*z; scanf(“%d”和“&n”); 对于(int i=0;i

如何计算复数的模 #包括 #包括 typedef结构复合体{ int-real,imag; }复杂的; int main() { int n; 复数*z; scanf(“%d”和“&n”); 对于(int i=0;i,c,complex-numbers,C,Complex Numbers,现在,您正在尝试将多个数字写入复数*z中,就像它是一个数组一样。它只是指向单个复数结构的指针。如果您希望有多个复数,请尝试生成大小为n的复数数组。对于int*d也是这样 我的建议是,首先让它对单个复数起作用,因为即使没有数组问题,您也会使用=#include来分配变量 #include <stdio.h> #include <math.h> typedef struct complex { int real, imag; }complex; int main

现在,您正在尝试将多个数字写入复数
*z
中,就像它是一个数组一样。它只是指向单个复数结构的指针。如果您希望有多个复数,请尝试生成大小为n的复数数组。对于int
*d
也是这样

我的建议是,首先让它对单个复数起作用,因为即使没有数组问题,您也会使用
=

#include来分配变量
#include <stdio.h>
#include <math.h>

typedef struct complex {
    int real, imag;
}complex;


int main ()
{
    int n;
    complex *z;
    scanf("%d", &n);

    for (int i=0 ; i<n ; i++)
    {
        scanf("%d %d", &z[i].real, &z[i].imag);
    }

    for( int i = 0; i < n; i++)
    {
        int *d;
        d[i]==sqrt((z[i].real*z[i].real)+(z[i].imag*z[i].imag));
        printf("%d\n", d[i]);
    }

    return 0;
}
#包括 结构复合体{ int-real,imag; }; int main() { int n; scanf(“%d”和“&n”); 结构复合体z[n];
对于(int i=0;iC有标准的复数类型和作用于它们的函数…请参见
z
不指向任何地方,但您取消引用它您在循环内声明*d,这是无用的,并且在每次迭代中都会重新声明,而且它不能在该循环之外的任何地方使用,“==”应该是“=”正如“北极海象”在回答中所说的那样。
#include <stdio.h>
#include <math.h>

struct Complex {
    int real, imag;
};

int main ()
{
    int n;
    scanf("%d", &n);
    struct Complex z[n];

    for (int i=0 ; i<n ; i++)
    {
        scanf("%d %d", &z[i].real, &z[i].imag);
    }

    double d[n];
    for( int i = 0; i < n; i++)
    {
        d[i] = sqrt((z[i].real*z[i].real)+(z[i].imag*z[i].imag));
        printf("%f\n", d[i]);
    }

    return 0;
}