nyoj 題目111 分數加減法

分數加減法

時間限制: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;
}


發佈了30 篇原創文章 · 獲贊 9 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章