求四位数的每一位:
1 int a[4]; 2 for (int i = 0; i < 4; i++) 3 { 4 a[i] = n % 10; 5 n /= 10; 6 }
输出4位整数,少于4位,高位补0:
1 printf("%04d", n);
6174是一个测试点,所以用do....while语句。
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 int up, down; 7 void getNumber(int n) 8 { 9 int a[4]; 10 for (int i = 0; i < 4; i++) 11 { 12 a[i] = n % 10; 13 n /= 10; 14 } 15 for (int i = 0; i < 4; i++) 16 { 17 for (int j = i; j > 0 && a[j] > a[j - 1]; j--) 18 { 19 int temp = a[j]; 20 a[j] = a[j - 1]; 21 a[j - 1] = temp; 22 } 23 } 24 25 down = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3]; 26 up = a[3] * 1000 + a[2] * 100 + a[1] * 10 + a[0]; 27 } 28 29 int main() 30 { 31 32 int n; 33 cin >> n; 34 35 do { 36 getNumber(n); 37 n = down - up; 38 printf("%04d - %04d = %04d ", down, up, n); 39 } while (n != 6174 && n != 0000); 40 41 return 0; 42 }