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

C语言如何正确设置do-while循环条件:提取数值前两位报错排查

问题原因及解决方法

问题原因

代码的核心问题是循环终止条件设置错误:
当前while (card_number > 2)的逻辑是只要card_number的数值大于2,就会持续执行除以10的操作。哪怕数值已经缩减到你想要的两位数(比如45),因为45>2依然成立,循环会继续执行,最终会一直除到结果小于等于2才停止,所以输出结果大概率为0。
另外你选用的do-while循环存在额外风险:do-while会先执行一次循环体再做条件判断,如果输入的数值本身就是两位数,会先被除以10变成个位数,即便后续条件改对也会得到错误结果。

解决方法

你需要的终止条件是当card_number小于100时停止循环,此时剩下的数值正好是原数的前两位,更推荐使用先判断后执行的while循环,适配所有>=10的输入:

while (card_number >= 100) {
    card_number = card_number / 10;
}

补充注意事项:

  • 如果输入的card_number本身位数不足2位,会直接返回原数,你可以根据作业需求额外增加位数校验逻辑,避免不符合要求的输入导致结果出错。
  • card_number需要定义为整数类型(如long/long long),如果用浮点类型会出现精度丢失问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:27:00