调库大法,将输入的数字转化为字符串(to_string),然后进行排序(sort进行从小到大的排序,reverse对进行sort之后的数字进行逆序)
(C++中,可以进行 类=类 的操作,实现复制,而java不可以,java需要特殊的函数来进行类的复制)
注意:
- 每个数字必须输出四位,所以需要0补全
- 有直接输入n = 6174的情况,所以要用do-while循环(至少执行一次)
1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 #include<iomanip> 5 6 using namespace std; 7 8 string getmaxmin(int n, bool flag) { 9 string num; 10 num = to_string(n); //数字转化为字符串 11 while (num.size() < 4) { 12 num += '0'; 13 } 14 sort(num.begin(), num.end()); //sort进行从小到大的排序(min) 15 if (flag == 1) { 16 reverse(num.begin(), num.end());//reverse对排序结果进行逆序(max) 17 } 18 return num; 19 } 20 21 int main() { 22 int n = 0; 23 string max, min; 24 cin >> n; 25 do{ 26 max = getmaxmin(n, 1); 27 min = getmaxmin(n, 0); 28 n = stoi(max) - stoi(min); //字符串转化为数字 29 cout << max << " - " << min << " = " << 30 setw(4) << setfill('0') << n << endl; //需要输出位补齐 31 } while (n != 6174 && n != 0); 32 return 0; 33 }
一直在学java,C++没接触多少,调库什么的都是现学现找的,有不对的地方还请指正