You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调试我的C++ BMI计算器程序?变量类型及代码错误排查求助

解决你的BMI计算器问题

嘿,刚学C++遇到这种问题太正常了,我来帮你拆解代码里的坑,顺便聊聊数据类型的选择~

先说说代码里的几个关键错误:

  • 变量声明的乌龙:你写的int height_user();根本不是声明整型变量,而是声明了一个返回值为int、无参数的函数!正确的变量声明应该是int height_user;,不过后面我们会说为啥用int存身高根本不合适。
  • BMI计算公式完全写错了:正确的BMI公式是 体重(kg) / (身高(m)的平方),你现在写的weight / height * height其实等价于weight(除法和乘法优先级相同,从左到右计算,直接抵消了),这肯定出不了正确结果。而且用int类型做除法会直接截断小数,比如60kg除以1.7m(如果用int存身高只能存1),结果就是60/1*1=60,完全不符合实际。
  • 输入输出不匹配:身高是带小数的数值(比如1.75m),用int类型存储会直接砍掉小数部分,导致数据完全失真。

关于数据类型的选择:

当然应该用double或者float!身高和体重都是带小数的数值,int只能存整数,完全满足不了需求。double的精度比float更高,计算BMI这种场景用double会更准确,不过用float也能搞定。

修正后的完整代码:

#include <iostream>
using namespace std;

// 改用double类型参数,计算正确的BMI
double bmi_calc(double height, double weight){
    double bmi_user = weight / (height * height);
    return bmi_user;
}

int main() {
    double weight_user;
    double height_user; // 正确声明变量,不再是函数声明
    
    cout << "Enter your weight in kilograms: ";
    cin >> weight_user;
    
    cout << "Enter your height in meters: ";
    cin >> height_user;
    
    cout << "Your BMI is " << bmi_calc(height_user, weight_user) << endl;
}

额外小提示:

  • 公式里的括号一定要加:height * height必须用括号括起来,不然会因为运算符优先级问题,先算weight / height再乘height,结果还是weight。
  • 如果想让BMI结果保留两位小数,可以加上#include <iomanip>头文件,然后输出时写cout << fixed << setprecision(2) << bmi_calc(height_user, weight_user) << endl;,看起来更专业。

内容的提问来源于stack exchange,提问作者SepiaAR16

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:32:51