C语言BMI计算程序IMC输出为0.0的问题排查求助
C语言BMI(IMC)计算程序错误排查与修复
错误原因分析
从执行结果能直接定位问题:
- 程序提示要求身高以米为单位,但你输入的是130(实际是厘米),导致
taille被赋值为130.00米 - 计算时
taille * taille = 130*130 = 16900,75 / 16900 ≈ 0.0044,用%.1f格式化输出时,会被四舍五入显示为0.0
修复方案
方案1:适配厘米输入(推荐)
修改程序逻辑,让用户输入厘米,自动转换为米,同时优化输出精度:
#include <stdio.h> int main(){ float poids, taille_cm, imc; char reponse; do { printf("\nTapez le poids en kg et la taille en centimetre "); scanf("%f%f", &poids, &taille_cm); float taille = taille_cm / 100.0; // 厘米转米 imc = poids / (taille * taille); // 调整IMC输出精度为3位小数,避免精度丢失 printf("L'usager pese %.1f kg, mesure %.2f metre et son imc est de %.3f\n ", poids, taille, imc); if(imc < 18.5) printf("MAIGREUR, RISQUE ELEVE A ACCRU\n"); else if(imc < 25) printf("POIDS NORMAL, RISQUE FAIBLE\n"); else if(imc < 30) printf("EMBONPOINT, RISQUE ELEVE\n"); else printf("OBESITE, RISQUE TRES ELEVE\n"); printf("\nVoulez-vous continuer (o/n) "); scanf(" %c", &reponse); }while(reponse == 'o' || reponse == 'O'); return 0; }
方案2:明确提示+优化输出精度
如果坚持以米为单位输入,修改提示语避免误解,并提高输出精度:
// 修改提示行,明确输入示例 printf("\nTapez le poids en kg et la taille en metre (ex: 75 1.75) "); // 修改IMC输出格式,保留3位小数 printf("L'usager pese %.1f kg, mesure %.2f metre et son imc est de %.3f\n ", poids, taille, imc);
验证效果
用方案1输入75 130(身高130厘米),程序会输出:
Tapez le poids en kg et la taille en centimetre 75 130 L'usager pese 75.0 kg, mesure 1.30 metre et son imc est de 43.860 OBESITE, RISQUE TRES ELEVE Voulez-vous continuer (o/n)
结果符合实际BMI计算(75/(1.3×1.3)=75/1.69≈43.86)
内容的提问来源于stack exchange,提问作者Annie MissPomme
相关产品推荐
相关产品推荐

