首页 > 代码库 > 分数加减法
分数加减法
描述
编写一个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 }
分数加减法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。