【C++_OJ_类和对象】身体评估(类与对象)

该博客介绍了一个C++程序,用于计算成年人的BMI(身体质量指数)和BFR(体脂率)。程序定义了一个健康类,包含姓名、身高、体重和腰围等属性,并实现了计算BMI和BFR的方法。通过输入多个测试实例,程序能够输出每个实例的BMI和体脂率,结果保留两位小数。示例中给出了输入输出样例,展示了如何使用该程序。

关于此题的相关知识点以及更多题目,请查看👇


【C++学习】【持续更新 】史上最全C++学习总结(知识点+OJ练习讲解)

题目描述

评估成年人身体健康有多个指标,包括BMI、体脂率BFR等

设计一个身体健康类,包含私有成员:姓名、身高(米)、体重(公斤),腰围(厘米),实现两个公有方法如下:

BMI方法,返回BMI数值(整数),计算公式BMI= 体重 / 身高的平方

体脂率方法,返回体脂率数值(浮点数),计算过程如下:

1)参数a=腰围(cm)×0.74

2)参数b=体重(kg)×0.082+34.89

3)体脂肪重量(kg)=a-b

4)体脂率 = 体脂肪重量÷体重

其它方法根据需要自行定义

输入

第一行输入t表示有t个测试实例

第二行起,每行输入四个参数:姓名、身高、体重,腰围

依次输入t行

输出

输出t行,每行输入一个实例的BMI和体脂率,小数数值精确到小数点后2位,用空格隔开

输入样例1

2
David 1.85 78.5 85.2
Sara 1.55 67.6 77.3

输出样例1

David’s BMI: 23–BFR: 0.28
Sara’s BMI: 28–BFR: 0.25

#include <iostream>
#include <cstring>
#include<iomanip> 
#include<cmath>
using namespace std;

class Health   //类的界面,第2种方式
{
private:
    char name[20];
    double h;
    double w;
    double y;
public:        
    int BMI()
    {
        return round(w/(h*h));
    }

    double BFR()
    {
        double a,b;

        a = y*0.74;
        b = w*0.082+34.89;
        return (a-b)/w;
    }
    
    void set(char* nameval, double hval, double wval, double yval) //设置属性(提供接口给外部进行修改)
    {
        strcpy(name, nameval);
        h = hval;
        w = wval;
        y = yval;
    }
    char* getname()
    {
        return name;
    }
}; //注意这里的分号

int main()
{
    int t;
    cin >> t;
    while(t--)
    {
        Health  p;         //对象(类类型实例化)
        char name[20];
        double h;
        double w;
        double y;

        cin >> name >> h >> w >> y; 

        p.set(name,h,w,y);
        
        int i;
        double r;
        i = p.BMI();
        r = p.BFR();

        cout << p.getname()<<"'s BMI: "<<i<<"--BFR: "<<fixed<<setprecision(2)<<r<<endl;
    }
    
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ferry_xie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值