分数加减法
时间限制: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; }