coin test答案和注释。C语言中如何输出最简分数?
程序员文章站
2022-06-02 20:26:11
...
这道题有两处需要注意的地方。第一个是必须把整型变量显性转化成实型变量,做除法运算的结果才能精确的小数位。第二个是想要输出最简分数,应该先让分子分母同除它们的最大公约数,再以“%d/%d”的形式输出。
#include<stdio.h>
#include<string.h>
#include<math.h>
int gcd(int m,int n);
int main()
{
char str[10000];
gets(str);
int i=0,cnt=0,num=0;
while(str[i])
{
if(str[i]=='S')
{
printf("WA\n");//遇到S直接结束
return 0;
}
if(str[i]=='U')
{
cnt++;
}
if(str[i]=='D')
{
num++;
}
i++;
}
int sum=cnt+num;
double m=(double)cnt/(double)sum;//将cnt和sum都转换成实型变量才能得到有小数位的结果,否则只有整数部分
if(fabs(m-0.5)>0.003)//m-0.5正负不确定,取绝对值。
{
printf("Fail\n");
return 0;
}
if(fabs(m-0.5)<=0.003)
{
printf("%d/%d\n",cnt/gcd(cnt,sum),sum/gcd(cnt,sum));
}
}
int gcd(int m,int n)//求分子分母的最大公约数
{
int r;
while(n)
{
r=m%n;
m=n;
n=r;
}
return m;
}
上一篇: UVA11729 贪心