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

C++代码排查:两位数中一位数字能否被另一位整除的判断逻辑异常问题

问题排查与修复方案

嘿,我仔细看了下你的代码,发现两个关键问题导致它不能正常运行,咱们一步步理清楚:

1. 整除判断逻辑搞反了

你现在写的y/z==0 || z/y==0完全不对哦!整除的正确判断应该是余数为0,比如9能被3整除,是9 % 3 == 0,而不是9/3 == 0——毕竟9除以3的商是3,根本不是0呀。你的例子描述里也写错啦,应该是9/3=3,余数为0才对~

2. 存在除以0的致命错误

如果输入的两位数包含0(比如10、50),当个位是0的时候,y/z就是除以0,直接触发运行时异常,程序会崩溃;同理如果十位是0(不过两位数不会有前导0,但比如输入05的话,cin会当成5处理,这个倒是次要)。所以必须先判断除数不能为0,再做整除检查。

修复后的完整代码

#include <iostream>
using namespace std;
int main() {
    int x, tens, units;
    cin >> x;
    tens = x / 10;   // 提取十位数字
    units = x % 10;  // 提取个位数字

    bool isDivisible = false;
    // 先检查十位不为0,再看个位能否被十位整除
    if (tens != 0 && units % tens == 0) {
        isDivisible = true;
    }
    // 再检查个位不为0,看十位能否被个位整除
    if (units != 0 && tens % units == 0) {
        isDivisible = true;
    }

    cout << (isDivisible ? "YES" : "NO") << endl;
    return 0;
}

测试几个典型案例

  • 输入39:十位3,个位9,9%3==0,输出YES
  • 输入64:6%4=2,4%6=4,都不为0,输出NO
  • 输入10:个位0,0%1==0,输出YES
  • 输入50:个位0,0%5==0,输出YES
  • 输入11:1%1==0,输出YES

这样调整后,逻辑就完全正确了,也不会出现除以0的崩溃问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:27:44