首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

将小数转入最简分数

2012-10-25 
将小数转为最简分数//-------将小数转为最简分数------///*输入的小数的格式为0.ab(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;}

?

热点排行