循环小数问题

来源:互联网 发布:淘宝做工瑕疵怎么赔偿 编辑:程序博客网 时间:2024/04/28 22:26

/*

 * 循环小数问题 

 * 模拟手动除法过程 

 */

#include<stdio.h>

int remainder[1000];


int main()

{

    int i, j;

    int a, b, quotient;

    int find=0;

    scanf("%d %d", &a, &b);

    while(a!=0 && b!=0)

    {

        remainder[0] = a;

        i = 1;

        find = 0;

        printf(".");

        while(1)

        {

            quotient = remainder[i-1]*10/b;

            remainder[i] = remainder[i-1]*10%b;

            printf("%d", quotient);

            if(remainder[i]==0)

            {

                find = 1;

                break;

            }

            for(j=0; j<i; j++)

            {

                if(remainder[j]==remainder[i])

                {

                    find = 2;

                    break;

                }

            }

            if(find==1 || find ==2) break;

            if((i+1)%50==0)printf("/n");

            i++;

        }

        if(find==1)

            printf("/nThis expansion terminates./n");

        else if(find == 2)

            printf("/nThe last %d digits repeat forever./n", i-j);

        scanf("%d %d", &a, &b);

    }

}

原创粉丝点击