gpt4 book ai didi

C - 如何为计算表达式的结果打印出不同的字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:59 24 4
gpt4 key购买 nike

我有一个循环,以这种格式为 10 个用户打印出不同的 BMI 值:

                        USER    BMI    STATUS
1
:
10

BMI 状态是字符串“超重”、“正常”、“体重不足”和“肥胖”

  1. 体重过轻 - 当 BMI 低于 18.50 时
  2. 正常 - BMI 介于 18.50 和 24.9 之间
  3. 超重 - 当 BMI 从 25.0 到 29.9 时
  4. 肥胖 - 当 BMI 大于 30.0 时

我已经从我得到的很棒的答案中找出如何在新行上打印出 BMI 值 here但我仍然发现很难显示 BMI 状态。

这是我的,

#include <stdio.h>
#include <math.h>

int main(void) {

float weight_value[10];
float user_height[10];
float BMI = 0.0f;
char* BMI_Status[] = {"Underweight", "Normal", "Overweight", "Obese"};

int i;

for ( i = 0; i < 10; i++ )
{
printf("Please enter your weight: ");
scanf("%f", &weight_value[i]); //Reads in the user's weight and stores it in an array
printf("Now enter your height: ");
scanf("%f", &user_height[i]); //Reads in the user's height and stores it in an array.
}
printf("\n");
printf("USER BMI STATUS\n");

for ( i = 0; i < 10; i++ )
{
BMI = weight_value[i] / (user_height[i] * user_height[i]);
printf("%2d %23.7f \n", i+1 , BMI );
}

return 0;
}

我创建了一个包含 BMI 状态字符串的字符数组,但由于这些字符串将从代码中的表达式中推导出来,我不知道如何在每一行上打印它们。

我想过使用 if 条件来测试 BMI 值何时为真,但是当我到达要添加打印出 BMI 状态字符串的参数的部分时,我困惑了。

最佳答案

如果你真的需要一行中的所有东西,你可以写出所有三级运算符表达式的母亲:

 printf("%2d %23.7f %23s", i+1, BMI, BMI_Status[(BMI<18.5 ? 0 : (BMI < 24.9 ? 1 : (BMI < 29.9 ? 2 : 3)))])

实际上,这只是将 Joe M 的回答中的 if-elseif-else 风格整合到一行中。请注意,我永远不会在生产代码中写这样的东西,而是其他人建议的东西。

关于C - 如何为计算表达式的结果打印出不同的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26655120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com