日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分数的四则运算

發(fā)布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分数的四则运算 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

分數(shù)的四則運算指的是分數(shù)的加減乘除

目錄

  • 分數(shù)的表示和化簡
  • 分數(shù)的加法
  • 分數(shù)的減法
  • 分數(shù)的乘法
  • 分數(shù)的除法
  • 分數(shù)的輸出

分數(shù)的表示和化簡

分數(shù)的表示:
對于一個分數(shù)來說,最簡潔的寫法就是寫成假分數(shù)的形式,即無論分子比分母大或者小,都保留其原數(shù)。
因此可以使用一個結構體來存儲這種只有分子和分母的分數(shù):

struct Fraction//分數(shù) {int up; //分子int down;//分母 };

于是就可以定義Fraction類型的變量來表示分數(shù),或者定義數(shù)組來表示一堆分數(shù)。
其中需要對這種表示制定三項規(guī)則:

  • 使down為非負數(shù)。如果分數(shù)為負,那么令分子up為負即可。
  • 如果該分數(shù)恰為0,那么規(guī)定其分子為0,分母為1。
  • 分子和分母沒有除了1以外的公約數(shù)。

分數(shù)的化簡:
分數(shù)的化簡主要用來使Fraction變量滿足分數(shù)表示的三項規(guī)定,因此化簡步驟也分為以下三步:

  • 如果分母down為負數(shù),那么令分子up和分母down都變?yōu)橄喾磾?shù)。
  • 如果up為0,那么令分母為down為1
  • 約分:求出分子絕對值與分母絕對值的最大公約數(shù)d,然后令分子分母同時除以d。
Fraction reduction(Fraction result) {if(result.down<0)//分母為負數(shù),令分子和分母都變?yōu)橄喾磾?shù) {result.down=-result.down;result.up=-result.up;}if(result.up==0){result.down=1;}else{int d=gcd( abs(result.up) , abs(result.down) );result.up/=d;result.down/=d;}return result; }

分數(shù)的加法

Fraction add(Fraction a,Fraction b) {Fraction result;result.up=a.up*b.down+b.up*a.down;//分數(shù)和的分子 result.down=a.down*b.down;//分數(shù)和的分母 return reduction(result); //返回和的結果,注意化簡 }

分數(shù)的減法

Fraction minu(Fraction a,Fraction b) {Fraction result;result.up=a.up*b.down-b.up*a.down;result.down=a.down*b.down;return reduction(result); //返回的結果,注意化簡 }

分數(shù)的乘法

Fraction multi(Fraction a,Fraction b) {Fraction result;result.up=a.up*b.up;result.down=a.down*b.down;return reduction(result); //返回的結果,注意化簡 }

分數(shù)的除法

Fraction divide(Fraction a,Fraction b) {Fraction result;result.up=a.up*b.down;result.down=a.down*b.up;printf("%d %d",result.up,result.down);return reduction(result); }

分數(shù)的輸出

分數(shù)的輸出根據(jù)題目的要求進行,但是大體上有以下幾個注意點:

  • 輸出分數(shù)前,需要先對其進行化簡。
  • 如果分數(shù) r 的分母為down為1,說明該分數(shù)是整數(shù),一般來說題目會要求直接輸出分子,而省略分母的輸出。
  • 如果分數(shù) r 的分子up的絕對值大于分母down, 說明該分數(shù)是假分數(shù),此時應按帶分數(shù)的形式輸出,即整數(shù)部分為r.up/r.down,
    分子部分為abs(r.up)%r.down, 分母部分為r.down。
  • 以上均不滿足說明分數(shù) r 是真分數(shù),按原例輸出即可。
void showResult(Fraction r) {r=reduction(r);if(r.down==1)//整數(shù) printf("%d\n",r.up);else if(abs(r.up)>abs(r.down))//假分數(shù) {printf("%d %d/%d\n",r.up/r.down,r.up%r.down,r.down);}else//真分數(shù) {printf("%d/%d",r.up,r.down);} }

強調一點:由于分數(shù)的乘法和除法的過程中可能使分子或分母超過int型表示范圍,
因此一般情況下,分子和分母應當使用long long 存儲。

總結

以上是生活随笔為你收集整理的分数的四则运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。