用C语言递归法将一个整数化为字符串
只告诉你思路,自己写代码。
为简单,弄个足足够大的字符数组 因为整数最大是9还还是10个数了,忘了,你可以申请数组长度11或者更大都行。 申请两个。一个存倒序,一个存正序。
在while循环中,首先对整数除以10求余数,C语言是%,这样最后一个数字就出来了,+‘0’ 或者|0x30,得到相应数字的ascii码,其实就已经把这个数字转成字符了,存到数组里。
然对整数反复除以10, c语言是(/),取整,方法很简单,直接把/后的结果=一个整形变量,直接就是取整了,否则调用取整函数也行,那样麻烦。这样,最后一位数字被砍掉,因为第2部已经处理过它了。
反复上面步骤,循环,直到最后一个数字,(判断条件为%10的余数为0), 说明所有数字处理完了,循环终止,在这中间过程最后有个计数器,计下你共存了多少个数,做为第5步的长度。
由于这时候得到的数组是倒的,也就是从最后一个数字开始存储的,要把它倒过来,存到另外一数组里。这部用一个for循环就搞定。
不好意思,我的答案是非递归的。
递归更简单,
#include<stdio.h>
void convert(int n)
{
int i;
if((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
如果要把结果存到数组里,自己调整一下吧。
int a_len=3;//a转化成字符串长度减1
int aptr=0;
int he=0;
int i=0;
char chara[5]={0};
void int_to_char()
{
if(0!=a>>a_len)
chara[i]=a>>a_len;
for(aptr;aptr<a_len;aptr++)
{
he=he*10;
}
a=a-he;//每次a减去a最高位的数值如:1234 减去1000 再递归 234 减去200
a_len--;
int_to_ptr();
}