求4位数组成的最大数和最小数的差。将每位数剥离下来放在数组里,对数组排序。然后在把最大数和最小数在循环重组装起来。
#include<stdio.h>
#include<math.h>
int main()
{
unsigned differFromMaxMin(unsigned num);
unsigned n;
scanf("%d", &n);
differFromMaxMin(n);
return 0;
}
unsigned differFromMaxMin(unsigned num)
{
unsigned int arr[4] = { 0 };
int k = 0;
while (num>0)
{
//计算每一位上的数字
int i = num % 10;
arr[k++] = i;
num = num / 10;
}
//每位数字从小到大排序
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
//最大数字
unsigned max = 0;
for (int i = 0; i < 4; i++)
{
max = max + arr[i] * pow(10, i);
}
//最小数字
unsigned min = 0;
for (int i = 3; i >= 0; i--)
{
min= min + arr[i] * pow(10, 3-i);
}
printf("max is %d\n", max);
printf("min is %d\n", min);
printf("max-min is %d\n", max - min);
return max - min;
}