gpt4 book ai didi

c - 指针在打印语句中未返回正确的值

转载 作者:行者123 更新时间:2023-11-30 14:35:53 26 4
gpt4 key购买 nike

我无法让这段代码工作。当我运行调试器时,幅度和相位计算正确,但在打印它们时,始终打印 180 和 0。相关代码如下: main 中的函数调用:

double *magnitude, *phase;

cal_mag_phase(z1real, z1imag, &magnitude, &phase);
printf("magnitude and phase (in degrees) of (%.2lf + %.2lfi) are %lf and %lf\n",
z1real, z1imag, &magnitude, &phase);

计算函数:

void cal_mag_phase(double z1real, double z1imag, double magnitude, double *phase)
{
//magnitude is square root of components squared
*magnitude = sqrt(pow(z1real,2)+pow(z1imag,2));
//phase is calculated then converted to degrees
*phase = atan(z1imag/z1real)180/3.1415;

最佳答案

不确定这是否是这个想法(我没有检查数学方面,并且 atan() 调用后的“180/3.1415”缺少操作数),但我认为这是您的代码调整后的指针:

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

void cal_mag_phase(double z1real, double z1imag, double* magnitude, double* phase)
{
//magnitude is square root of components squared
*magnitude = sqrt(pow(z1real,2)+pow(z1imag,2));
//phase is calculated then converted to degrees
*phase = atan(z1imag/z1real);// what's this?-->180/3.1415;
}

int main(void) {
double magnitude, phase;
double z1real, z1imag;

z1real = 1;
z1imag = 1;

cal_mag_phase(z1real, z1imag, &magnitude, &phase);
printf("magnitude and phase (in degrees) of (%.2lf + %.2lfi) are %lf and %lf\n", z1real, z1imag, magnitude, phase);
}

我还添加了复数 Z1 的变量和值。

关于使用指针的注释,参数前缺少一个“*”。

除此之外,我刚刚重新格式化了您的代码。我知道您是新来的,但请始终尝试清晰地格式化代码,以便更容易阅读和测试(在本例中,包括运行代码所需的 Z1 声明)。

关于c - 指针在打印语句中未返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58295729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com