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

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", &centimetres);

    // 厘米转总英寸(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;
}

关键改动说明:

  1. 把变量计算步骤移到scanf之后,确保用用户输入的有效身高进行计算。
  2. 使用正确的转换公式,避免无意义的数值运算。
  3. 用整数类型处理英尺和英寸,既适配%取余运算,也减少浮点误差。
  4. 移除了未用到的math.h头文件。

测试输入190厘米时,会得到6英尺2英寸的正确结果,符合实际转换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:27:21