PAT 乙级 1019
printf 不能输出字符串 strings 一直作为循环条件。此题需要注意s 有可能一开始就是 6174仍然需要去循环。所以要用 do while 来判断 s 是否等于 6174cmp 里面的 char 可以直接进行比较可以直接返回。#includebits/stdc.h using namespace std; bool cmp(char a, char b) {return a b;} int main() { string s; cin s; if(s.size() 4) s.insert(0, 4 - s.size(), 0); do { string s1 s, s2 s; sort(s1.begin(), s1.end(), cmp); sort(s2.begin(), s2.end()); if(s1 s2) { cout s1 - s2 0000 endl; break; } else { int num stoi(s1) - stoi(s2); s to_string(num); if(s.size() 4) s.insert(0, 4 - s.size(), 0); cout s1 - s2 s endl; } } while(s ! 6174); return 0; }