要求:
用递归法将一个整数 number 转换成字符串。n的位数不确定,可以是任意位数的整数。
例如:输入 12345 ,输出字符串 “12345”。
/******************************************************************************************* ** 函数名称: ConvertNum2String() ** 作 者: 张月华 ** 版 本: 1.0.0 ** 日 期: 2011-6-16 ** 功能描述: 用递归法将一个整数 number 转换成字符串。n的位数不确定,可以是任意位数的整数。 ** 被本函数调用的函数清单: ** 调用本函数的函数清单: ** 被访问的表: 无 ** 被修改的表 : 无 ** 输 入: int number --- 整数 ** 输 出: char string_out[] --- 转换结果 ** 返 回 值: 无 ** 其 他: ** 修改历史: 1. 修改时间: 修 改 者: 版 本: 修改简述: 2. ...... *********************************************************************************************/ void ConvertNum2String(int number,char string_out[]) { static int i = 0,j = 0,k = 0; /* 静态局部变量在编译时分配内存,即只赋值一次,在程序运行时候它已有初值 */ /* 所以每次递归调用的时候并不会影响到此值,下一次调用直接从if开始 */ if((i=number/10) !=0 ) /* 求到number的位数为1位,即0~9 */ { k++; /* 递归调用次数,比位数少1 */ ConvertNum2String(i,string_out); /* 递归调用 */ } string_out[j++]=number % 10 + '0'; /* 计算这个数字的ASCII码 */ string_out[k+1]='/0'; /* k比数字位数少1,添加字符串结束标记 */ }
以输入12345为例说明:
递推过程:
k i number
1 1234 12345
2 123 1234
3 12 123
4 1 12
5 01
递归4次之后,当i=5时,递归调用结束;
回推过程:
number=1 j=0string_out[0]=1 string_out[5] = '/0'
number=12 j=1string_out[0]=2 string_out[5] = '/0'
number=123 j=2string_out[0]=3 string_out[5] = '/0'
number=1234 j=3string_out[0]=4 string_out[5] = '/0'
number=12345 j=4string_out[0]=5 string_out[5] = '/0'
至于输入的number为负数,只要在main()中将其变为正,然后输出负号“-”即可。