题目: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\n", a / c, b / c); 53 } 54 return 0; 55 }