输入整数a和b,输出a/b的循环小数表示以及循环长度。例如a=5,b=43,小数表示为0.(116279069767441860465),循环节长度为21。
int one,count=0;
int m, n, next, flag = 0;;//除数和被除数
void fun()
{
m *= 10;
next = m%n;
printf("%d",m/n);
count++;
m = next;
if (next !=one) fun();
}
//使用递归
int main()
{
scanf("%d%d", &m, &n);
one = m;
fun();printf("\n");
printf("%d\n",count);
return 0;
}
要注意的是,这样写虽然简单,可能会栈溢出,另外,m和n的关系应该在程序里面判断一下大小,提高鲁棒性
eg:1 2997
输出:00033367
9
eg:1 333
输出:003
3