一、纯　循环小数　化分数从小数点后面第一位就循环的小数叫做纯　循环小数　。怎样把它化为分数呢?看下面例题。把纯　循环小数　化分数:纯　循环小数　的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位上的...　一、纯循环小数化分数　从小数点后面第一位就循环的小数叫做纯循环小数。怎样把它化为分数呢?看下面例题。　把纯循环小数化分数:　纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位上的数都是9。9的个数与循环节的位数相同。能约分的要约分。　二、混循环小数化分数　不是从小数点后第一位就循环的小数叫混循环小数。怎样把混循环小数化为分数呢?　把混循环小数化分数。　先看小数部分0.353　一个混循环小数的小数部分可以化成分数,这个分数的分子是第二个循环节以前的小数部分组成的数与小数部分中不循环部分组成的数的差。分母的头几位数是9,末几位是0。9的个数与循环节中的位数相同,0的个数与不循环部分的位数相同。　三、循环小数的四则运算　循环小数化成分数后,循环小数的四则运算就可以按分数四则运算法则进行。从这种意义上来讲,循环小数的四则运算和有限小数四则运算一样,也是分数的四则运算。　有限小数化成分数直接将小数点去掉,分母对应化成十百千万等。再约分。　例如:0.333.....=3/9=1/3　0.214214214214214....=214/999　简单说每一个循环节为分子,循环节有几位数分母就写几个9　0.3333......循环节为3　0.214.....循环节为214　0.52525252....循环节为52,所以0.525252...=52/99　0.35....=35/99　无限不　循环小数　任何分数转换为小数,要么为有限小数,要么是无限　循环小数　。　0.　有理数和无理数无理数:无限不　循环小数　,和开根开不尽　有理数:整数和分数(有限小数,无限　循环小数　)1.　无限　循环小数　17=0....　小数的分类:　有限小数　无限小数　无限循环小数　无限不循环小数　任何分数转换为小数,要么为　有限小数　,要么是　无限循环小数　。　0.　有理数和无理数　无理数:无限不循环小数,和开根开不尽　有理数:整数和分数(有限小数,无限循环小数)　1.　无限循环小数　1　7　=　0.142　875　142　875　⋯　⋯　2.　无限不循环小数　制造无限不循环小数:　每一循环节中,2　的数目比前一个多　1.　几乎　所有的小数都是无理数。　自创算法读取　循环小数　小数部分,还包括获取字符串所有子集。　对于任意的真分数　N/M　(　0　),均可以求出对应的　小数　。如果采用链表表示各个　小数　,对于　循环　节采用　循环　链表表示,则所有分数均可以表示为如下链表形式。　3.4　循环小数　.docx　题目名称:　循环小数　题目描述:输入整数a和b　a大于等于0小于等于3000,b大于等于1小于等于3000,输出a/b的　循环小数　表示以及循环节长度。如果循环周期大于50,只显示50位,之后的全部用……表示样例:Alt　text　题目分析...　题目名称:循环小数　题目描述:　输入整数a和b　a大于等于0小于等于3000,b大于等于1小于等于3000,输出a/b的循环小数表示以及循环节长度。如果循环周期大于50,只显示50位,之后的全部用……表示　样例:　Alt　text　题目分析:　①所谓的循环小数,也就是我们理解的当每步作除法时候,会出现了重复的商,那个循环小数的周期肯定就在两个重复的商之间。　②现在就转化为类似于找周期的问题了,找重复出现的商,我们最常见想到的办法就是记录所有的商,每算出一个新的商,之后就顺序查找看该商是否出现过,这就比较复杂了,复杂度为O(n^2)　③改进方法就是我们可以考虑用一个数组记录某个商是否出现过,这样来做复杂度就为O(n)　③我们需要设置的变量　输入:分子numerator　分母denominator　商quotient　商的整数部分　integer　商的小数部分　digits[]　余数是否存在　reminder_exist[]　余数存在的位置　reminder_pos　商是否存在循环　found_cycle　商的小数部分开始循环的位置　cycle_pos　循环的长度　cycle_len　循环长度的限制　display_limit　算法思路　a)首先我们要表示商的小数点左边的部分,并且由于分子一直在变化,所以我们要设置一个新的变量保存下初始的分子,方便之后的输出　b)查找循环,由简单的数学知识可知,如果某两步计算的余数相等,那么他们之间的这些计算就是属于我们的循环小数了,所以我们需要就是找每步计算余数相等的,我们要知道他们分别的位置,这里我们采用两个数组来区分一个是reminder_exist[]这里保持,哪个余数存在,对应的值就为1,所以我们可以通过检测这个数组的值来找循环,之后因为我们还需要之前第一次出现这个循环的位置,所以我们还需要有一个数组保存第几次运算出现哪个余数。之后再用第二次出现计算次数减去第一次出现的次数,我们就可以得到循环节的长度了。而且每一步计算得到的商需要保存在一个数组中,这里命名为digits　c)最后再比较下计算最后一次与50进行比较,来按要求输出。　学习笔记:　本题最核心的算法在于,我们怎么去找出循环小数的循环体个数了,循环体初始位置和最后位置。　通过数学知识可以知道找余数相同的时候,每次计算得到的余数放在一个数组中,且数组对于位置为1,代表存在这个余数,之后再通过一个循环找这个位置为1的时刻,这就是余数相同的时候,并且用一个数组保存计算的次数,取每次计算得到的商保存在digits[]中,所以每次余数对应三个数组的值分别问商、计算次数、是否存在的。　//.c　#include　　#include　　#define　maxn　100　#define　display_limit　50　#define　max_INT　10000　int　digits[maxn];　int　reminder_exist[max_INT];　int　reminder_pos[max_INT];　int　main(){　int　numerator,denominator,quotient,reminder;　while　(　scanf　(　"%d%d"　,　&numerator,　&denominator)　!=　EOF　&&　denominator)　{　//初始化数组和商的整数部分　int　original_numerator　=　numerator;　memset　(reminder_exist,　0　,　sizeof　(reminder_exist));　memset　(reminder_pos,　0　,　sizeof　(reminder_pos));　quotient　=　numerator/denominator;　reminder　=　numerator%denominator;　int　integer　=　quotient;　//找出循环　int　found_cycle　=　0　;　int　cycle_pos　=　maxn;　int　cycle_len　=　0　;　int　i　=　0　;　for　(i　=　0　;　i　<=　maxn;　i++)　{　if　(reminder_exist[reminder])　{　cycle_pos　=　reminder_pos[reminder];　cycle_len　=　i　-　cycle_pos;　break　;　}　else　{　reminder_exist[reminder]　=　1　;　reminder_pos[reminder]　=　i;　}　numerator　=　reminder　*　10　;　quotient　=　numerator/denominator;　reminder　=　numerator%denominator;　digits[i]　=　quotient;　}　//输出　printf　(　"%d/%d　=　%d.("　,original_numerator,　denominator,　integer);　if　(i　<=　display_limit)　{　for　(　int　j　=　cycle_pos;　j　<　i;　j++)　{　printf　(　"%d"　,　digits[j]);　}　}　else　{　for　(　int　j　=　cycle_pos;　j　<　display_limit;j++)　printf　(　"%d"　,　digits[j]);　printf　printf　(　")\n"　);　printf　(　"%d　=　number　of　digits　in　repeating　cycle\n"　,　cycle_len);　}　return　0　;}　任何有理数都可以表示为无限　循环小数　的形式。　 　本题目要求即是:给出一个数字的　循环小数　表示法。　 　例如:　输入:　1,5　则输出:　0.2　 　输入:　1,7　则输出:　0.[142857]　 　输入:　7...　/*　有理　循环小数　1/7　=　0.142857142...　是个无限　循环小数　。　任何有理数都可以表示为无限　循环小数　的形式。　本题目要求即是:给出一个数字的　循环小数　表示法。　例如:　输入:　1,5　则输出:　0.2　输入:　1,7　则输出:　0....　整数输入有理　循环小数　1/7　=　0.142857142...　是个无限　循环小数　。　任何有理数都可以表示为无限　循环小数　的形式。　本题目要求即是:给出一个数字的　循环小数　表示法。　这段时间个人几篇文章介绍了改整数输入的文章...　循环小数　知识要点.doc　讲解　循环小数　的数学规律　给出一个无限　循环小数　以及循环节,求原最简分数,例如输入　5.3　1　表示从小数点后一位开始循环,也就是　循环小数　是5.33333…..　输出结果是　16/3　分析　其实一个简单的数学结论就可以解决这个问题,　循环节有几位,...　任何有理数都可以表示为无限　循环小数　的形式。　本题目要求即是:给出一个数字的　循环小数　表示法。　例如:　输入:　1,5　则输出:　0.2　输入:　1,7　则输出:　0.[142857]　输入:　7,6　则输出:　1.1[6]　用户...　一、纯　循环小数　化分数从小数点后面第一位就循环的小数叫做纯　循环小数　。怎样把它化为分数呢?看下面例题。把纯　循环小数　化分数:纯　循环小数　的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位上的...　今天学习了把分数化为　循环小数　,以下代码实现的功能是:输入m/n,假设m能被n整除,则直接输出商;否则,输出商以后再输出循环节。　#include　#include　const　int　MAXN　=　100005;　int...