c语言 精确计算问题程序,C语言计算分数的精确值
#include<stdio.h>
#define N 100
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]);
} //打印出结果
}