C 中通过 scanf 实现复数

Pyt*_*acz 3 c

我对以下代码片段有问题:

int main()
{
    int n = 3;

    complex_t t[3];
    for(int i = 0; i < n; i++)
    {
        double x, y;
        printf("Enter complex number: ");
        scanf("%f %f", &x, &y);
        t[i].re = x;
        t[i].im = y;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将 x 和 y 传递给程序时,它的值不会改变,而是 0.00000。你能帮助我吗?

cod*_*yne 6

您已将xand声明y为双精度数,但随后继续使用浮点数 ( %f) 的格式说明符。因此,最终结果是像普通浮点数一样读取它们,然后将结果塞入双精度数中,从而在尝试实际使用它们时留下意想不到的值。

您需要%lf在此处使用专门针对双精度数 ( ) 的格式说明符。

scanf("%lf %lf", &x, &y);
Run Code Online (Sandbox Code Playgroud)

有关不同格式说明符的更多信息,请参阅格式字符串规范。