《C语言分数化成小数.docx》由会员分享,可在线阅读,更多相关《C语言分数化成小数.docx(2页珍藏版)》请在三一文库上搜索。
1、分数变小数写出一个程序,接受一个以N/D的形式输入的分数,其中N为分子,D为分母,输出它的小 数形式。如果它的勺数形式存在循环 忙 要将其用括号括起来。例如:1/3=.00000表示为., 又如41/333=3表示为.(123)。一些转化的例子:1/3=.(3)22/5=4.41/7=.(142857)3/8=37545/46=.803(571428)用上而的分数和11/59来测试你的程序。运行举例:ENTER N, D: 171/7=.(142857)本题中,0=N=65535, 0=D=65535,设运算结果小数点后最多保留100位。解题思路本题可以模仿手算除法的形式,重复地进行求商和余数
2、的运算,直到余数为0或出现循环行 为止。(2)运行结果ENTER N, D: 115911/59=.(976271)#include #define Max 100 int LeftMax; int DigitMax; int n,d,q,Top;附:改写后的Ci原程序如下:/*小数点后最大位数*/*记录每次的余数和商*/ /*q为循环字节的位置*/void Init(void)(printf(HENTER N,D:“); scanf(N%d %d,/&n/&d);void Cacl(vold)/*计算*/int i=0,j=l;Digit0=n/d;Left0=n%d;/*求商*/*求余数*
3、/Top=0;q=0;/*初始化商和余数*/while(LeftTop!=0&j=l&Top100)Top+;/*取下一个数组元素*/DigitTop=(LeftTop-l*10)/d;/* 求商*/LeftTop=(int)(LeftTop-l*10)%d; /* 求余数*/*如果出现循环行则退出*/for(i=0;i0) printfCJ); for(i=l;i0) printf(T);void main(void)(lnit();/*读入数据*/Cacl();/* 计算 */Print();/*打印结果*/欢迎转载,但请保留出处,本文章转自华软源码,原文链接:/20/5725.html 1