文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>分数加减法(3979)

分数加减法(3979)

时间:2011-04-13  来源:cpoint

分数加减法

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

 AC code:

#include<stdio.h>
#include<math.h>
#define N 10

int gcd(int a,int b) 
{
    int r,t;
    if(a<b)
    {
     t=a;
     a=b;
     b=t;
     }
    while(b)
    {
      r=a%b;
      a=b;
      b=r;
   }
   return a;
}

int lcm(int m,int n)
{
     int a;
     a=gcd(m,n);
     return n*(m/a);
}

int main()
{
     char s[N];
     int a,b,c,d;
     int m,n,t;
     while(scanf("%s",s)!=EOF)
     {
         a=s[0]-'0';
         b=s[2]-'0';
         c=s[4]-'0';
         d=s[6]-'0';
         m=lcm(b,d);
         if(s[3]=='+')
         n=a*(m/b)+c*(m/d);
         else
         n=a*(m/b)-c*(m/d);
         t=gcd(m,n);
         m=m/t;
         n=n/t;
         if(n==0)
         printf("%d\n",0);
         else if(m==1)
         {
            printf("%d\n",n);
         }
         else
         {
         if(m<0)
         {
         printf("%d",-n);
         printf("%c",'/');
         printf("%d\n",-m);
         }
         else
         {
         printf("%d",n);
         printf("%c",'/');
         printf("%d\n",m);
         }
         }
         
        }
        
        return 0;

排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载