C程序每次打印0.00000,但返回正确答案

C程序每次打印0.00000,但返回正确答案,c,floating-point,printf,C,Floating Point,Printf,我有一些非常简单的代码,我有问题。这个程序只是简单地以千克为单位计算某人的体重并显示出来。但是,每次运行时,打印的答案返回0.00000,但返回正确答案。有人看到我的代码有什么问题吗 #include <stdio.h> #include <math.h> int main(void) { float w; float const wc=0.454; printf("Enter your weight in pounds "); sc

我有一些非常简单的代码,我有问题。这个程序只是简单地以千克为单位计算某人的体重并显示出来。但是,每次运行时,打印的答案返回0.00000,但返回正确答案。有人看到我的代码有什么问题吗

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

int main(void)
{ 
    float w;
    float const wc=0.454;

    printf("Enter your weight in pounds ");
    scanf("%f", &w); 

    float wk = w * wc;

    printf("Your weight in kilograms is: %f", &wk);

    return(wk);
} 
#包括
#包括
内部主(空)
{ 
浮动w;
浮子常数wc=0.454;
printf(“以磅为单位输入您的体重”);
扫描频率(“%f”和“w”);
浮球wk=w*wc;
printf(“您的体重(千克)为:%f”,&wk);
返回(周);
} 

打印值时,不需要将变量的地址作为参数传递给格式说明符。你需要改变

 printf("Your weight in kilograms is: %f", &wk);

也就是说

  • 始终检查
    scanf()
    的返回值。如果没有该选项,则在
    scanf(“%f”和&w)的情况下失败,您将调用,因为您将使用一个统一的局部变量
    float wk=w*wc
    浮动wk=w*wc

  • 请不要使
    return
    看起来像函数。尽量坚持
    返回工作


  • 仅供参考:
    main
    函数的返回代码是程序的成功/失败指示器。一般来说,零被认为是成功的,小的正数被认为是失败的。编译器警告。启用并读取它们。检查返回值的方法是。。。(如果(扫描(事物)!=numOfThingsScaned){停止一切。})
     printf("Your weight in kilograms is: %f", wk);