用C语言递归法将一个整数化为字符串

 我来答
blueskyzh
2014-12-19 · TA获得超过1289个赞
知道小有建树答主
回答量:450
采纳率:100%
帮助的人:181万
展开全部

只告诉你思路,自己写代码。

  1. 为简单,弄个足足够大的字符数组 因为整数最大是9还还是10个数了,忘了,你可以申请数组长度11或者更大都行。 申请两个。一个存倒序,一个存正序。

  2. 在while循环中,首先对整数除以10求余数,C语言是%,这样最后一个数字就出来了,+‘0’ 或者|0x30,得到相应数字的ascii码,其实就已经把这个数字转成字符了,存到数组里。

  3. 然对整数反复除以10, c语言是(/),取整,方法很简单,直接把/后的结果=一个整形变量,直接就是取整了,否则调用取整函数也行,那样麻烦。这样,最后一位数字被砍掉,因为第2部已经处理过它了。

  4. 反复上面步骤,循环,直到最后一个数字,(判断条件为%10的余数为0), 说明所有数字处理完了,循环终止,在这中间过程最后有个计数器,计下你共存了多少个数,做为第5步的长度。

  5. 由于这时候得到的数组是倒的,也就是从最后一个数字开始存储的,要把它倒过来,存到另外一数组里。这部用一个for循环就搞定。


不好意思,我的答案是非递归的。

递归更简单,


#include<stdio.h>
void convert(int n)
{
 int i;
   if((i=n/10)!=0)
    convert(i);
putchar(n%10+'0');
}


如果要把结果存到数组里,自己调整一下吧。

一路清晨503
2014-12-19 · TA获得超过228个赞
知道小有建树答主
回答量:413
采纳率:100%
帮助的人:251万
展开全部
int a=1234;

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();

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式