问题描述:
输入一个多位数(小于100位),然后将其重新组合产生最大的数和最小的数。
输入格式:
输入一个多位数。
输出格式:
分两行输出:
第一行输出重新组合产生的最大数;
第二行输出重新组合产生的最小数。
输入样例:
2845
输出样例:
Max:8542
Min:2458
代码:
#include <iostream>
using namespace std;
char s[110];
int d;
int main()
{
scanf("%s", s);
sort(s, s + strlen(s), greater<char>());
printf("Max:%s\n", s);
sort(s, s + strlen(s));
while (s[d] == '0') d ++;//前导0
swap(s[0], s[d]);//前导0
printf("Min:%s", s);
return 0;
}
拓展:sort()中参数的传递问题
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 110;
int main()
{
int a[5] = {3, 2, 1, 8, 10};
sort(a, a + 5);//默认是less<int>() 从小到大升序
for (int i = 0; i < 5; i ++ )
cout << a[i] << ' ';
puts("");
sort(a, a + 5, greater<int>());//greater<int>() 从大到小降序
for (int i = 0; i < 5; i ++ )
cout << a[i] << ' ';
return 0;
}