分数加减法

描述
编写一个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

import java.util.*;
public class Main { 
    static int gcd(int m,int n){  
      if(m%n==0)  
        return n;  
     else  
       return gcd(n,m%n);  
    }
public static void main(String[] args) {
	  Scanner in=new Scanner(System.in);
	  while(in.hasNext()){
        String s=in.next();
        int a=s.charAt(2)-'0';
        int b=s.charAt(6)-'0';
        int mol=0,den=0;
        den= a*b/gcd(a,b);  
        if(s.charAt(3)=='+')
          mol=(s.charAt(0)-'0')*(den/(s.charAt(2)-'0'))+(s.charAt(4)-'0')*(den/(s.charAt(6)-'0'));
        else
          mol=(s.charAt(0)-'0')*(den/(s.charAt(2)-'0'))-(s.charAt(4)-'0')*(den/(s.charAt(6)-'0'));
       if(mol==0)
    	   System.out.println(0);
       else if(mol==den){
    	   System.out.println(1);
       }
       else if(den==1)
    	   System.out.println(mol);
       else{
       int x=den,y=Math.abs(mol);//保护分子分母的值,一开始直接den/=gcd(mol,den),改变了分母分子的值,还卡住了,我真是笨死了
       if(gcd(x,y)!=1){
           den/=gcd(x,y);
    	   mol/=gcd(x,y);
           }
       if(den==1)
    	 System.out.println(mol);
       else
    	   System.out.println(mol+"/"+den); 
         }  	   
	  }

   } 
}


         
反思:此题第一次提交竟然WA了,我就能知道是我某些值(情况)没有考虑到,后来才发现原来分母为一的情况没有考虑到(QAQ),加上之后果然AC了,还要注意的是,调用gcd时,分子不能为负。其他就没有啦,我写的麻烦一点啦,但是也是抠了一段时间,继续加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值