输入正整数,将正整数中每位数字重新排列,分别组成一个最大数和最小数依次输出,两数间用空格分隔
如下:
#include <iostream>
using namespace std;
int main()
{
int n;
int a[20];
int i, j, len=0,t;
cin >> n;
//将n的各位数字存入数组
while (n)
{
a[len] = n % 10;
len++;
n /= 10;
}
//冒泡排序
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - 1 - i; j++)
{
if (a[j] > a[j + 1]) //升序排列(从小到大)
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
//最大数
int max = 0;
for (i = len - 1; i >= 0; i--)
{
max = max * 10 + a[i];
}
//最小数
int min = 0;
for (i = 0; i < len; i++)
{
min = min * 10 + a[i];
}
cout << max << " " << min;
return 0;
}
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
long long int n,max=0,min=0;
int a[100] = {0},i,m=0;
cin >> n;
while (n>0)
{
a[m++] = n%10;
n /= 10;
}
sort(a,a+m);
for (i = 0; i < m; i++)
{
max=max*10+a[m-1-i];
min=min*10+a[i];
}
cout <<max<<" "<<min;
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
将输入的整数拆分各个位上的数存放数组中。
对数组元素进行降序。
正序输出的就是最大值,逆序输出的就是最小值。