分数加减法

来源:互联网 发布:免打线网络模块 编辑:程序博客网 时间:2024/04/29 21:41

分数加减法

时间限制:3000 ms  | 内存限制:65535 KB

难度:2

描述

编写一个C程序,实现两个分数的加减法

输入

输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d"
其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"

数据以EOF结束
输入数据保证合法

输出

对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

样例输入

1/8+3/8

1/4-1/2

1/3-1/3

样例输出

1/2

-1/4

0

代码1:

#include<stdio.h>int main(void){int x,y,x1,y1;char o;while(scanf("%d/%d%c%d/%d",&x,&y,&o,&x1,&y1)!=EOF){int x2,y2;y2=y*y1;if(o=='+')  x2=x*y1+x1*y;else  x2=x*y1-x1*y;int max=x2>y2?x2:y2;for(int i=2;i<=max/2;i++){if(x2%i==0&&y2%i==0){x2=x2/i;y2=y2/i;i=2;}}if(x2==0)  printf("%d\n",x2);else if(x2%y2==0)   printf("%d\n",x2/y2);else   printf("%d/%d\n",x2,y2);}return 0;}


代码2:

#include<stdio.h>int main(void){char ch[7];int a,b,c,d,m,n,s,t,r;while(scanf("%s",ch)!=EOF){b=ch[2]-'0';d=ch[6]-'0';if(b!=d){if(b>d){t=b;b=d;d=t;}m=b;while(m%d!=0)   m=m+b;}else    m=b;a=m*(ch[0]-'0')/(ch[2]-'0');c=m*(ch[4]-'0')/(ch[6]-'0');if(ch[3]=='+')  n=a+c;if(ch[3]=='-')  n=a-c;t=m;if(n<0)  s=-n;else  s=n;printf("%d  %d  %d   %d   \n",m,s,a,c);while(s!=0){r=t%s;t=s;s=r;}if((m/t)==1)   printf("%d\n",n/t);else   printf("%d/%d\n",n/t,m/t);}return 0; } 





0 0
原创粉丝点击