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

C语言实现ATM取款余额计算代码错误排查求助

你的代码存在以下几处问题:

  • 输出格式错误:你使用的%2f是指定输出内容的最小总宽度为2位,不会限制小数位数,默认会输出6位小数,不符合金额场景保留2位小数的要求,应该改为%.2f。
  • 输入顺序不符合常规题目的输入规则:该题的标准输入顺序是先输入取款金额X,再输入账户初始余额,你当前代码是先读取余额再读取取款金额,输入顺序不匹配会直接导致逻辑完全错误。
  • 浮点数精度隐患:float类型存储精度有限,直接做大小判断容易出现误差,建议将存储余额的变量类型替换为精度更高的double,同时把判断条件调整为deductamt + 0.5 <= initialamt,减少计算误差。

修正后的代码示例:

#include <stdio.h>
int main(void)
{
    double initialamt;
    int deductamt = 0;
    // 先读取取款金额,再读取账户余额
    scanf("%d %lf", &deductamt, &initialamt);
    // 判断取款金额是5的倍数,且余额足够覆盖取款+手续费
    if(deductamt % 5 == 0 && deductamt + 0.5 <= initialamt)
    {
        initialamt = initialamt - deductamt - 0.5;
    }
    printf("%.2lf", initialamt);
    return 0;
}

内容的提问来源于stack exchange,提问作者shreya singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:21:02