题目描述:C++任意输入一个整数n,再把它的各位数字次序打乱重新组合一个新的整数,使其值最大
思路:(1) 先把n拆分放到数组中
(2) 对数组中的元素排序(从大到小)
(3) 对应相加
具体代码实现:
// sum.cpp : C++任意输入一个整数,再把它的各位数字次序打乱重新组合一个新的整数,使其值最大
#include "stdafx.h"
#include<iostream>
using namespace std;
int Sum(int n){
int a[10]={0};
int i=0;
int sum=0;
while(n)
{
a[i]=n%10;
n=n/10;
i++;
}
int k=i;
for(i=0;i<k;++i)
{
for(int j=i+1;j<k;++j)
{
if(a[i]<a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<k;i++)
{
sum=sum*10+a[i];
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
int n=0;
cout << "请输入整数n:" ;
cin >> n;
cout << Sum(n) << endl;
return 0;
}