编辑代码

#include <iostream>
using namespace std;
int main()
{
    /*
     实践三:
        有一个三位数,
        个位数字比百位数字大, 而百位数字有比十位数字大,
        并且各位数字之和等于各位数字相乘之积,
        求此三位数.
    */
    // 实现方法1
    // 从100到999循环
    for (int i = 100; i < 1000; i++) {
        int a = i % 10;//获取个位数, 例如: 123%10得3
        int b = i % 100 / 10;//获取十位数, 例如: 123%100得23, 再除以10得2.3, int取值为2
        int c = i / 100;//获取百位数, 例如: 123除以100得1.23, int取值为1
        //判断条件: 个位数字比百位数字大,且百位数字比十位数字大
        if(a > c && c > b){
            int sum = a + b + c;//获取各位数字之和
            int product = a * b * c;//获取各位数字之积
            //判断条件: 各位数字之和等于各位数字相乘之积
            if(sum == product){
                cout << "符合条件的三位数: " << i << endl;
            }
        }
    }

    // 实现方法2
    for (int i = 1; i <= 9; i++) {//百位数, 最小的三位数为100, 所以从百位数从1开始
        for (int j = 0; j <= 9; j++) {//十位数
            for (int k = 0; k <= 9; k++) {//个位数
                //判断条件: 个位数字比百位数字大,且百位数字比十位数字大
                if(k > i && i > j){
                    int sum = i + j + k;//获取各位数字之和
                    int product = i* j * k;//获取各位数字之积
                    //判断条件: 各位数字之和等于各位数字相乘之积
                    if(sum == product){
                        cout << "符合条件的三位数: " << (i * 100 + j * 10 + k) << endl;
                    }
                }
            }
        }
    }

    return 0;
}