1 /*最大值和最小值
 2 时间限制:1000 ms  |  内存限制:65535 KB
 3 难度:1
 4 描述
 5 小明在上C语言课时老师布置了一道编程作业,要求是给你一个数(数的长度小于100)让你求出由该数的数字组成的最大值和最小值,
 6 由于小明编程学的不好但为了完成作业,想请你帮助他。
 7 输入
 8 第一行输入一个数N(0<N<=100),表示有N组测试数据。接下来的N行每行输入一个数M。
 9 输出
10 每组输出占一行,输出由M的数字组成的最大值和最小值,并且最大值和最小值之间用空格隔开。
11 样例输入
12 2
13 12345045789123
14 899000124
15 样例输出
16 98755443322110 1122334455789
17 998421000 124899
18 来源
19 原创
20 上传者
21 骆魁永
22 */
23 #include<stdio.h>
24 #include<string.h>
25 int main()
26 {
27      int N;
28      scanf("%d",&N);
29      getchar();
30      while(N--)
31      {
32             int n, i, j;
33             void f(char a[101],int m);
34             void g(char a[101],int m);
35             char s[101];
36             gets(s);
37             n=strlen(s);
38             if(n==1)
39             printf("%s %s\n",s,s);
40             else
41             {
42                 f(s,n);
43                 g(s,n);
44             }
45     }
46      return 0;
47 }   
48 void f(char a[101],int m)
49 {
50     int i, j, t;
51     for(i=0; i<m; i++)
52     {
53         for(j=i+1; j<m; j++)
54         if(a[j] > a[i])
55         {
56             t=a[i];
57             a[i]=a[j];
58             a[j]=t;
59         }
60     }
61     printf("%s ",a);
62 }
63 void g(char a[101], int m)
64 {
65     int i, j, t;
66     for(i=0; i<m; i++)
67         for(j=i+1; j<m; j++)
68         if(a[j]< a[i])
69         {
70             t=a[i];
71             a[i]=a[j];
72             a[j]=t;
73         }
74     if(a[0] == '0')
75     for(i=1; i<m; i++)
76     {
77         if(a[i] != '0')
78         {
79             for(j=i; j<m; j++)
80             printf("%c",a[j]);
81             break;
82         }
83     }
84     else
85     {
86         for(i=0; i<m; i++)
87         printf("%c", a[i]);
88     }
89     printf("\n");
90 }