時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:2描述
編寫乙個c程式,實現兩個分數的加減法輸入
輸入包含多行資料
每行資料是乙個字串,格式是"a/boc/d"。
其中a, b, c, d是乙個0-9的整數。o是運算子"+"或者"-"。
資料以eof結束
輸入資料保證合法
輸出對於輸入資料的每一行輸出兩個分數的運算結果。
注意結果應符合書寫習慣,沒有多餘的符號、分子、分母,並且化簡至最簡分數
樣例輸入
1/8+3/81/4-1/2
1/3-1/3
樣例輸出
1/2-1/4
0
分析:注意負數的問題和最後結果如果可以化成乙個正數的情況。
#include#include#include#include#includeusing namespace std;
int find(int u,int v)
}return u;
}int main()
if(s=='-')///讓分子做加減法
x=a-c;
if(s=='+')
x=a+c;
if(x==0||(d==0&&b==0))///如果最後結果的分母是0或者兩個分母都是0的話,那結果就是0
else if(x<0)///如果分子做運算的時候結果是個負數的情況
int p=find(b,x);///找分子分母的最大公因數,然後化簡
b/=p;
x/=p;
if(b==1)///如果最後將分母化為1了,那麼直接輸出分子就好,但要注意是否為負數的情況
else///否則得話,就直接輸出化簡後的分子分母,注意正負號
}return 0;
}
nyoj 111 分數加減法
分數加減法 時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 編寫乙個c程式,實現兩個分數的加減法 輸入輸入包含多行資料 每行資料是乙個字串,格式是 a boc d 其中a,b,c,d是乙個0 9的整數。o是運算子 或者 資料以eof結束 輸入資料保證合法輸出對於輸入資料的每一...
nyoj111分數加減法
這道題大慨我做了兩個多小時,wa了好幾次,最後才找出問題出在哪,1 我沒有考慮到分子可以整除分母,這時應該輸出乙個整數,而我一直輸出分式,這就必錯無疑了。2 剛開始沒考慮到要化簡,導致錯誤。3 不明白它的以eof結尾是什麼意思,事實上有兩種方式,一種是c中的 char s 1000 while sc...
NYOJ 111 分數加減法
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 編寫乙個c程式,實現兩個分數的加減法 輸入 輸入包含多行資料 每行資料是乙個字串,格式是 a boc d 其中a,b,c,d是乙個0 9的整數。o是運算子 或者 資料以eof結束 輸入資料保證合法 輸出 對於輸入資料的每一行輸出...