#include <stdio.h>
void findarr(int n,int arr[4])
{   
    int b;
    int a = 1000;
    static int i = 3;
    b = n / a;
    arr[i] = n % a;
    i--;
    if(i >= 0)
    {
     findarr(b,arr);
    }
}
int main() {
    int n;
    while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case
        // 64 位输出请用 printf("%lld") to 
        int arr[4] = {0};
        findarr(n,arr);
        int j;
           for (j = 0; j < 4; j++)
          {
           if(arr[j] != 0)
           {
            if(arr[j] < 100 && arr[j - 1] <= 100)
            {
                printf("%d",arr[j]);
                if(j != 3)
             {
                printf(",");
             }
            }
            else
            {
             printf("%03d",arr[j]);
               if(j != 3)
             {
                printf(",");
             }
            }
            }
          }
    }
    return 0;
}

递归思想没问题

主要卡在输出上

中间一直对函数下手

忽略了输出部分的优化

对字符的长度下手会使代码非常简洁

但是我忘了数字也算字符了