题解:洛谷 P5714 肥胖问题

【题目来源】

洛谷:P5714 【深基3.例7】肥胖问题 - 洛谷

【题目描述】

BMI 指数是国际上常用的衡量人体胖瘦程度的一个标准,其算法是 \(\frac{m}{h^2}\),其中 \(m\) 是指体重(千克),\(h\) 是指身高(米)。不同体型范围与判定结果如下:

  • 小于 \(18.5\):体重过轻,输出 Underweight
  • 大于等于 \(18.5\) 且小于 \(24\):正常体重,输出 Normal
  • 大于等于 \(24\):肥胖,不仅要输出 BMI 值(使用 cout 的默认精度),然后换行,还要输出 Overweight

现在给出体重和身高数据,需要根据 BMI 指数判断体型状态并输出对应的判断。

对于非 C++ 语言,在输出时,请四舍五入保留六位有效数字输出,如果小数部分存在后缀 \(0\),不要输出后缀 \(0\)

请注意,保留六位有效数字不是保留六位小数。例如 \(123.4567\) 应该输出为 \(123.457\)\(5432.10\) 应该输出为 \(5432.1\)

【输入】

共一行。

第一行,共 \(2\) 个浮点数,\(m,h\),分别表示体重(单位为 kg),身高(单位为 m)。

【输出】

输出一行一个字符串,表示根据 BMI 的对应判断。特别地,对于 Overweight 情况的特别处理请参照题目所述。

【输入样例】

70 1.72

【输出样例】

Normal

【核心思想】

  1. 问题分析:给定体重 \(m\)(kg)和身高 \(h\)(m),计算 BMI 指数 \(= \frac{m}{h^2}\),根据数值范围判断体型:小于 \(18.5\) 输出 Underweight\([18.5, 24)\) 输出 Normal,大于等于 \(24\) 先输出 BMI 值再输出 Overweight

  2. 算法选择

    • 直接计算 + 分支判断:按公式计算 BMI,用 if-else if-else 链根据范围输出对应结果
  3. 关键步骤

    • 读入数据cin >> m >> h
    • 计算 BMIbmi = m / (h * h)
    • 分类输出
      • bmi < 18.5:输出 "Underweight"
      • 否则若 bmi < 24:输出 "Normal"(隐含 bmi >= 18.5
      • 否则:输出 bmi 换行 "Overweight"
  4. 时间/空间复杂度

    • 时间复杂度:\(O(1)\),单次计算和判断
    • 空间复杂度:\(O(1)\),仅需三个变量
  5. 健康指标计算的核心思想

    • 连续区间划分:BMI 范围被划分为三个连续区间,用 if-else if 链自然处理边界
    • 浮点比较:直接使用 < 比较浮点数,题目数据保证不会出现边界精度问题
    • 特殊输出格式Overweight 情况需先输出数值再输出标签,与其他两类不同
    • 适用于指标计算、区间分类、健康评估类入门问题

【算法标签】

入门 #模拟

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
using namespace std;      // 使用标准命名空间

/**
 * 主函数 - 程序入口
 * @return 程序执行状态码(0表示成功)
 */
int main()
{
    int m;               // 定义变量:体重m(kg)
    double bmi, h;       // 定义变量:bmi指数,身高h(m)

    cin >> m >> h;       // 输入体重和身高

    // 计算BMI指数(体重除以身高的平方)
    bmi = m / (h * h);

    // 根据BMI值判断体型分类
    if (bmi < 18.5)
    {
        // BMI < 18.5:体重过轻
        cout << "Underweight";
    }
    else if (bmi < 24)
    {
        // 18.5 ≤ BMI < 24:正常体重
        cout << "Normal";
    }
    else
    {
        // BMI ≥ 24:超重(输出BMI值+分类)
        cout << bmi << endl << "Overweight";
    }

    return 0;            // 程序正常结束
}

【运行结果】

70 1.72
Normal
posted @ 2026-08-05 15:47  团爸讲算法  阅读(12)  评论(0)    收藏  举报