这道题是好久以前写的了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
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<
int k = gcd(a, b);
a /= k;
b /= k;
int c;
if (x!=0)
{
c = b*x+ a;
printf("%d/%d\n", c, b);
}
else
printf("%d/%d\n", a, b);
}
return 0;
}
如果觉得《小数输出最简分数c语言 小数化成最简式分数》对你有帮助,请点赞、收藏,并留下你的观点哦!