写得着急,做得简陋,敬请谅解。

注:输入内容中必须有​​.​​。

// Author:PanDaoxi
#include <iostream>
#include <cmath>
using namespace std;
int zdgys(int a,int b){
for(int i=a>b?a:b;i>=1;i--){
if(a%i==0&&b%i==0) return i;
}
}
int main(){
string x;
cin>>x;
int len=x.length(),y,z,
zs=0,xs=0;
for(int i=0;i<len;i++){
if(x[i]=='.'){
z=i-1;
y=i+1;
break;
}
}
// 实现整、小分离
// 整数 x[0~z] 小数 x[y~(len-1)]
for(int i=0;i<=z;i++){
zs+=pow(10,z-i)*(x[i]-'0');
}
// cout<<zs;
for(int i=y;i<len;i++){
xs+=pow(10,len-i-1)*(x[i]-'0');
}
// 小数部分位数为 len-y
int b=pow(10,len-y),a=xs+zs*b,gys=zdgys(a,b);
cout<<a/gys<<"/"<<b/gys;
return 0;
}

C++将小数化成分数_i++

C++将小数化成分数_c++_02