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 }