对一个五位数的整数,求出其升序数。例如75623则结果是23567.
要求用c++函数实现
不断除10取余数放到数组中再排序数组即可
你题目的解答代码如下:
#include <iostream>
using namespace std;
void sort(int a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(a[j] > a[j+1])
{
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
int main()
{
int n,i,l=0;
int a[5];
cin >> n;
do {
a[l++] = n%10;
n/=10;
}
while(n>0);
sort(a,l);
for(i=0;i<l;i++)
cout << a[i];
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
前面都是学校用的初级玩法,更适合你,真正工作的时候,我这样更加省事,代码兼容任意长度的数字,不只是五位
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
int main()//主函数
{
int tmp = 1237482351515;
std::cout << "排序前:" << tmp;
// 先找个容器,来存点东西,存什么?往后看
std::vector<int> vec;
// 既然需要排序,我们就先拆分下数字
do
{
// 至少一位数字是有的,不用判断直接开始拆分
vec.push_back(tmp % 10);
tmp = tmp / 10;
} while (tmp !=0);
// 排序
std::sort(vec.begin(), vec.end());
// 重新拼成数字 用到了C11语法,推荐你使用 visual studio 2019 以上的编译器
for (auto it : vec)
{
tmp = tmp * 10 + it;
}
std::cout << "\t 排序后:" << tmp << std::endl;
return 0;
}
解析出各位数字后排序重新输出即可。
代码如下:
#include <iostream>
using namespace std;
int main()
{
int i=0, j, t;
int n,a[5];
cin >> n;
while (n)
{
a[i] = n % 10;
n /= 10;
i++;
}
//排序
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4 - i; j++)
{
if (a[j] < a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
n = 0;
for (i = 0; i < 5; i++)
n = n * 10 + a[i];
cout << n << endl;
return 0;
}