Posted on 2011-09-18 21:03
hoshelly 阅读(366)
评论(0) 编辑 收藏 引用 所属分类:
C
要求:编写一个递归函数,将一个整数n转换为字符串,例如输入483,应输出字符串“483”。
设计思想:设置一个字符型数组str,用于存放转换后的字符串,因为递归函数中要反复使用它,所以将其设置为全局数组变量。要实现整数n转换成字符串的递归转换,首先要将n的个位数n%10转换为字符,插入到str字符串的最前面,然后将除个位后的高位部分n/10按照相同的方式来转换,直到要转换的数为0结束。
#include<stdio.h>
#include<string.h>
void IntToStr(int n);
char str[80]={0};
void main()
{
int num;
printf("input an integer number:");
scanf("%d",&num);
IntToStr(num);
printf("The string is:%s\n",str);
}
void IntToStr(int n)
{
int i;
if(n==0)//整数为0时,递归结束
return;
for(i=strlen(str)-1;i>=0;i--) //将字符串整个往后移一个字符
str[i+1]=str[i];
str[0]=n%10+0x30; //将该数的个位数转换成字符放在字符数组的第一个元素的位置,+0x30表示十六进制的0,其实可以不加
IntToStr(n/10);//将该数的商,即除个位外的其他数通过递归转换
}
//递归过程:例如输入n=148,那么第一次递归时,str[0]存放的数是8,n/10=14,得到第二次递归的数是14;
//8原先存储在str[0],但第二次递归向后移动一个字符,变成存在str[1]内,而4存在str[0]内;
//第三次递归时,同理可知8放在str[2],4放在str[1],而1放在str[0],这样就将148转换为字符串。