分數加減法
時間限制: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 wing(int a,int b)
{
return a%b?wing(b,a%b):b;
//return !a%b?b:wing(b,a%b); wrong!!!!!
}
int main()
{
int a,b,c,d;
char w;
while(scanf("%d/%d%c%d/%d",&a,&b,&w,&c,&d)!=EOF)
{
// if(w=='+')
// int p=a*d+c*b;
// if(w=='-')
// int p=a*d-c*b;這樣會顯示p未定義
int p;
if(w=='+')
p=a*d+c*b;
if(w=='-')
p=a*d-c*b;
int q=b*d;
int k;
if(p==0)
{
printf("0\n");continue;
}
//if(!p%q) 錯誤寫法
if(!(p%q))
{
printf("%d\n",p/q);continue;
}
if(p>0)
{
k=wing(q,p);
printf("%d/%d\n",p/k,q/k);continue;
}
if(p<0)
{
k=wing(q,-p);
printf("%d/%d\n",p/k,q/k);
}
}
return 0;
}