【序】“将给定的一个整数转换成字符串”是面试中常见的考题,本文参考了两位CSDN博友的帖子,在此感谢!
从低位开始转换,然后再翻转字符串是最容易想到的方式;先确定该整数的位数,取模运算从低位开始,将保存的位置递减,此方法无需翻转字符串,因此整体效率较高,值得借鉴。
受先确定该整数的位数的思想启发,我想取商运算从高位开始也可以,并且是顺序存储,无需翻转字符串
从获得最高位的方法,我又获得了一点想法,那就是用递归的方式来获得最高位,递归的条件很简单,只要参数不为10以内,即表示当前未找到最高位,当然递归退出的条件是当前数为个位数了
发现很多算法都有一定的共性,总能找到其中的某些联系,我相信只要大家善于思考,举一反三,从不同的角度包括时间效率空间效率去考察时,定会受益良多
最后一个递归算法稍有瑕疵,欢迎朋友们讨论!
************************************************
将给定的一个整数转换成字符串
Sailor_forever
sailing_9806@163.com
转载请注明
×××××××××××××××××××××××××××××××
算法一 计数互换
下面的这个算法显示了一个C语言新手所应有的水平。而且处理不完全,算法考虑不周到,代码过于啰嗦,不够简洁。
char * IntToStr(int Number)
{
char ch,*str,*t;
int i ,Len=0;
str = (char *)malloc(11*sizeof(char));
t = str;
while(Number!= 0)
{
*t = (Number %10)+0x30;
Number = Number /10;
Len++;
t++;
}
*t = '/0';
t = str;
for(i=0;i<Len/2;i++)
{
ch = *t;
*t = *(t+Len-2*i-1);
*(t+Len-2*i-1) = ch;
t++;
}
return str;
}
×××××××××××××××××××××××××××××××
算法二 指针,首尾互换
char * IntToStr(int Number)
{