C语言小数转分数,求指导方法

C语言如何把小数转换为分数
ps:小数点后很多位的也需要转换
C语言如何把小数转换为分数
ps:小数点后很多位的也需要转换

有多少位,就乘以多少个10的多少倍,然后10的多少倍作为分母,最后两个整数求最小公约数,再分别除以最大公约数就是最简分数了
比如0.32,乘上100后,就是32/100,计算32和100的最大公约数为4,分别除以4,就是8/25了

#include <stdio.h>
int main()
{
    int a,b,c,d,t;
    int k[1000],i,j;
    j = 1;
    while(scanf("%d %d %d",&a,&b,&c)!=EOF){
    if(a==0&&b==0&&c==0)    break;
    else{
        t=a/b;
        a=a%b;
        k[0]=0;
        for(i=1;i<=c;i++)
        {
            k[i]=a*10/b;
            a=a*10%b;                                                            
        }
        if(a*10/b>=5)
        {
            for(i=c;i>=0;i--)
        {            
            k[i]=k[i]+1;
            if(k[i]<10)  break;
            else   k[i]=k[i]-10;                                    
        }                                
        }
                                                                                                            
    }
    t = t+k[0];
    printf("Case %d: %d.",j++,t);
    for(i=1;i<=c;i++)
    printf("%d",k[i]);
    printf("\n\n");
}
    return 0;    
}