本题是对四个数字进行数组转整型,整型转数组是个难点,还有排序(本题用的冒泡)也是个难点,下面先展示一下冒泡
//升序排列
void dasort(int a[]) {
int i, j, temp;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3 - i; j++) {
if (a[j] < a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
下面是完整代码
#include<iostream>
using namespace std;
void dasort(int a[]) {
int i, j, temp;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3 - i; j++) {
if (a[j] < a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
void xiaosort(int a[]) {
int i, j, temp;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3 - i; j++) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
int to_number(int a[]) {
int i, num = 0;
for (i = 0; i < 4; i++) {
num = num * 10 + a[i];
}
return num;
}
void to_array(int n, int num[]) {
int i;
for (i = 0; i < 4; i++) {
num[i] = n % 10;
n = n / 10;
}
}
int main() {
int max, min, n;
int num[4];
cin >> n;
while (1) {
to_array(n, num);
dasort(num);
max = to_number(num);
xiaosort(num);
min = to_number(num);
n = max - min;
printf("%04d - %04d = %04d\n", max, min, n);
if (n == 0 || n == 6174)break;
}
return 0;
}