想问一下这个编程哪里有问题,怎么修改

c语言 精确计算问题程序,C语言计算分数的精确值


#include<stdio.h>
#define N 10
int main()
{
      int i,l,b,flag;
      float m,n;
      flag = 0;
      l = 0;
      int num[N] = {0};  //存放小数
      int a[N] = {0};       //存放某一个数重复时所在的位数
      float x; 
      printf("please input a fraction (m/n))  (0< m< n<=100):");
      scanf("%f/%f",&m,&n);
      x = m / n;
      for(i = 0;i < N && num[i] != 0;i ++)
      {
         x = x * 10;
         num[i] =(int)x % 10;
      }                          //将商放入数组
      for(i = 0;i < N && num[i] != 0 &&  flag == 0;i ++)
      {
          for(b = i + 1;b < n && num[b] != 0;b ++)
          {
             if(num[b] == num[i])
             {
                 a[l] = b;
                 l ++;
                 if(l >= 3)
                 {
                    flag = 1;
                 }
             }
          }
      }                    //判断该商某一位与后面数是否相同,并将相同数对应 的位数储存
      if(a[0] == a[1] - a[0] && a[0] == a[2] - a[1]) //判断是否是循环小数
      {
           printf("%d/%d it's accuracy value is:0.",m,n);
           for(i = 0;i < a[0];i ++)
          {
               printf("%d",num[i]);
           }
           printf("\n\tand it is a infinite cyclic fraction from %d\n",a[0]);
           printf("\tdigit to %d digit after decimal point.\n",a[0]);
       }                    //打印出结果
       return 0;
}