• 分数加减法


    分数加减法

    时间限制: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

                    刚开始提交有错误,(1/1=1,8/2=4/1) 将其改为(1/1=1,8/2=4) 才AC掉   

    #include<stdio.h>
    int gcd(int a,int b)
    {
    	if(a%b!=0)
    		gcd(b,a%b);
    	else
    		return(b);
    }
    int main()
    {
    	int a,b,c,d,x,y,z,t;
    	char o;
    	while(scanf("%d/%d%c%d/%d",&a,&b,&o,&c,&d)!=EOF)
    	{
    		if(o=='+')
    		{
    			x=gcd(b,d);
    			y=d/x*a+b/x*c;
    			z=b*d/x;
    			if(y==0)
    				printf("0
    ");
    			else if(y==z)
    				printf("1
    ");
    			else
    			{
    				t=gcd(y,z);
    				if(z/t==1)
    					printf("%d
    ",y/t);
    				else
    					printf("%d/%d
    ",y/t,z/t);
    			}
    
    		}
    		else if(o=='-')
    		{
    			x=gcd(b,d);
    			y=d/x*a-b/x*c;
    			z=b*d/x;
    			if(y==0)
    				printf("0
    ");
    			else if(y<0)
    			{
    				y=-y;
    				if(y==z)
    					printf("-1
    ");
    				else
    				{
    				t=gcd(y,z);
    				if(z/t==1)
    					printf("-%d
    ",y/t);
    				else
    					printf("-%d/%d
    ",y/t,z/t);
    				}
    			}
    			else
    			{
    				if(y==z)
    					printf("1
    ");
    				else
    				{
    			    t=gcd(y,z);
    				if(z/t==1)
    					printf("%d
    ",y/t);
    				else
    					printf("%d/%d
    ",y/t,z/t);
    		
    				}
    			}
    
    		}
    	}
    	return 0;
    }


     

                
  • 相关阅读:
    ExtJs控件属性配置详细
    static void和void区别(转)
    OpenSSL 内存管理分析笔记
    Openssl 之大数运算函数 BN
    python学习:字符串
    python学习:字典
    python学习:购物车程序
    python学习:元组和嵌套
    python学习:列表
    python学习:continue及break使用
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4237340.html
Copyright © 2020-2023  润新知