用递归法将一整数n转化为字符串 例如输入483,应输出字符”483“,n的位数不确定,可以是任意位数的整数

#include<stdio.h>
char mychar[100];//定义一个无限大的字符数组来存放所生成的字符
int i=0;

char* function(int a)
{
if (a<10)
{
mychar[i++]=char(48+a); //转化为字符串使用ASCⅡ码来转换
return mychar;
}
function(a/10);
mychar[i++]=char(48+a%10);
return mychar;
}

void main()
{

char*a;
int num=0;

scanf("%d",&num);
a=function(num);

printf("转化为字符串后:%s",a);
}
【不知道这个程序如何下手 请给重点的句子标上注释 好让我这个新手能读懂这个程序,并说说解题思路】

char* function(int a) ; 是转换函数 当得到整形参数a 会返回一个指向目标字符串的char指针,,
该递归函数的原理是:
1)递归中间步骤:若当前整数参数a 不为个位。。则将a/10代入char* function(int a) ; 并等待调用的函数被跳出后 将当前整数参数a的最低位存入字符串。
2)递归最底层情况:最若该整数为个位 则直接转换为ascii码;并存入字符窜。。递归结束

#include<stdio.h>
char mychar[100];//定义一个无限大的字符数组来存放所生成的字符
int i=0; //计数器初始化

char* function(int a)//定义递归函数
{
if (a<10) // base case,最底情况
{
mychar[i++]=char(48+a); //转化为字符串使用ASCⅡ码来转换
return mychar; //函数返回,程序运行到到调用它的语句的下句
}
function(a/10); //递归方式, 将整数的最后一位消去后代入递归函数
mychar[i++]=char(48+a%10); //转化为字符串使用ASCⅡ码来转换
return mychar; //函数返回,程序运行到到调用它的语句的下句
}

void main()
{

char*a;
int num=0;

scanf("%d",&num);
a=function(num);

printf("转化为字符串后:%s",a);
}
温馨提示:答案为网友推荐,仅供参考
相似回答