字符串数字从小到大输出
题目:将一个随机的整数转换成一个按各位上数值大小排序的整数,例如整数2541转换成1245,随机整数521368转换成123568,要求不能使用一步到位的库函数.
/*
字符串数字从小到大输出
题目:将一个随机的整数转换成一个按各位上数值大小排序的整数,例如整数2541转换成1245,随机整数521368转换成123568,要求不能使用一步到位的库函数.
*/
#include <iostream>
using namespace std;
//数字转字符串
bool Num2Char(int num, char* arr)
{
int shang, yu;
int i=0;
do
{
shang = num/10;
yu = num%10;
num = shang;
arr[i] = yu + '0';
i++;
}
while(shang);
return true;
}
//字符串排序---插入排序
bool Sort(char* arr)
{
int n= strlen(arr);
int i,j;
char target;
for(i=1; i<n; i++)
{
if(arr[i-1] > arr[i])
{
target = arr[i];
j=i;
while(j>0 && target<arr[j-1])
{
arr[j] = arr[j-1];
j--;
}
arr[j] = target;
}
}
return true;
}
//幂函数计算
int myPow(int bot, int index)
{
int ret = 0;
for(int i=0; i<=index; ++i)
{
if(i==0)
ret = 1;
else if(i==1)
ret = bot;
else ret *= bot;
}
return ret;
}
//字符串转数字
int Char2Num(char* arr)
{
int len = strlen(arr);
int ret = 0;
int index = 0;
do
{
int tmp = *(arr+len-1) - '0';
ret += tmp*myPow(10, index);
++index;
--len;
}while(len);
return ret;
}
//数字按位排序后的数字
int Convert(int num)
{
char Buff[20]= {0};
Num2Char(num, Buff);
Sort(Buff);
int res = Char2Num(Buff);
return res;
}
void main()
{
int input = 2541;
cout<<"输入数字为:"<<input<<endl;
int output = Convert(input);
cout<<"输出数字为:"<<output<<endl;
system("pause");
}