小数化成最简式分数

来源:互联网 发布:java zip压缩 编辑:程序博客网 时间:2024/04/29 23:39
这道题是好久以前写的了。
#include<iostream>#include<cstdio>#include<cmath>#include<cstdlib>#include<iomanip>#include<algorithm>#include<cctype>#include<stack>#include<queue>#include<string>#include<cstring>#include<iomanip>#include<set>#include<vector>using namespace std;const int MAX = 20;int gcd(int x, int y){return y == 0 ? x : gcd(y, x%y);}int main(){char str1[MAX];int T;cin >> T;while (T--){scanf("%s", &str1);int a = 0, b = 1;int length = strlen(str1) - 1;//cout << length << endl;for (int i =length; str1[i]!='.'; i--){a += (str1[i] - '0')*b;//cout << a << endl;b *= 10;}int x = 0, y = 1, count = 0;for (int i = 0; str1[i] != '.'; i++){count++;}for (int i = count-1; i >= 0; i--){x += (str1[i] - '0')*y;y *= 10;}//cout << x << " " << y;// cout<<a<<" "<<b<<endl;int k = gcd(a, b);a /= k;b /= k;int c;if (x!=0){c = b*x+ a;printf("%d/%d\n", c, b);}elseprintf("%d/%d\n", a, b);}return 0;}

0 0
原创粉丝点击