小数转化为分数

输入一个小于1的正小数,分别输出最简分数的分子和分母。

此代码的目的是简单快速的求出有限位小数对应的最简真分数。

C语言代码如下:

# include <stdio.h>
# include <string.h>

// 判断两个整数的最大公约数是否为1
int is_prime(int a, int b)
{
	while (a != b)
	{
		a>b?(a-=b):(b-=a);
	}
	return b;
}

int main(void)
{
	char ch[50];
	int a=0, b=1;
	int i = 0, flag=0,temp;
	gets(ch);
	// 读取尾数长度
	while (ch[i])
	{		
		if (flag == 1)
		{
			a += (ch[i]-'0');
			a *= 10;
	 		b *= 10;
		}	
		if (flag==0 && ch[i]=='.')
			flag = 1;
		i++;
	 } 
	a /= 10;

	temp = is_prime(a,b);
	
	while (1 != temp)
	{
		a /= temp;
		b /= temp;
		temp = is_prime(a,b);
	}
	printf("%d %d\n",a,b);
	
	return 0;
 } 

猜你喜欢

转载自www.cnblogs.com/Robin5/p/11552715.html