5.14打卡

问题描述:

比较两个分数的大小

二、设计思路:
要求通分后的最简公分母,即求两分母的最小公倍数。求最小公倍数的前提是求出两数的最大公约数,最大公约数的求解采用辗转相除的方法,步骤如下:
(1)用较大的数m除以较小的数n,得到的余数存储到变量b中;b=m%n;
(2)上一步中较小的除数n和得出的余数b构成新的一对数,并分别赋值给m和n,继续做上面的除法;
(3)若余数为0,其中较小的数(即除数)就是最大公约数,否则重复步骤(1)和(2)。
对于最大公约数的求解用自定义函数zxgb实现。

通分后的分子为:通分后的分母/原分数分母*原分数分子,两分数的分母分别用变量j,1表示,分子用变量i,k表示。

只需比较变量m、n的值即可,若m>n;则第一个分数大于第二个分数,若m=n,则两分数相等,否则第一个分数小于第二个分数。

三、程序流程图

 

 

四、代码实现

#include<stdio.h>

int zxgb(int a,int b);

int main()

{

    int i,j,k,l,m,n;

    printf("Input two FENSHU:\n");

    scanf("%d/%d,%d/%d",&i,&j,&k,&l);

    m=zxgb(j,l)/j*i;

    n=zxgb(j,l)/l*k;

    if(m>n)

    printf("%d/%d>%d/%d\n",i,j,k,l);

        else

        if(m==n)

        printf("%d/%d=%d/%d\n",i,j,k,l);

    else

       printf("%d/%d<%d/%d\n",i,j,k,l);

}

int zxgb(int a,int b)

{

    long int c;

    int d;

    if(a<b)

    {

        c=a;

        a=b;

        b=c;

    }

    for(c=a*b;b!=0;)

    {

        d=b;

        b=a%b;

        a=d;

    }

    return (int)c/a;

}

 

posted @ 2023-05-14 19:20  恋恋恋白  阅读(30)  评论(0)    收藏  举报