乙個程式設計小題目引發的思考(上)

2022-02-21 13:59:07 字數 1269 閱讀 3996

乙個程式設計小題目引發的思考

首先簡介下題目:

輸入:乙個不超過12位的十進位制正整數

輸出:列印此數字的十進位制計算器表示

例:輸入:145

輸出:

__

||__||__

| | __|

看到這個題目,也沒多想,反正就是把這些數字打出來而已,那就一行一行打唄

於是在紙上畫了幾個計算器表示形式的數字:

規律是很明顯的,每個數字都由3行4列組成,每一行只有固定的幾種樣式,比如說8的第一行是" __ ",第二行是"|__|",第三行是"|__|"

於是就有了思路:只要一位一位的讀取這個數字,然後按照上中下的順序依次列印其計算器表示的三行就行了。

由於每個數字的每一行的樣式都是固定的,很容易將這些樣式抽取出來,經過觀察,我找出了其所有的樣式,於是就有了如下的**:

class lcdprinter

}

接下來的問題就是依次獲取乙個數的每一位,通過乙個遞迴,很容易實現這個功能:
public void printnum(int value)

}

測試這個方法之後,接下來的工作就是一行一行的列印數值了,按照之前的思路,我把每個數字分為上中下三層,於是可以這麼寫:
public void printnum(int value)

然後逐個實現每個方法,為了確保這個思路是正確的,先不用考慮所有的數字,只考慮數字1這個情況
private void printtopbody(int value)}}

private void printmiddlebody(int value)}}

private void printbottombody(int value)

}}

然後以1,11,1111作為輸入進行測試,發現結果是正確的。

接下來就可以完善這三個方法了,經過一段時間的編碼和測試,我完成了這道題目。其功能**如下

class lcdpriter

private void printtopbody(int value)}}

private void printmiddlebody(int value)}}

private void printbottombody(int value)}}

}

雖然這段**可以工作,但是怎麼看怎麼彆扭,不知所以然的s0到s7這8個全域性字串(本身就不好命名),邏輯極其類似的printtopbody,printmiddlebody,printbottombody這三個方法,使得邏輯很簡單的乙個程式卻很難看懂。

下篇:乙個程式設計小題目引發的思考(下)

乙個小題目

看到一道題目,自己嘗試了一下 編寫乙個在1,2,9 順序不能變 數字之間插入 或 或什麼都不插入,使得計算結果總是100的程式,並輸出所有的可能性。例如 1 2 34 5 67 8 9 100.首先要考慮所有的可能性,每兩個數字間有3種可能,一共有3的8次方種可能。這樣就能通過遍歷實現。void v...

乙個簡單的小題目引發的血案

我們在做題的時候,經常遇到一些情況,就是明明能過樣例,但是提交卻總是wa,往往會讓人內心崩潰,提交一遍兩遍還行,如果提交了四遍以上,我就會想,唉,算了吧,先換一題,換換思路,後來又想,都已經做了這麼久了,再找一下就能找到結果了,我以我最近乙個提交了7次才ac的經驗來警示自己,以此自勉 題目描述 有二...

原型的乙個小題目

題目要求 建立乙個shape物件,該物件有乙個type屬性和gettype 方法 定義乙個原型為shape的 建構函式,用 建立的物件應有三個物件屬性 a b c,分別用於表示三角形的三條邊 在物件原型中新增乙個名為getperimeter 的新方法,用下面的 來進行測試 var t new 1,2...