不知道这个哪里有问题

img

(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;
}