有谁可以解释一下这个程序的运行过程吗

、程序功能:输入一个十进制正整数n,通过函数fun转换成h进制数,并将转换结果输出。比如,输入n、h为125、8,输出175。
#include <stdio.h>
int fun(int n,int h,int arr[])
{
int i;
for(i=0;n>0;i++)
{
arr[i]=n%h;
n=n/h;
}
return i;
}

int main()
{
int n,i,h,arr[20];
scanf("%d%d",&n,&h);
i=fun(n,h,arr);
for(i=i-1;i>=0;i--)
printf("%d",arr[i]);
printf("\n");
return 0;
}

对125从个位开始从后往前跟8取余数,结果保存到数组。然后对125除以8,知道0为止。
函数返回数组长度,
因为数组是从0开始存的,也就是个位在数组前面,把数组反过来输出。