首页 > 代码库 > 分数加减法

分数加减法

描述

编写一个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>  2  3 int gcd(int a,int b); 4  5 int main(){ 6     int a; 7     int b; 8     int c; 9     int d;10     char sign;11     int fenmu;12     int fenzi;13     char temp;14     15     while(scanf("%d/%d%c%d/%d",&a,&b,&sign,&c,&d)!=EOF){16         fenmu=b*d/gcd(b,d);17         18         if(sign==+)19             fenzi=a*fenmu/b+c*fenmu/d;20         21         else22             fenzi=a*fenmu/b-c*fenmu/d;23             24         if(fenzi==0){  //分子为0直接输出0 25             printf("0\n");26             continue;27         }28         29         temp=+;30         if(fenzi<0){  //当为负数时,化为正数,标记负号 31             fenzi=-fenzi;32             temp=-;33         }34         35         if(temp==-)  //有负号时输出负号 36             printf("-");37         38         if(fenzi%fenmu==0)  //如果整除时直接输出商 39             printf("%d\n",fenzi/fenmu);40             41         else   //不整除时以分数的形式输出 42             printf("%d/%d\n",fenzi/gcd(fenmu,fenzi),fenmu/gcd(fenmu,fenzi));43     }44     return 0;45 }46 47 int gcd(int a,int b){48     int temp;49     50     if(a<b){51         temp=a;52         a=b;53         b=temp;54     }55     56     while(a%b!=0){57         temp=a%b;58         a=b;59         b=temp;60     }61     62     return b;63 }

 

分数加减法