题目:用递归法将一个整数n转换成字符串。例如输入整型数483,应输出字符串483(即4、8、3为在个单独的字符,其ASCII值分别为52,58,51),n的位数不确定,可以是任意位数的整数。
#include <stdio.h>
#include <string.h>
main()
{
void convert(int);
int number;
printf("/nInput an integer: ");
scanf("%d",&number);
printf("Output: ");
if(number<0) /*if语句的作用是将一个负整数转换为正整数*/
{
putchar('-'); /*输出负号,因为下一条语句会把这个负数强制转换为正数后进行运算,convert函数的输出结果是没有符号的,因此,这里必须要输出一个负号(-),以保证打印出正确结果*/
number=-number; /*把负数转换成正数。如输入-5623,则把-5326转换成-(-5326),即为正5326,这样才便于convert函数的把数字转换成字符,否则convert函数是无法识别这个整数,因为整数只有0~9这10个数字组成,而没正(+)负(-)符号,符号只是一个数的声明部分,无法参加运算*/
}
convert(number);
}
void convert(int n)
{
int i;
static num=0; /*num用于计算递归次数,定义num为static静态变量是为了使下次递归(重复)执行该语句时其值不会被初始化而是保持前一次运算的结果*/
num++;
/*printf("/nNow: %d, Times: %d/n",n,num);*/
if((i=n/10)!=0) convert(i);
putchar(n%10+'0');
}