【发布时间】:2014-12-25 14:04:45
【问题描述】:
我有一个模拟 BMI(身体质量指数)计算器的程序,它接收来自 10 个用户的输入,询问每个用户的体重和身高,然后程序计算 BMI 并在格式化的输出中打印计算结果.
类似这样的:
USER BMI STATUS
1
:
10
所以我想到了这个,我会先接受用户的输入,然后尝试以上述格式的方式显示输入的计算。这是我试图提出的方法,它一直询问用户的体重和身高,直到第 10 个用户。
#include <stdio.h>
#include <math.h>
int main(void) {
float weight_value = 0.0f;
float user_height = 0.0f;
float BMI = 0.0f;
char BMI_Status[30];
int i;
for ( i = 1; i <= 10; i++)
{
printf("Please enter your weight: ");
scanf("%f", &weight_value); //Reads in the user's weight
printf("Now enter your height: ");
scanf("%f", &user_height); //Reads in the user's height
BMI = weight_value / (user_height * user_height);
}
return 0;
}
BMI 状态是一个字符串,显示计算出的 BMI 值的不同状态,当 BMI 值在给定范围内时,这些状态为 "Underweight", "Normal", "Overweight"。
上面的代码 sn-p 仍然不完整,因为我仍然发现很难添加其余代码。以下是我试图解决的问题。
-
我如何在输入 10 个输入后打印出 BMI 值?
我尝试使用嵌套的 for 循环来打印值,但这是不合逻辑的,因为现在外部 for 循环的每次迭代都会输出 BMI,所以我猜需要一种方法来制作
scanf()在 for 循环块之后保存 BMI 值。 -
如何让状态字符串出现?
我知道 C 中没有
string数据类型,所以我必须声明一个char数组来保存状态字符串,但这些是不同状态的不同字符串,必须打印出来对于每一行。我想为此设置if else if else条件,但我无法让char数组工作。
我已经成功编写了一段代码,在每次迭代时打印出用户的 BMI,但这不是它应该这样做的方式。
我想到的另一件事是将 BMI 值保存在浮点数数组中,然后以上述格式显示数组中的值,但我仍然对我打算如何执行此操作持怀疑态度。
【问题讨论】:
-
您的问题很难想象。我建议向我们展示您希望它看起来像的输出。
-
在扫描时将值插入数组中是可行的方法。
-
@LeatherFace 我已经通过展示第一段之后的输出应该如何做到这一点。