本題要求編寫程式,計算2個有理數的和、差、積、商。
輸入格式:
輸入在一行中按照「a1/b1 a2/b2」的格式給出兩個分數形式的有理數,其中分子和分母全是整型範圍內的整數,負號只可能出現在分子前,分母不為0。
輸出格式:
分別在4行中按照「有理數1 運算子 有理數2 = 結果」的格式順序輸出2個有理數的和、差、積、商。注意輸出的每個有理數必須是該有理數的最簡形式「k a/b」,其中k是整數部分,a/b是最簡分數部分;若為負數,則須加括號;若除法分母為0,則輸出「inf」。題目保證正確的輸出中沒有超過整型範圍的整數。
輸入樣例1:
2/3 -4/2
輸出樣例1:
2/3 + (-2) =(-1 1/3)
2/3 - (-2) = 2 2/3
2/3 * (-2) = (-1 1/3)
2/3 / (-2) = (-1/3)
輸入樣例2:
5/3 0/6
輸出樣例2:
1 2/3 + 0 =1 2/3
1 2/3 - 0 = 1 2/3
1 2/3 * 0 = 0
1 2/3 / 0 = inf
程式**:
注意:傳入的數值為int型別,但是中間計算結果不一定為int,因此用long long來儲存資料。
#include
long
long divisor(long
long a,long
long b);
void print(long
long a,long
long b);
void add(long
long a,long
long b,long
long c,long
long d);
void minus(long
long a,long
long b,long
long c,long
long d);
void division(long
long a,long
long b,long
long c,long
long d);
void multiply(long
long a,long
long b,long
long c,long
long d);
int main()
void add(long
long a,long
long b,long
long c,long
long d)
void minus(long
long a,long
long b,long
long c,long
long d)
void multiply(long
long a,long
long b,long
long c,long
long d)
void division(long
long a,long
long b,long
long c,long
long d)
print(m,n);
printf("\n");
}}void print(long
long a,long
long b)//列印函式
else
if(a<0)//不管分子為正還是為負,統統按照正整數處理
tmp = divisor(a,b);//求出最大公約數
a=a/tmp;//化為最簡形式
b=b/tmp;
long c=a/b;//整數部分
if(flag)
else
}long
long divisor(long
long a,long
long b)//輾轉相除法求最大公約數
return min;
}
PAT B 1034 有理數四則運算
本題要求編寫程式,計算2個有理數的和 差 積 商。輸入格式 輸入在一行中按照 a1 b1 a2 b2 的格式給出兩個分數形式的有理數,其中分子和分母全是整型範圍內的整數,負號只可能出現在分子前,分母不為0。輸出格式 分別在4行中按照 有理數1 運算子 有理數2 結果 的格式順序輸出2個有理數的和 差...
1034 有理數四則運算
本題要求編寫程式,計算2個有理數的和 差 積 商。輸入格式 輸入在一行中按照 a1 b1 a2 b2 的格式給出兩個分數形式的有理數,其中分子和分母全是整型範圍內的整數,負號只可能出現在分子前,分母不為0。輸出格式 分別在4行中按照 有理數1 運算子 有理數2 結果 的格式順序輸出2個有理數的和 差...
1034 有理數四則運算 20
本題要求編寫程式,計算2個有理數的和 差 積 商。輸入格式 輸入在一行中按照 a1 b1 a2 b2 的格式給出兩個分數形式的有理數,其中分子和分母全是整型範圍內的整數,負號只可能出現在分子前,分母不為0。輸出格式 分別在4行中按照 有理數1 運算子 有理數2 結果 的格式順序輸出2個有理數的和 差...