分数加减法
时间限制: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 2 #include<cstdio> 3 #include<iostream> 4 #include<algorithm> 5 #include<string.h> 6 #define swap(a,b) {temp=a;a=b;b=temp;} 7 int a,b,c,d,temp; 8 int gotit(int a,int b) 9 { 10 if(a<b) 11 swap(a,b); 12 while(b) 13 { 14 temp=b; 15 b=a%b; 16 a=temp; 17 } 18 return a; 19 } 20 void yuris() 21 { 22 int s=gotit(c,d); 23 if(s==1) 24 return; 25 c/=s; 26 d/=s; 27 if(d<0) 28 { 29 c=-c; 30 d=-d; 31 } 32 } 33 int main() 34 { 35 char fuhao; 36 while(~scanf("%d/%d%c%d/%d",&a,&b,&fuhao,&c,&d)) 37 { 38 if(b!=d) 39 { 40 temp=b; 41 b=b*d; 42 a=a*d; 43 d=d*temp; 44 c=c*temp; 45 } 46 if(fuhao==‘+‘) 47 c=a+c; 48 else 49 c=a-c; 50 if(c==0) 51 printf("0\n"); 52 else 53 { 54 yuris(); 55 if(d!=1) 56 printf("%d/%d\n",c,d); 57 else 58 printf("%d\n",c); 59 } 60 } 61 return 0; 62 } 63
时间: 2024-10-10 01:20:10