C语言体重判断代码始终输出太胖,如何调整才能获得正确输出?
C语言体重判断代码问题分析
核心错误点
- 输入格式类型不匹配
height、weight变量是double双精度浮点类型,但scanf读取时使用了适配整型的%d格式符,类型不匹配会触发C语言未定义行为,读取到的变量值为异常垃圾值,是无论输入什么都固定输出"too fat"的直接原因。
修复方式:将输入语句修改为scanf("%lf %lf", &height, &weight);,%lf是double类型对应的输入格式符。 - 体重判断逻辑错误
- 对比时无意义对
weight乘以0.5,不符合「实际体重和标准体重对比」的业务规则 - 阈值判断的条件符号写反,分支逻辑完全混乱
修复后的判断逻辑参考:
// 实际体重超过标准体重10%判定为偏胖 if (weight - standardweight > standardweight * 0.1) printf("You are too fat!\n"); // 实际体重低于标准体重10%判定为偏瘦 else if (standardweight - weight > standardweight * 0.1) printf("You are too thin!\n"); else printf("You are wan mei!\n"); - 对比时无意义对
内容的提问来源于stack exchange,提问作者ZueJameAA
相关产品推荐
相关产品推荐

