分數加減法
時間限制: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
-
解答:已AC
-
#include<stdio.h>
int main()
{
char op,str[8];
int denominator,numerator,flag,i,j;
while(scanf("%s",str)!=EOF)
{
if(str[3]=='+')
numerator=(str[0]-'0')*(str[6]-'0')+(str[2]-'0')*(str[4]-'0');
else
numerator=(str[0]-'0')*(str[6]-'0')-(str[2]-'0')*(str[4]-'0');
denominator=(str[2]-'0')*(str[6]-'0');
while(1)
{
flag=1;
j=abs(numerator)<abs(denominator)?abs(numerator):abs(denominator);
for(i=2;i<=j;i++)
if(numerator%i==0&&denominator%i==0)
{
flag=0;//可以化簡
numerator/=i;
denominator/=i;
break;
}
if(flag)
break;
}
if(numerator==denominator)
printf("%d\n",1);
else if(numerator==0||denominator==1)
printf("%d\n",numerator);
else
printf("%d/%d\n",numerator,denominator);
}
return 0;
}
-
-