为什么scanf需要两个数字?

时间:2017-04-15 20:09:24

标签: c printf scanf stdio

我希望程序获取用户的身高和体重,然后将其输入到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);
}

2 个答案:

答案 0 :(得分:5)

删除scanf("%d", &bmi);bmi设置值,然后将其值作为输入!

答案 1 :(得分:0)

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

你已经定义了int类型的main函数,所以它必须返回一个值。

请改用此代码

    #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;
    }