分数的四则运算

#include <stdio.h>
#include <stdlib.h>
void add(int[]);
void sub(int[]);
void mul(int[]);
void div1(int[]);
int reduce(int,int);//除掉公约数

int main()
{
   int a[4];//a[0],a[2]保存分子,a[1],a[3]保存分母
   printf("enter first fractional number<m n>:\n");
   scanf("%d %d",&a[0],&a[1]);
   printf("enter second fractional number<m n>:\n");
   scanf("%d %d",&a[2],&a[3]);
   if(a[0]==0||a[3]==0)
   {
       printf("The denominator can not be zero!\n");
       main();
   }
   add(a);
   sub(a);
   mul(a);
   div1(a);
}
//加

void add(int a[])
{
    int com,mol,den;
    mol=a[0]*a[3]+a[2]*a[1];//结果的分子
    den=a[1]*a[3];//结果的分母

    com=reduce(mol,den);
    printf("add=%d/%d\n",mol/com,den/com);
}

//减

void sub(int a[])
{
    int com,mol,den;

    mol=a[0]*a[3]-a[2]*a[1];
    den=a[1]*a[3];
    com=reduce(mol,den);
    printf("sub=%d/%d\n",mol/com,den/com);

}

//乘

void mul(int a[])
{
    int com,mol,den;
    mol=a[0]*a[2];
    den=a[1]*a[3];

    if(mol==0)
        printf("mul=0\n");
    else
    {
        com=reduce(mol,den);
        printf("mul=%d/%d\n",mol/com,den/com);
    }
}

//除
void div1(int a[])
{
    int com,mol,den;

    mol=a[0]*a[3];
    den=a[2]*a[1];

    if(den==0)
    {
        printf("The dividend can not be zero!\n");
        //main();
    }
    else if(mol==0)
        printf("div=%d/%d\n",mol,den/den);
    else
    {
        com=reduce(mol,den);
        printf("div=%d/%d\n",mol/com,den/com);
    }
}

//除掉公约数
int reduce(int a,int b)
{
    int s,t;
    if(a<b)
    {
        t=a;a=b;b=t;
    }
    while((t=a%b)!=0)
    {
        a=b;b=t;
    }
    s=b;
    return s;
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值