永发信息网

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

答案:1  悬赏:10  手机版
解决时间 2021-12-17 16:01
题目描述
编写一个程序,实现两个分数的加减法
输入
输入包含多行数据
每行数据是一个字符串,格式是"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;
}代码可能有点乱,运行无误
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下列有关我国交通运输业的说法,正确的是A.我
单选题What _________ interesting&nbs
我不想打工,想创业的,又不知道做什么生意好
被文人所轻视的界画阅读答案
广汽传祺gs41.3t的发动机可以换1.5t的发动机
任达华和古天乐拍的一部关于消防的电影?
Kingston-upon-Thames, as the name , is si
请帮课文列夫托尔斯泰分成两部分,概括每部分
湖南哪个城市要打寒假工的多啊??最好能离张
老虎咬人后会被处死么
阅读下面的文字,回答问题。(7分)我们走过
松江区领生育金需要所有的挂号单吗
股票的金叉死叉怎么看?
We walk in the park after supper, talking
阳春市中国土资源执法监察大队办公位置在哪啊
推荐资讯
现在玩战地之王的有多少人
建设银行卡求PS换下卡号
金大福黄金戒指怎么会变色?会不会是假的?
在游民星空下了很多单机游戏,启动器全部损坏
小赖不赖集成吊顶和菲斯格乐比怎么样
单选题2006年11月24日,内江市通过省级卫生城
黄河入海流邮票我刚开始收集邮票请问这套邮票
怎样养殖鲫鱼、草鱼、白鲢鱼、鲤鱼、花鲢鱼、
天桥风云女演员
求大神何在《为什么我朋友的微信名字是红色的
格力变频空调谦者系列与美的银河H180系列哪个
在强酸性的溶液中能大量共存的离子组是A.Na+
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?