程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> NYoj-分數加減法

NYoj-分數加減法

編輯:C++入門知識

NYoj-分數加減法


分數加減法

時間限制: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
#include
#include
using namespace std; 
//不能用gcd遞歸gcd(int a,int b)  a,b有可能小於0 
int main()
{
	int a,b,c,d,x,y,p;
	char o;
	while(~scanf("%d/%d%c%d/%d",&a,&b,&o,&c,&d))
	{
		y=b*d;
		if(o=='+')
		   x=a*d+b*c;
		else
		   x=a*d-b*c;
		int p=max(x,y);  
        for(int i=2;i<=sqrt(p);i++)  
        {  
            if(x%i==0&&y%i==0)  
			{
			      x/=i;
				  y/=i;
				  i=2;
			}               //從2開始到他們的最大公約數成一個循環  
        }  
		if(x==0||y==0)
		   printf("0\n");
		else if(y==1)
		   printf("%d\n",x);
		else
		   printf("%d/%d\n",x,y);	
	}
	return 0;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved