循环小数UVA202

输入整数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

点赞