为什么 scanf 需要两个数字?

Why does scanf expect two numbers?

我想让程序获取用户的身高和体重,然后将其输入到 bmi 公式中,然后输出结果。

身高问题没问题,但是当您在体重问题中输入一个数字并按回车键时,它只会换行。输入另一个数字后,它会将其设置为 bmi 并打印出来。

#include<stdio.h>

int main()
{
int h, w, bmi;

printf("What is your height (in inches)? ");
scanf("%d", &h);

printf("What is your weight? ");
scanf("%d", &w);

bmi = (w/(h*h))*703;
scanf("%d", &bmi);

printf("\t\tBMI\n");
printf("US: %d\n", bmi);
}

删除 scanf("%d", &bmi); 您为 bmi 设置的值,然后要求它的值作为输入!

您对所有三个变量都使用了 int。因此,当您将 w(体重)除以 h(身高)的平方时,通常会得到结果 0.xxxxxx。但是在这里你将这个结果存储在一个整数变量中,但它不能存储那个浮点值。所以它只存储0,然后0乘以703,这没有用。

并且您已经定义了 int 类型的主函数,因此它必须 return 一个值。

改用此代码

    #include<stdio.h>

    int main()
    {
      float h, w, bmi;

      printf("What is your height (in inches)? ");
      scanf("%f", &h);

      printf("What is your weight? ");
      scanf("%f", &w);
      bmi=((w/(h*h))*703);

      printf("US: %f\n", bmi);
      return 0;
    }