任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531 。
输入: 自然数 n
输出: 各位数字组成的最大数
【分析】
很显然,这是个排序的题。先用冒泡排序实现,很简单代码就不写了。
【代码】
冒泡排序的代码在我的Blog:http://blog.csdn.net/debug__boy/article/details/8170580中,代码的58-70行。
【多说一点】
这里提供一稍稍带点技巧的实现方法,不需要排序,利用数字0~9一次递增(排好序)的规律,直接得出结果。
代码如下:
- #include "stdio.h"
-
- int main(int argc, char **argv)
- {
- char ch;
- int arr[10] = {0};
-
-
- while(1)
- {
- ch = getchar();
- if (ch == ‘\n‘)
- {
- break;
- }
- arr[ch - ‘0‘]++;
- }
-
- int i, j;
-
-
- for (i = 9; i >= 0; i--)
- {
- printf("数字%d 出现%d次.\n", i, arr[i]);
- }
-
-
- printf("\n组成的最大的数:\n");
- for (i = 9; i >= 0; i--)
- {
- for(j = arr[i]; j > 0; j--)
- printf("%d", i);
- }
- printf("\n");
-
-
- printf("\n组成的最小的数:\n");
- for (i = 1; i <= 9; i++)
- {
- for(j = arr[i]; j > 0; j--)
- printf("%d", i);
- }
- printf("\n");
-
- return 0;
- }
【运行截图】