基于C++实现BMI身体质量指数计算工具

 更新时间:2023年10月22日 14:50:03   作者:DevFrank  
BMI(Body Mass Index,身体质量指数),也称为体重指数,是一种常用的衡量成人人体肥胖程度的指标,本文就来用C++编写一个简单的BMI计算工具吧

1. 知识介绍

BMI(Body Mass Index,身体质量指数),也称为体重指数,是一种常用的衡量成人人体肥胖程度的指标。它通过身高和体重之间的数值关系来评估一个人的体重是否适中。

BMI的计算公式如下:

BMI = 体重(kg)/ (身高(m) * 身高(m))

根据计算得到的BMI值,可以将人体的体重状况分为以下几个范围:

  • BMI < 18.5:体重过轻
  • 18.5 <= BMI < 24:体重正常
  • 24 <= BMI < 28:超重
  • BMI >= 28:肥胖

虽然BMI是一种常用的评估指标,但它仅仅是通过身高和体重的比值来进行估算,并没有考虑到体脂肪和肌肉的比例以及身体的其他组成。因此,在评估个体的体重状况时,还应考虑其他因素,如体脂肪百分比、腰围、腰臀比等。

2. c++终端程序

#include <iostream>
using namespace std;

double calculateBMI(double weight, double height) {
    // 身高单位为米,体重单位为千克
    double bmi = weight / (height * height);
    return bmi;
}

void interpretBMI(double bmi) {
    if (bmi < 18.5) {
        cout << "体重过轻" << endl;
    } else if (bmi >= 18.5 && bmi < 24) {
        cout << "正常范围" << endl;
    } else if (bmi >= 24 && bmi < 28) {
        cout << "体重过重" << endl;
    } else if (bmi >= 28 && bmi < 32) {
        cout << "肥胖" << endl;
    } else {
        cout << "非常肥胖" << endl;
    }
}

int main() {
    double weight, height;
    
    cout << "请输入体重(千克):";
    cin >> weight;
    
    cout << "请输入身高(米):";
    cin >> height;
    
    double bmi = calculateBMI(weight, height);
    
    cout << "你的BMI指数为:" << bmi << endl;
    
    interpretBMI(bmi);
    
    return 0;
}

3. qt界面程序

// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDebug>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    /**
     * @brief on_pb_calculate_clicked
     * 自动创建的信号槽
     */
    void on_pb_calculate_clicked();

    /**
     * @brief printBMI
     * 手动创建的信号槽
     */
    void printBMI();

    /**
     * @brief calculateBMI
     * @param weight
     * @param height
     * @return double
     */
    double calculateBMI(double weight, double height);

    /**
     * @brief interpretBMI
     * @param bmi
     */
    void interpretBMI(double bmi);

private:
    Ui::MainWindow *ui;

    double weight, height;
};

#endif // MAINWINDOW_H
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    qDebug() << "start...";

    /* 终端输出计算值 */
    double mybmi = calculateBMI(80, 1.73);

    qDebug() << "terminal print: " << mybmi;

    connect(ui->pb_calculate_2, SIGNAL(clicked()), this, SLOT(printBMI()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pb_calculate_clicked()
{
    QString text = "Hello, BMI Tool! Auto created!";
    ui->tb_display->append(text);

    weight = ui->le_weight->text().toDouble();
    height = ui->le_height->text().toDouble();

    double bmi = weight / (height * height);
    QString strBMI = QVariant(bmi).toString();
    ui->tb_display->append(strBMI);

    interpretBMI(bmi);
}

void MainWindow::printBMI()
{
    QString text = "Hello, BMI Tool! Manual created!";
    ui->tb_display->append(text);

    weight = ui->le_weight->text().toDouble();
    height = ui->le_height->text().toDouble();

    double bmi = calculateBMI(weight, height);
    QString strBMI = QVariant(bmi).toString();
    ui->tb_display->append(strBMI);

    interpretBMI(bmi);
}

double MainWindow::calculateBMI(double weight, double height)
{
    double bmi = weight / (height * height);
    return bmi;
}

void MainWindow::interpretBMI(double bmi)
{
    if (bmi < 18.5) {
        ui->tb_display->append("体重过轻");
    } else if (bmi >= 18.5 && bmi < 24) {
        ui->tb_display->append("正常范围");
    } else if (bmi >= 24 && bmi < 28) {
        ui->tb_display->append("体重过重");
    } else if (bmi >= 28 && bmi < 32) {
        ui->tb_display->append("肥胖");
    } else {
        ui->tb_display->append("非常肥胖");
    }
}

到此这篇关于基于C++实现BMI身体质量指数计算工具的文章就介绍到这了,更多相关C++ BMI计算工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 带你分分钟玩转C语言指针

    带你分分钟玩转C语言指针

    c语言指针其实是一个整形变量,与其它数据不同的是,它的作用是用来存储其它变量的地址,下面这篇文章主要给大家介绍了关于C语言指针的相关资料,需要的朋友可以参考下
    2022-06-06
  • VC程序在Win32环境下动态链接库(DLL)编程原理

    VC程序在Win32环境下动态链接库(DLL)编程原理

    这篇文章主要介绍了VC程序在Win32环境下动态链接库(DLL)编程原理,包括了dll文件的原理与具体实现过程,对于深入掌握VC程序设计具有很好的参考借鉴价值,需要的朋友可以参考下
    2014-10-10
  • QT安装MQTT库的实现步骤

    QT安装MQTT库的实现步骤

    本文分别介绍了在Windows、Linux、ARM板卡下给QT安装MQTT库的步骤,具有一定的参考价值,感兴趣的可以了解一下
    2026-01-01
  • 基于C语言编写一个简单的抽卡小游戏

    基于C语言编写一个简单的抽卡小游戏

    这篇文章主要为大家介绍了如何利用C语言实现原神抽卡的小游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-04-04
  • C++ list模拟实现过程

    C++ list模拟实现过程

    list是基于双向循环链表的顺序容器,支持O(1)插入删除,迭代器分类明确,insert不失效而erase导致当前迭代器失效,与vector对比,list空间利用率低但灵活,适合频繁增删操作,通过迭代器封装实现统一访问接口
    2025-09-09
  • Ubuntu16.04下配置VScode的C/C++开发环境

    Ubuntu16.04下配置VScode的C/C++开发环境

    这篇文章主要介绍了Ubuntu16.04下配置VScode的C/C++开发环境的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • C语言+win32api写窗体应用程序

    C语言+win32api写窗体应用程序

    本文给大家分享的是个人使用纯C语言结合win32api制作窗体应用程序的代码,非常的简单,给需要的小伙伴参考下。
    2016-02-02
  • 浅谈C++11中的几种锁

    浅谈C++11中的几种锁

    本文主要介绍了C++11中的几种锁,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C语言实现顺序循环队列实例

    C语言实现顺序循环队列实例

    大家好,本篇文章主要讲的是C语言实现顺序循环队列实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • C++ STL反向迭代器的实现

    C++ STL反向迭代器的实现

    本文主要介绍了C++ STL反向迭代器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论