Scanf始终返回0.000000

Scanf始终返回0.000000,c,floating-point,int,printf,scanf,C,Floating Point,Int,Printf,Scanf,我正在尝试制作一个简单的程序来计算体重指数,但是不管我怎么做,扫描函数总是返回0.00000。我到处找,试了很多东西, 谢谢大家 #include <stdio.h> #include <stdlib.h> int main() { float height; float initialheight; float weight; float bmi; float nothing; printf("What's your

我正在尝试制作一个简单的程序来计算体重指数,但是不管我怎么做,扫描函数总是返回0.00000。我到处找,试了很多东西, 谢谢大家

#include <stdio.h>
#include <stdlib.h>


int main() {
    float height;
    float initialheight;
    float weight;
    float bmi;
    float nothing;

    printf("What's your weight? ");
    scanf("%lf", &weight);
    printf("%f", &weight);

    printf("What's your height? ");
    scanf("%lf", &initialheight);
    printf("%f", &initialheight);

    height = (initialheight * initialheight);
    printf("%f", &height);

    bmi = (weight / height);
    printf("Your BMI is ");
    printf("%f", &bmi);

    scanf("%f", nothing); //just to keep the program open
    return 0;
}
#包括
#包括
int main(){
浮动高度;
浮动初始高度;
浮重;
浮动体重指数;
没有浮动;
printf(“你的体重是多少?”);
扫描频率(“%lf”和重量);
printf(“%f”和重量);
printf(“你的身高是多少?”);
scanf(“%lf”、&initialheight);
printf(“%f”、&initialheight);
高度=(初始高度*初始高度);
printf(“%f”和高度);
体重指数=(体重/身高);
printf(“您的体重指数为”);
printf(“%f”和bmi);
scanf(“%f”,nothing);//只是为了让程序保持打开状态
返回0;
}

如果打印值,则不必打印地址

因此,改变这一点:

printf("%f", &weight);
为此:

printf("%f", weight);
这样您就可以打印值了

您还必须在scanf中将
%lf
更改为
%f

因此,您的程序应该如下所示:

#include <stdio.h>
#include <stdlib.h>

int main(){

    float height, initialheight, weight, bmi;

    printf("What's your weight?\n>");
    scanf(" %f", &weight);

    printf("%.2f\n\n", weight);

    printf("What's your height?\n>");
    scanf(" %f", &initialheight);

    printf("%.2f\n\n", initialheight);

    height = (initialheight * initialheight);
    bmi = (weight / height)*10000;

    printf("Your BMI is ");
    printf("%.2f\n\n", bmi);

    system("pause");
    return 0;

}
结果/BMI为:

22.86
旁注:

BMI = mass(kg) / (height(m) * height(m))

BMI = mass(lb) / (height(in) * height(in)) * 703

你必须改变两件事。首先,将
printf(“%f”,和weight)
更改为
printf(“%f”,weight)
。另外,将
scanf(“%lf”、&weight)
更改为
scanf(“%f”、&weight)
将使您的程序正常运行。

为什么不检查scanf的返回值?编译时会出现警告。
BMI = mass(kg) / (height(m) * height(m))

BMI = mass(lb) / (height(in) * height(in)) * 703