【发布时间】:2016-02-12 10:13:45
【问题描述】:
我正在尝试编写一个简单的 BMI 计算器,但由于某种原因,当我尝试身高 175(公式为 1.75)和体重 70 时,它应该给出 22.8,这在健康范围内,但它给出我体重过轻。我知道这可能是一个简单的错误,但我看不到。
float main(void) {
float height;
printf("Enter your height in cm:\n");
scanf("%f",&height);
float weight;
printf("Enter your weight in kg:\n");
scanf("%f",&weight);
float bmi;
bmi = (weight/(height/100)*(height/100));
if (bmi <= 16) {
printf("Severely Underweight\n");
}
else if (16 < bmi <= 18.5) {
printf("Underweight\n");
}
else if (18.5 < bmi <= 25) {
printf("Healthy\n");
}
else if (25 < bmi <= 30) {
printf("Overweight\n");
}
else {
printf("Severely Overweight\n");
}
}
【问题讨论】:
-
Bathsheba 有,但你一开始不需要复合条件,因为条件发生在
else ifs 中,下限已经确定。 -
哦,请从
main返回int,而不是float。 -
C 和 C++ 都不支持这样的运算符链接。将条件一分为二,用逻辑 AND 运算符分隔以获得所需的结果。
-
我喜欢总是说我没有超重的体重指数计算器。编译并发布!
-
更糟糕的是,它总是说我超级肥胖,因为计算不正确:假设的分母相互抵消,结果就是以公斤为单位的重量。 (有趣的是,公式使用了很多括号,却漏掉了分母周围唯一重要的一对。)
标签: c++ c if-statement math indexing