#include
void main()
{
void c(long int m);
long int n;
printf("请输入一个任意整数\n");
scanf("%ld",&n);
printf("用递归法将其转换成字符串是:\n");
if(n<0) //考虑到输入可能为负数//
{putchar('-');
n*=-1; //先将负数转换成整数,以免在自定义的函数内再讨论//
}
c(n);
printf("\n");
}
void c(long int m)
{
long int x;
x=m/10;
if(x!=0) //递归的结束条件//
c(x);
putchar(m+'0'); // 字符0的ASCLL码是48,任意一个一位数加上48生成的//
} //ASCLL码对应的字符就是这个任意一位数本身了//
执行程序结果
切记:
不要将void c(long int m)函数定义成以下形式
void c(long int m)
{
long int x;
x=m/10;
putchar(m+'0'); //位置稍有改变//
if(x!=0)
c(x);
}
执行程序结果
解释说明:
由于putchar函数移到了递归判断条件的前面,所以每次调用c函数时,
就会先把参数的末位也就是个位数字先以字符的形式输出了,
当递归调用结束后,也就成了将原来的整数以字符串的形式逆序输出了.