永发信息网

C语言编程实现分数的加减法 要求化简的.....

答案:1  悬赏:40  手机版
解决时间 2021-03-21 11:18
题目描述
编写一个程序,实现两个分数的加减法
输入
输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d"。

其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-",(b!=0,d!=0)。

数据以EOF结束
输出
对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
样例输入
1/8+3/8
1/4-1/2
1/3-1/3

样例输出
1/2
-1/4
0

提示
最佳答案
#include<stdio.h>
#include <math.h>
int GCD(int m,int n) //求最大公约数
{
 int tmp;
 m=abs(m);
 n=abs(n);
 if(m==n)
  return m;
 if(m<n)
 {
  tmp=m;
  m=n;
  n=tmp;
 }
 while(m%n!=0)
 {
  tmp=m;
  m=n;
  n=tmp%n;
 }
 return n;
}
int main()
{
 int a,b,c,d; //两个分数的分子和分母
 int gcd_mn;
 int res_den,res_num; //分母和分子
 char op;
 scanf("%d/%d%c%d/%d",&a,&b,&op,&c,&d);
 gcd_mn=GCD(b,d); //求最大公约数

 res_den=b*d/gcd_mn;
 if(op=='+')
  res_num=a*(res_den/b)+c*(res_den/d);
 else
  res_num=a*(res_den/b)-c*(res_den/d);

 if(res_num!=0)
 {
  gcd_mn=GCD(res_num,res_den);
  res_num=res_num/gcd_mn;
  res_den=res_den/gcd_mn;
  printf("%d/%d\n",res_num,res_den);
 }
 else
  printf("0\n");
 return 0;
}代码可能有点乱,运行无误
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
青山泉客运站这个地址在什么地方,我要处理点
写字楼为什么不能住人
同样英文怎么说
城阳北后楼坐305路车到青岛虎山路途径什么路
夺取第一届世界杯的国家是?
一根鱼竿烂了要被多少钱
为什么一个男生只想和你像玩游戏一样谈恋爱,
护理本科考研应该从大几开始准备?需要准备些
如何用纺织蚁控制果蝇?,
能否修改QQ群中文件的上传时间和创建时间
带有寒字的成语有哪些
卡卡一卡通的q币充值卡问题
留坝县玉皇庙镇我想知道这个在什么地方
现代太阳能弥渡专卖店怎么去啊,有知道地址的
乙醇如何作燃料?
推荐资讯
因为一点小事我无意间得罪了领导。他现在怀恨
梦到一只母猫有三种颜色是什么意思
请高手制定一下上海到西安的交通工具
剑侠情缘手游无相值得培养吗
我现在买的新车,牌照是随便选的号,将来如果
菜籽调和油可不可以做蛋糕
零之轨迹用饰品免费换饰品的地方是哪里
且喝且珍惜?神马意思?
运用你课外阅读积累的知识,填空。(4分)中
婚庆摄像机哪款好
狗一天吃多少狗粮
怎样能知道Skype4COM.dll里提供的函数
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?