分数运算

题目:https://www.nowcoder.com/pat/2/problem/261

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <cmath>
 4 using namespace std;
 5 #define max(x,y) x>y?x:y
 6 #define min(x,y) x<y?x:y
 7 
 8 int main(){
 9     int a, b, c, d;
10     char ch;
11     while (scanf("%d/%d %d/%d %c",&a,&b,&c,&d,&ch) != EOF){
12         if (ch == '+'){
13             a = a*d + c*b;
14             b = b*d;
15         }
16         else if (ch == '-'){
17             a = a*d - c*b;
18             b = b*d;
19         }
20         else if (ch == '*'){
21             a = a*c;
22             b = b*d;
23         }
24         else if (ch == '/'){
25             int t = c;
26             c = d;
27             d = t;    
28             a = a*c;
29             b = b*d;
30         }
31 
32         int a1 = 1;
33         int b1 = 1;
34         if (a < 0)
35             a1 = 0;
36         if (b < 0)
37             b1 = 0;
38         int c1 = a1 + b1;
39         a = abs(a);
40         b = abs(b);
41         c = max(a, b);    //被除数
42         d = min(a, b);    //除数
43         while (d){
44             int t = c / d;
45             int v = c%d;
46             c = d;
47             d = v;
48         }
49         if (c1 == 1){
50             printf("-");
51         }
52         printf("%d/%d
", a / c, b / c);
53     }
54     return 0;
55 }
原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/8289067.html