计算分数的精确值

[plain] view plain copy
  1. #include <stdio.h>  
  2.   
  3. int remaind[101] = {0};   /*存放除法的余数*/  
  4. int quotient[101] = {0};  /*依次存放商的每一位*/  
  5.   
  6. int main()  
  7. {  
  8.     int m, n, i, j;  
  9.   
  10.     printf("Please input a fraction(m/n)(<0<m<n<=100):");  
  11.     scanf("%d/%d", &m, &n);  
  12.     printf("%d/%d it's accuracy value is:0.", m, n);  
  13.   
  14.     for (i = 1; i <= 100; i++)   /*i为商的位数*/  
  15.     {  
  16.         remaind[m] = i;  
  17.         m *= 10;      /*余数扩大10倍*/  
  18.         quotient[i] = m/n;   /*求商*/  
  19.         m = m % n;     /*求余数*/  
  20.         if (0 == m)   /*余数为0表示为有限小数*/  
  21.         {  
  22.             for (j = 1; j <= i; j++)  
  23.             {  
  24.                 printf("%d", quotient[j]);  
  25.             }  
  26.             printf("\n");  
  27.             break;  
  28.         }  
  29.   
  30.         if (remaind[m] != 0)  
  31.         {  
  32.             for (j = 1; j <= i; j++)  
  33.             {  
  34.                 printf ("%d", quotient[j]);  
  35.             }  
  36.                 printf("\n\tand it is a infinite cyclic fraction from %d\n",  
  37.                         remaind[m]);  
  38.                 printf("\tdigit to %d digit after decimal point.\n", i);  
  39.   
  40.             break;  
  41.         }  
  42.     }  
  43.   
  44.     return 0;  
  45. }  

计算分数的精确值