你好呀,我是灰小猿,一個超會寫bug的程式猿!
歡迎大家關注我的專欄“每日藍橋”,該專欄的主要作用是和大家分享近幾年藍橋杯省賽及決賽等真題,決議其中存在的演算法思想、資料結構等內容,幫助大家學習到更多的知識和技術!
標題:有理數類
有理數就是可以表示為兩個整數的比值的數字,一般情況下,我們用近似的小數表示,但有些時候不允許出現誤差,必須用兩個整數來表示,這時我們可以建立一個“有理數類”,下面的代碼初步的實作了這個目標,為了簡明,它只提供了加法和乘法運算,
static class Rotional{ private long ra; private long rb; public Rotional(long a,long b) { ra = a; rb = b; long k = gcd(ra, rb); //獲得最大公約數 if (k>1) { //如果k大于1,則說明需要約分 ra /= k; rb /= k; } } /** * 求最大公約數 * */ private long gcd(long a,long b) { if (b==0) { return a; } return gcd(b, a%b); } /** * 加法 * */ public Rotional add(Rotional x) { return ________________________________; //填空位置 } /** * 乘法 * */ public Rotional mul(Rotional x) { return new Rotional(ra*x.ra, rb*x.rb); } @Override public String toString() { if (rb==1) { return "" + ra; } return ra + "/" + rb; } }使用該類的示例:
Rotional a = new Rotional(1, 3);
Rotional b = new Rotional(1, 6);
Rotional c = a.add(b);
System.out.println(a + "+" + b + "=" + c);
請分析代碼邏輯,并推測劃線處的代碼,通過網頁提交
注意:僅把缺少的代碼作為答案,千萬不要填寫多余的代碼、符號或者說明文字!!!
解題思路:
本題在解題上的關鍵就是通讀題干中的原始碼,理解每一行所要實作的具體功能,之后了解該程式設計的主要思路,根據題干中的要求把空白處補全就可以了,
在這一題中主要考察的內容其實是Java中的面向物件的思想,采用面向物件的設計方法,實作兩個分數之間的加法和乘法運算,而且題目中還已經給出了乘法的計算程序可以參考,所以我們通過對代碼的理解,就可以得出加法相應的運算程序,
完整原始碼:
package 一三年省賽真題; public class Year2013_t5 { public static void main(String[] args) { Rotional a = new Rotional(1, 3); Rotional b = new Rotional(1, 6); Rotional c = a.add(b); System.out.println(a + "+" + b + "=" + c); } static class Rotional{ private long ra; private long rb; public Rotional(long a,long b) { ra = a; rb = b; long k = gcd(ra, rb); //獲得最大公約數 if (k>1) { //如果k大于1,則說明需要約分 ra /= k; rb /= k; } } /** * 求最大公約數 * */ private long gcd(long a,long b) { if (b==0) { return a; } return gcd(b, a%b); } /** * 加法 * */ public Rotional add(Rotional x) { return new Rotional(this.ra*x.rb + x.ra*this.rb, this.rb*x.rb); //填空位置 } /** * 乘法 * */ public Rotional mul(Rotional x) { return new Rotional(ra*x.ra, rb*x.rb); } @Override public String toString() { if (rb==1) { return "" + ra; } return ra + "/" + rb; } } }
輸出樣例:
其中有不足或者改進的地方,還希望小伙伴留言提出,一起學習!
感興趣的小伙伴可以關注專欄!
灰小猿陪你一起進步!

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/249101.html
標籤:其他
上一篇:Mendix敏捷開發零基礎學習《一》-基礎(資料模型、頁面創建、資料源系結、屬性系結、關系型資料模型)
下一篇:[RTOS前期準備]以Systick作為時基源+基本定時器撰寫延時函式(基于STM32F407+CubeMX+HAL)

