`
中国小虫
  • 浏览: 12454 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

将小数转为最简分数

    博客分类:
  • C
C 
阅读更多
//-------将小数转为最简分数------//
/*  输入的小数的格式为0.ab(c)括号里面代表循环部分。
    如果是有限小数的话:0.25=25*100,然后利用最大公约数的方法,对25/100进行化简;
	如果是循环小数的话:0.abcDEFDEF。。。。。。可以:
	         100*0.abcDEFDEF。。。。=abc.DEFDEF。。。。
			 100000*0.abcDEFDEF。。。。=abcDEF,DEFDEF。。。。
*/


#include<stdio.h>
#include<math.h>
//GCD函数是进行
int GCD(int a, int b)
{
	int t;
	while(a % b != 0)
	{
		t = a % b;
		a = b;
		b = t;
	}
	return b;
}
int  main(void)
{
	char a[15] = {-1};
	int n;
	int i;
	int sum = 0,sum2 = 0;
	int flag = 1;                                  //表示该小数是不是循环小数,flag=1代表不是循环小数
	int count = 1,count2 = 1;
	scanf("%d", &n);
	while(n--)                                     //输入n组测试数据
	{
		scanf("%s", &a);                            //输入要转化的数
		for(i=2; i<strlen(a); i++)
		{
			if(a[i] == '(')                        //进行转换:将字符串转为整型数组
			{
				flag = 0;
				continue;
			}

			if(flag == 1 && a[i] != '(')
			{
				sum = 10 * sum + a[i] - 48;
				count = count * 10;
				sum2 = sum;
				count2 = count;                                 
			
			}                       
			else
			{
				if(a[i] != ')')
				{
					sum2 = 10 * sum2 + a[i] - 48;
					count2 = count2 * 10;
				}
				else break;
			}

		}
		if(flag == 1)
		{
			printf("%d/%d\n", sum / GCD(count, sum), count / GCD(count, sum));
			flag = 1;
			sum = 0;
			sum2 = 0;
			count = 1;
			count2 = 1;
			continue;
		}
		count2 = count2 - count;
		sum2 = sum2 - sum;
		printf("%d/%d\n",sum2 / GCD(count2, sum2), count2 / GCD(count2, sum2));
		flag = 1;
		sum = 0;
		sum2 = 0;
		count = 1;
		count2 = 1;
	}
	return 0;
}

 

分享到:
评论

相关推荐

    c#小数化最简分数算法

    c#小数化最简分数算法: //小数化分数主函数 public static string XXtoBL(decimal XX) //求最大公约数的函数 public static int MaxY(int firstNumber, int secondNumber)

    C小数转换分数的函数

    根据给定的信息,本文将详细解析“C小数转换分数的函数”的实现原理及过程。 ### 实现原理 #### 数学原理 此算法基于数学原理,即任何十进制数值都可以表示为分数形式,其中分子和分母均为整数。算法通过不断逼近...

    小数转换为分数

    将给定的小数转换为最简分数。 【输入形式】 从标准输入读入给定的小数。 输入有两种形式: 1. 有限小数,如2.12,5.69,0.618; 2. 无限循环小数,如0._1,3.5_142851,其中“_”后的数字表示循环节。 小数...

    小数,无限循环小数化为分数

    将给定的小数转换为最简分数。 【输入形式】 从标准输入读入给定的小数。 输入有两种形式: 1. 有限小数,如2.12,5.69,0.618; 2. 无限循环小数,如0._1,3.5_142851,其中“_”后的数字表示循环节。 小数部分...

    C语言实现小数转分数(包括带循环节小数)

    C语言实现小数转分数,包括带循环节的小数

    delphi 小数转分数(不是仅限整除的)

    在给定的代码片段中,我们看到一个名为`Fraction`的函数,其目的是将任何实数(不仅仅是整除的情况)转换为其最简分数形式。下面,我们将深入探讨这个函数的工作原理、其内部结构以及实现这一转换的关键步骤。 ### ...

    易语言小数转分数

    4. **约简分数**:转换得到的分数可能不是最简形式,需要通过最大公约数(GCD)来约简。例如,45/60的最大公约数是15,约简后得到3/4。 5. **处理浮点数精度问题**:由于计算机内部表示浮点数的精度限制,可能会...

    ASP技术常遇问题解答-如何编写一个小数转换分数的函数?.zip

    将小数转换为分数,我们需要找到能够精确表示该小数的最简分数。对于有限的小数,这通常相对简单;但对于无限循环小数,可能需要进行无限近似。 以下是使用C#编写的一个基本小数转分数函数的步骤: 1. **确定小数...

    分数转小数 代码

    分数转小数 代码

    小数转分数算法.cs

    /// 小数转分数 /// /// &lt;param name="inputnum"&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public static string GetFraction(double inputnum) /// /// 求最大公约数 /// /// &lt;param name="num1"&gt;...

    小数化分数(算法)

    6. **约简分数**:最后,我们需要将找到的分数进行简化,即找到分子和分母的最大公约数(GCD),然后用它们相除,得到最简分数。 例如,对于0.333...,n=1,d=3,我们可以得到10 * x = 10 * 0 + 3 * 9,解得x = 3/9...

    小数化成分数.pdf

    例如,将0.4、0.05、0.37、0.45和0.013等小数转换为分数,并确保是最简形式。 通过这样的学习过程,学生不仅能掌握小数化分数的基本技巧,还能培养他们的逻辑思维和问题解决能力。这对于他们未来在数学和其他科学...

    易语言源码易语言小数转分数源码.rar

    3. **简化分数**:得到的分数可能不是最简形式,需要通过最大公约数(GCD)算法找到分子和分母的最大公约数,并进行约简。易语言提供了`求最大公约数`函数来计算GCD。 4. **处理负数**:如果原始小数是负数,那么...

    小数化分数2(hdu1717)

    注意处理边界情况,如0.0和负数,以及确保结果分数是最简形式。 6. **测试与调试**:编写好算法后,需要对各种边界条件和特例进行充分的测试,包括但不限于全0的小数、全1的小数、负数、正无穷、负无穷等,确保算法...

    五年级小数与分数互化练习题精选.doc

    二、小数转化为最简分数 小数转化为分数首先需要找到合适的分母,通常选择10、100、1000等,使小数能被整除。例如,0.4可以写作4/10,然后简化为2/5;1.5可以写作15/10,简化后为3/2;0.25写作25/100,简化后为1/4;...

    2020春五年级数学下册一分数加减法第4课时分数王国与小数王国教案北师大版

    教学重点是分数与小数的相互转化方法,这包括如何将分数转换为小数(通过分子除以分母)以及如何将小数转换为分数(根据小数的意义,将小数转化为分母为10、100、1000等的分数,然后简化)。在实际操作中,学生会...

    《“分数王国”与“小数王国”(分数与小数互化)》编写说明及教学建议(1).doc

    需要注意的是,当把小数转化为分数时,通常需要将其化为最简分数。而教材中的例题和练习题设计,特意选择了分母为10、100、1000等的分数和无限小数,以简化问题,便于学生理解和计算。 教学建议强调采用探究式学习...

    单片机c语言中分数转换成小数

    这一步骤可以确保分数是最简形式。 4. **转换为小数**:为了将分数转换为小数,可以执行除法运算。在单片机环境下,可以直接使用除法指令或者模拟除法算法。对于简单情况,可以用分子除以分母得到结果。但是,...

    分数和小数混合运算定义.pdf

    - 加减法完成后,根据需要将结果简化为最简分数或转换为小数。 2. 乘法运算: - 分数和小数进行乘法运算时,可以先将小数转换为分数,然后根据乘法原则,分子乘分子,分母乘分母。 - 乘法的结果若是小数,则根据...

    如何将matlb输出中的分式形式化为小数形式

    本文将深入探讨如何将MATLAB的分式输出转换为小数形式,以便于后续的计算和分析。 首先,我们要了解MATLAB的两种可能产生分式形式输出的情况: 1. **显示格式设置**:MATLAB提供了多种显示格式,包括短(short)、...

Global site tag (gtag.js) - Google Analytics