C语言编程实现分数的加减法 要求化简的.编写一个程序,实现两个分数的加减法输入输入包含多行数据 每行数据是一个字符串,格式是"a/boc/d".其中a,b,c,d是一个0-9的整数.o是运算符"+"或者"-",(b!=0

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 16:38:51
C语言编程实现分数的加减法要求化简的.编写一个程序,实现两个分数的加减法输入输入包含多行数据每行数据是一个字符串,格式是"a/boc/d".其中a,b,c,d是一个0-9的整数.o是运算符"+"或者"

C语言编程实现分数的加减法 要求化简的.编写一个程序,实现两个分数的加减法输入输入包含多行数据 每行数据是一个字符串,格式是"a/boc/d".其中a,b,c,d是一个0-9的整数.o是运算符"+"或者"-",(b!=0
C语言编程实现分数的加减法 要求化简的.
编写一个程序,实现两个分数的加减法
输入
输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d".
其中a,b,c,d是一个0-9的整数.o是运算符"+"或者"-",(b!=0,=0).
数据以EOF结束
输出
对于输入数据的每一行输出两个分数的运算结果.
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
样例输入
1/8+3/8
1/4-1/2
1/3-1/3
样例输出
1/2
-1/4
0
提示

C语言编程实现分数的加减法 要求化简的.编写一个程序,实现两个分数的加减法输入输入包含多行数据 每行数据是一个字符串,格式是"a/boc/d".其中a,b,c,d是一个0-9的整数.o是运算符"+"或者"-",(b!=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;
}
代码可能有点乱,运行无误