nyoj_111_分数加减法_201311281341
分数加减法
时间限制: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
- 来源
- 水题比赛
- 上传者
- hzyqazasdf
1 #include <stdio.h> 2 3 int gcd(int a,int b) 4 { 5 int i,t; 6 if(a>b) 7 { 8 t=a;a=b;b=t; 9 } 10 while(a) 11 { 12 i=a; 13 a=b%a; 14 b=i; 15 } 16 return b; 17 } 18 19 int main() 20 { 21 char s[10]; 22 while(gets(s)) 23 { 24 int i; 25 int a,b1,b2; 26 int t1,t2; 27 //printf("%d\n",gcd(6,4)); 28 a=(s[2]-'0')*(s[6]-'0')/gcd((s[2]-'0'),(s[6]-'0')); 29 b1=a/(s[2]-'0')*(s[0]-'0'); 30 b2=a/(s[6]-'0')*(s[4]-'0'); 31 if(s[3]=='-'){ 32 if(b1<b2) 33 { 34 t1=b2-b1; 35 t2=gcd(t1,a); 36 if(t1==0) 37 printf("%d\n",0); 38 else 39 { 40 printf("-"); 41 printf("%d/%d\n",t1/t2,a/t2); 42 } 43 } 44 else 45 { 46 t1=b1-b2; 47 t2=gcd(t1,a); 48 if(t1==0) 49 printf("%d\n",0); 50 else 51 printf("%d/%d\n",t1/t2,a/t2); 52 } 53 } 54 else 55 { 56 t1=b2+b1; 57 t2=gcd(t1,a); 58 if(t1%a==0) 59 printf("%d\n",t1/a); 60 else 61 printf("%d/%d\n",t1/t2,a/t2); 62 } 63 } 64 return 0; 65 }
简单题