欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

coin test答案和注释。C语言中如何输出最简分数?

程序员文章站 2022-06-02 20:26:11
...

coin test答案和注释。C语言中如何输出最简分数?
coin test答案和注释。C语言中如何输出最简分数?

这道题有两处需要注意的地方。第一个是必须把整型变量显性转化成实型变量,做除法运算的结果才能精确的小数位。第二个是想要输出最简分数,应该先让分子分母同除它们的最大公约数,再以“%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;
}