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

C++实现求所需易拉罐数及剩余盎司代码输出异常Bug定位求助

Bug原因分析

你代码里的ounce_left计算逻辑完全不符合需求给定的公式,错误使用了取余运算:

  • 取余运算amount%12得到的是装满若干整罐后剩下的、装不满1罐的液体盎司数,不是易拉罐的空余容量
  • 对应你提到的报错场景:假设输入amount=20,20%12=8就是你实际输出的8,但需求要的空余容量是12*2 -20 =4,二者刚好是互补关系。

修复方案

选任意一种修改ounce_left的赋值语句即可:

方式1:直接使用需求公式计算,逻辑最清晰

将原代码行

int ounce_left=amount%12;

替换为:

int ounce_left = 12 * cans_needed - amount;

方式2:用取余结果推导,需处理整除特殊情况

如果总盎司数刚好是12的整数倍,说明没有空余,否则空余容量为12减去取余结果:

int ounce_left = amount % 12 == 0 ? 0 : 12 - amount % 12;

两种方案测试结果一致:输入20时,cans_needed=2,ounce_left=4,符合预期。

内容的提问来源于stack exchange,提问作者Maia Gomes Medeiros

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:45:02