C语言 两个分数的四则运算,用函数调用实现

#include<stdio.h>           /*引用头文件*/
int gys(int x,int y)    /*定义求最大公约数函数*/
{
    return y?gys(y,x%y):x;  /*递归调用gys,返回最大公约数*/
}

int gbs(int x,int y)    /*定义求最小公倍数函数*/
{
    return x/gys(x,y)*y;
}

void yuefen(int fz,int fm)          /*定义约分函数*/
{
    int s=gys(fz,fm);
    fz/=s;
    fm/=s;
    printf("the result is %d/%d\n",fz,fm);
}

void add(int a,int b,int c,int d)       /*定义加法函数*/
{
    int u1,u2,v=gbs(b,d),fz1,fm1;
    u1=v/b*a;
    u2=v/d*c;
    fz1=u1+u2;
    fm1=v;
    yuefen(fz1,fm1);
}

void mul(int a,int b,int c,int d)       /*定义乘法函数*/
{
    int u1,u2;
    u1=a*c;
    u2=b*d;
    yuefen(u1,u2);
}

void sub(int a,int b,int c,int d)   /*定义减法函数*/
{
    int u1,u2,v=gbs(b,d),fz1,fm1;
    u1=v/b*a;
    u2=v/d*c;
    fz1=u1-u2;
    fm1=v;
    yuefen(fz1,fm1);
}

void div(int a,int b,int c,int d)   /*定义除法函数*/
{
    int u1,u2;
    u1=a*d;
    u2=b*c;
    yuefen(u1,u2);
}
void main()
{
    char op;
    char a1,a2;
    int a,b,c,d;
    printf("输入两个分数的运算:\n");
    scanf("%ld%c%ld%c%ld%c%ld",&a,&a1,&b,&op,&c,&a2,&d);
    if(a1=='/'&&a2=='/') //判断输入的格式是否正确
    {
      switch(op)  /*根据输入的符号选择不同函数的调用*/
    {
        case '+':add(a,b,c,d);break;    /*调用加法函数*/
        case '*':mul(a,b,c,d);break;    /*调用乘法函数*/
        case '-':sub(a,b,c,d);break;    /*调用减法函数*/
        case '/':div(a,b,c,d);break;    /*调用除法函数*/
    }
    }
    else
    {
        printf("输入的格式不对\n");
    }
}

测试结果:
这里写图片描述

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值