(1)数字转char不是这么用用的,应该是:
arr[a-a]=n%10+'0'; //比如数字9转成字符'9'
(2)你的函数中的if条件写错了,应该是 if(n>10)
(3)main中,n的值在计算位数的时候已经被改变了,需要用一个变量t来保存n的值
代码修改如下:
#include <stdio.h>
void int_char(int n,int a,char arr[])
{
if(n> 10)
{
arr[a-1] = n%10 + '0';
int_char(n/10,a-1,arr);
}else
arr[0]='0'+n;
}
int main()
{
int a,n,t;
char arr[10]={0};//初始化
scanf("%d",&n);
t = n;
for (a=0;t>0;t/=10)
{
a++;
}
int_char(n,a,arr);
printf("%s",arr);
return 0;
}