以下是优化后的代码:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int i = 1;
while (n != 495)
{
int max = 0, min = 0;
// 将数字拆分成各位
int a = n / 100 % 10;
int b = n / 10 % 10;
int c = n % 10;
// 排序,获取最大值和最小值
if (a > b)
swap(a, b);
if (b > c)
swap(b, c);
if (a > b)
swap(a, b);
max = c * 100 + b * 10 + a; // 构造最大数
min = a * 100 + b * 10 + c; // 构造最小数
n = max - min; // 计算差值
cout << i << ":" << max << "-" << min << "=" << n << endl;
i++;
}
return 0;
}
此优化版本对输入的三位数进行了排序,通过两次交换使得 a 始终是最小的位,c 始终是最大的位。然后根据题目要求计算差值,并输出结果。
内容由零声教学AI助手提供,问题来源于学员提问




