小数化分数——hdu1717

//注意用gets(a)是 scanf("%d",&tn);后用//getchar()时WA无语
View Code
#include<stdio.h>
#include
<math.h>

int gcd(int max,int min)
{
if(min==0)return max;
else gcd(min,max%min);
}
int main()
{
int tn;
char a[19];

scanf(
"%d",&tn);

while(tn--)
{
scanf(
"%s",&a);//注意用gets(a)是 scanf("%d",&tn);后用//getchar()时WA无语
int i,j;
int fz=0,fm=1,fzx=0,fmx=0;
bool buxun=0;
int buge=0;
for(i=2;a[i];i++)
{
if(buxun==0)
{
for(j=i;a[j]!='('&&a[j]!=0;j++)
{
fz
=fz*10+a[j]-'0';
fm
=fm*10;
buge
++;
}
i
=j-1;
buxun
=1;
}
if(a[i]=='('||a[i]==')')
{
for(j=i+1;a[j]!=')';j++)
{
fzx
=fzx*10+a[j]-'0';
fmx
=fmx*10+9;
}
fmx
=fmx*fm;
i
=j;
}
}
if(fmx==0)fmx=fm;

fzx
=fzx+fz*(fmx/fm);

int max=gcd(fmx,fzx);
fzx
=fzx/max;
fmx
=fmx/max;
printf(
"%d/%d\n",fzx,fmx);
}

return 0;
}
原文地址:https://www.cnblogs.com/huhuuu/p/2001570.html