我也不太懂,,,但排了两次,每输出一次排序一次,可能是输出完了以后,找不到之前的排序了?
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<errno.h>
#include<string.h>
//输入一个多位数(小于100位),然后将其重新组合产生最大的数和最小的数。
// 分两行输出:
//第一行输出重新组合产生的最大数;
//第二行输出重新组合产生的最小数。
//输入:2845
//输出:Max:8542
// Min:2458
int main()
{
int a[100] ;
int n = 0;
int x;
/*while ((a[n] = getchar()) != 'EOF')*/
scanf("%d", &x);
while(x)
{
a[n] =x % 10;
n++;
x = x / 10;
}
int t;
for(int i=0;i<n-1;i++)
for ( int j = 0; j < n - 1 - i; j++)
{
if (a[j] < a[j + 1])//最大之在前,降序
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
printf("MAX:");
for (int i = 0; i < n; i++)
{
printf("%d", a[i]);
}
for (int i = 0; i < n - 1; i++)
for (int j = 0; j < n - 1 - i; j++)
{
if (a[j] > a[j + 1])//升序
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
printf("\nMIN:");
for (int i = 0; i < n; i++)
{
printf("%d", a[i]);
}
return 0;
}