zoukankan      html  css  js  c++  java
  • 分数加减法 http://acm.nyist.net/JudgeOnline/problem.php?pid=111

    数加减法

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:2
     
    描述
    编写一个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
    来源
    水题比赛
    #include<stdio.h>
    int main()
    {
    	int a,b,c,d;
    	char e;
    	while(scanf("%d/%d%c%d/%d",&a,&b,&e,&c,&d)!=EOF)
    	{
    		int f,g,h,i,m;
    		if(e=='+')
    			m=a*d+c*b;
    		else if(e=='-')
    			m=a*d-c*b;
    		h=b*d;
    		if(h==0)
    			break;
    		else if(m%h==0)
    				printf("%d
    ",m/h);
    		else
    		{
    				f=m;
    				g=h;
    			do
    			{
    				i=f%g;
    				f=g;
    				g=i;
    			}while(i!=0);
    /*			if(f==h)
    				printf("%d
    ",m/f);
    			else if(h/f<0)
    				printf("%d/%d
    ",-m/f,-h/f);*/
    			if(h/f<0)
    				printf("%d/%d
    ",-m/f,-h/f);
    			else
    				printf("%d/%d
    ",m/f,h/f);
    		}
    	}
    	return 0;
    }
    

    做这道题的要点是当4/2时输出应该是2,而不是2/1,所以当分子除尽分母时要分一种情况。

  • 相关阅读:
    移动端开发touchstart,touchmove,touchend事件详解和项目
    我对JVM的理解
    快速排序
    归并排序(Merge sort)
    希尔排序
    插入排序
    选择排序
    冒泡排序(Bubble Sort)
    java设计模式之单例模式
    Java中反射机制的理解
  • 原文地址:https://www.cnblogs.com/wangyouxuan/p/3248374.html
Copyright © 2011-2022 走看看