PAT B 1034 有理數四則運算

2021-07-16 02:50:00 字數 2206 閱讀 3030

本題要求編寫程式,計算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個有理數的和 差...