题目:将一个随机的整数转换成一个按各位上数值大小排序的整数

字符串数字从小到大输出
题目:将一个随机的整数转换成一个按各位上数值大小排序的整数,例如整数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");
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值