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

如何编写C++程序找出百位数字等于十位与个位之和的三位正整数?

找出所有满足“百位数字等于十位与个位数字之和”的三位正整数

你的代码问题分析

你写的代码存在几个关键问题,导致无法实现需求:

  • 变量s没有在每次循环开始时重置,会持续累加之前的个位和十位数值,导致计算错误
  • if (x / 10 == 0) break; 这个判断完全多余,第一次循环就会触发break,直接终止遍历,根本不会检查后续数字
  • 缺少核心的判断逻辑:没有对比百位数字和十位+个位的和,输出的也不是符合条件的数

正确实现方法(两种方案)

方案1:遍历所有三位正整数(最直观)

只需要一个循环,遍历100到999的所有数,分离各位后判断条件:

#include <iostream>
using namespace std;

int main() {
    // 遍历所有三位正整数
    for (int num = 100; num <= 999; ++num) {
        // 分离百位、十位、个位数字
        int hundreds = num / 100;    // 三位数除以100取整得到百位
        int tens = (num / 10) % 10;  // 先去掉个位,再取余10得到十位
        int units = num % 10;        // 取余10直接得到个位
        
        // 判断百位是否等于十位加个位
        if (hundreds == tens + units) {
            cout << num << " ";
        }
    }
    return 0;
}

方案2:枚举各位数字(逻辑更清晰)

用三重循环分别控制百位、十位、个位,直接构造符合条件的数:

#include <iostream>
using namespace std;

int main() {
    // 百位数字范围1-9(三位数的百位不能为0)
    for (int h = 1; h <= 9; ++h) {
        // 十位数字范围0-9
        for (int t = 0; t <= 9; ++t) {
            // 个位数字范围0-9,同时满足百位=十位+个位
            for (int u = 0; u <= 9; ++u) {
                if (h == t + u) {
                    int num = h * 100 + t * 10 + u;
                    cout << num << " ";
                }
            }
        }
    }
    return 0;
}

说明

  • 方案1代码更简洁,适合快速实现;方案2通过枚举各位数字,能更清晰地理解数字的组成逻辑,适合初学者学习
  • 两种方案运行后都会输出所有符合条件的三位数,比如101、110、202、211、220等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:30:17