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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:55:25