网站大量收购闲置独家精品文档,联系QQ:2885784924

C语言分数化成小数.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

C语言分数化成小数

分数变小数

写出一个程序,接受一个以N/D的形式输入的分数,其中N为分子,D为分母,输出它的小数形式。如果它的小数形式存在循环节,要将其用括号括起来。例如:1/3=.00000...表示为.(3),又如41/333=.123123123...表示为.(123)。

一些转化的例子:

1/3=.(3)

22/5=4.4

1/7=.(142857)

3/8=.375

45/46=.803(571428)

用上面的分数和11/59来测试你的程序。

运行举例:

ENTERN,D:17

1/7=.(142857)

本题中,0=N=65535,0=D=65535,设运算结果小数点后最多保留100位。

(1)解题思路

本题可以模仿手算除法的形式,重复地进行求商和余数的运算,直到余数为0或出现循环节为止。

(2)运行结果

ENTERN,D:1159

11/59=.(1864406779661016949152542372881355932203389830508474576271)

附:改写后的C源程序如下:

#include

#defineMax100/*小数点后最大位数*/

intLeft[Max];

intDigit[Max];/*记录每次的余数和商*/

intn,d,q,Top;/*q为循环字节的位置*/

voidInit(void)

{

printf(ENTERN,D:);

scanf(%d%d,n,d);

}

voidCacl(void)/*计算*/

{

inti=0,j=1;

Digit[0]=n/d;/*求商*/

Left[0]=n%d;/*求余数*/

Top=0;

q=0;/*初始化商和余数*/

while(Left[Top]!=0j==1Top100)

{

Top++;/*取下一个数组元素*/

Digit[Top]=(Left[Top-1]*10)/d;/*求商*/

Left[Top]=(int)(Left[Top-1]*10)%d;/*求余数*/

for(i=0;itop-1;i++)p=

{

if(Left[Top]==Left[i])/*如果出现循环节则退出*/

{

q=i+1;

j=0;

break;

}

}

}

}

voidPrint(void)/*输出计算结果*/

{

inti;

printf(n/d=);

if(Digit[0]!=0)printf(%d,Digit[0]);

if(Top0)printf(.);

for(i=1;i=Top;i++)

{

if(i==q)printf(();

printf(%d,Digit[i]);

}

if(q0)printf());

}

voidmain(void)

{

Init();/*读入数据*/

Cacl();/*计算*/

Print();/*打印结果*/

}

欢迎转载,但请保留出处,本文章转自[华软源码],原文链接:/doc/0412547651.html,/Article/2011/5725.html

/top-1;i++)

文档评论(0)

喜芝 + 关注
实名认证
内容提供者

赶紧 下载啊啊啊啊

1亿VIP精品文档

相关文档