分数加减法
来源:互联网 发布:免打线网络模块 编辑:程序博客网 时间: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;}
#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
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 分数加减法
- 2015 Multi-University Training Contest 1 Hdu 5292 Pocket Cube
- 关于死锁问题的一些认识
- CoordinatorLayout与滚动的处理
- Hibernate(十二)Session缓存与二级缓存
- 获取设置时间系统调用
- 分数加减法
- Android ExpandMenu 多级菜单
- HDU 5288 OO’s Sequence 区间个数
- KVC
- Axure RP 7.0 滑动条制作
- ACM_二进制代替DFS的运用
- POJ 1328 Radar Installation
- 各类背包问题
- HDOJ 1200 To and Fro(简单模拟)