zoukankan      html  css  js  c++  java
  • poj 3979 分数加减法

    分数加减法
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 12903   Accepted: 4333

    Description

    编写一个C程序,实现两个分数的加减法

    Input

    输入包含多行数据 
    每行数据是一个字符串,格式是"a/boc/d"。 

    其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。 

    数据以EOF结束 
    输入数据保证合法

    Output

    对于输入数据的每一行输出两个分数的运算结果。 
    注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

    Sample Input

    1/8+3/8
    1/4-1/2
    1/3-1/3

    Sample Output

    1/2
    -1/4
    0

    题并不是太难注意以下几点:
    1、结果是0
    2、结果是负数
    3、结果是整数
    4、结果是分数
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    int gongyue(int a,int b)//求最大公约数 
    {
    	int i,j,s;
    	while(b)
    	{
    		s=a%b;
    		a=b;
    		b=s;
    	}
    	return a;
    }
    int main()
    {
    	int a,b,c,d,j,i,n,m,t,k,zi,mu;
    	char s;
    	while(scanf("%d/%d%c%d/%d",&a,&b,&s,&c,&d)!=EOF)
    	{
    	    n=b*d;
    	    a=a*d;
    	    c=c*b;
    	    if(s=='+')
    	    {
    	        zi=a+c;
    	        mu=n;
    			m=gongyue(zi,mu);
    			zi/=m;
    			mu/=m;
    			if(zi%mu==0)//当化简后是整数时 
    			printf("%d
    ",zi/mu);
    			else//当化简后是分数时 
    			printf("%d/%d
    ",zi,mu);	
    	    }
    	    else if(s=='-')
    	    {
    	    	zi=a-c;
    	        mu=n;
    			m=abs(gongyue(zi,mu));
    			zi/=m;
    			mu/=m;
    			if(zi==0)//当结果为0时 
    			printf("0
    ");
    			else if(zi%mu==0)//当结果为整数时 
    			printf("%d
    ",zi/mu);
    			else//当结果是分数时 
    			printf("%d/%d
    ",zi,mu);	
    	    }
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    国庆·生日
    国足
    Eason's concert
    今天的斩获
    The 4400
    闷热
    24
    一直登录不了。。。原来是因为。。。
    黄色暴雨警告
    绝密飞行
  • 原文地址:https://www.cnblogs.com/tonghao/p/4593988.html
Copyright © 2011-2022 走看看