C语言程序编译运行后整浮点值消失?厘米转英尺英寸故障求助
问题解决:厘米转英尺英寸的代码修正
你的代码主要有三个问题,导致输出结果异常:
- 计算时机错误:你在用户输入身高前就计算了
inches和leftoverinches,此时centimetres还没被赋值,是随机的无效值,后续输入身高后也没重新计算这两个变量,自然输出不对。 - 转换公式错误:
centimetres/3完全不是厘米转英寸的正确算法,1英寸等于2.54厘米,总英寸应该是厘米数 / 2.54;1英尺等于12英寸,英尺数是总英寸除以12,剩余英寸是总英寸对12取余。 - 取余用法错误:
%运算符适合整数运算,你用float类型存储取余结果容易出问题,应该用整数类型处理总英寸、英尺、剩余英寸。
下面是修正后的代码:
/*cent_to_feet.c -- 将用户的厘米身高转换为英尺和英寸*/ #include <stdio.h> int main(void) { float centimetres; int total_inches; int feet; int leftover_inches; printf("请输入你的身高(单位:厘米):\n"); printf("输入:_____\b\b\b\b\b"); scanf("%f", ¢imetres); // 厘米转总英寸(1英寸=2.54厘米) total_inches = (int)(centimetres / 2.54); // 总英寸拆分出英尺数 feet = total_inches / 12; // 总英寸取余得到剩余英寸数 leftover_inches = total_inches % 12; if (centimetres < 180) { printf("身高低于180厘米 "); } else { printf("哇,你好高啊!\n 你的身高是 %d 英尺 %d 英寸", feet, leftover_inches); } printf("\n总之,你的身高是 %d'%d", feet, leftover_inches); getchar(); getchar(); return 0; }
关键改动说明:
- 把变量计算步骤移到
scanf之后,确保用用户输入的有效身高进行计算。 - 使用正确的转换公式,避免无意义的数值运算。
- 用整数类型处理英尺和英寸,既适配
%取余运算,也减少浮点误差。 - 移除了未用到的
math.h头文件。
测试输入190厘米时,会得到6英尺2英寸的正确结果,符合实际转换逻辑。
内容的提问来源于stack exchange,提问作者Bodin Wallace
相关产品推荐
相关产品推荐

