看板 C_and_CPP 關於我們 聯絡資訊
小弟給原 PO 的建議 很明顯你第一步正確了,因為你不可能一個一個列印, 所以你第一步想到的是讓電腦 loop 處理, 所以你可能有 for, while, do while, go to... 這些可以選 目前看來用 for 非常的直觀。 所以你先看課本確認自己完全理解 for loop 的行為 接下來的你應該翻開課本到列印或IO的章節,甚至是一開始章節 (有些書會在很前面就先介紹簡單的 IO 如 printf 等等) 以 C 為例,可能課本會有一個格式列表, 所以你現在應該先查是否有整數的 2, 8, 16 進位表示法 接下來有各式各樣的做法, 假設剛好有 2, 8, 16 的表示法,就解決了 假設只有其中幾項 那至少也解決了一部分問題。 還有幾個要考慮的: 1. 這 2, 8, 16 進位表示法是否有互轉的方法或規律 2. 如果沒有現成的互轉方法,你印出的是直接 show 在螢幕上的話 該怎麼拿其中一種表示法來互轉。 3. 如果不能互轉,需要實作多種 case,應該怎麼做? 所以 1 你必須翻書或上網找,看是否有現成又容易使用的 C lib (library) 2. 你必須想看看該怎麼把印出來的資料拿出來使用? 印出來的資料是什麼呢?是不是字串?字串的特性是什麼? 怎麼把整數印到字串裡面? 如果不是字串還可能是什麼? 以上可以翻書或查網路。 假設都找不到現成 2, 8, 16 進位的表示法,就先想,最簡單的是哪一項? 2 進位嗎?這時候翻到課本研讀 2 進位表示法,我該怎麼印出來? 那是以 bit 為單位,所以我是否用到位元的運算? 我是否需要使用 unsigned 的資料型態? 該怎麼儲存過程中的資料? 老師要我們表示的數字,是否要用到 32 位元,還是 8 or 16 位元? 把課本上資料型態和位元運算、字串、陣列的單元研讀一遍, 如果發現不通,回到上一流程,想其他方法。 ... 經過一番努力 你已經實作出其中一項了,可能是 2, 8, 16 進位其中一種, 翻到函數的章節,試著把它寫成一個合理的函數, 想想看有沒有更快更好的方法,如果想不出, 寫個註解標示他的功能,在 main 中 call 該函數驗證結果, 如果無誤,該函數先暫時到這。 所以回到最初的假設,你已經有自己的小型 lib 不是嗎? 所以現在應該互轉呢?還是應該針對不同 case 實作不同函數呢?或者兩者混合? 假設選擇了互轉,試著推導互轉的方式, 應該用數學推過去?公式是什麼?應該用查表法? 如果用查表法該怎麼寫? 流程控制裡面 if/else if/else, switch, go to... 哪一個適合你?他們彼此之間有什麼不同? 怎麼樣的方法可讀性高?速度快?資源消耗少?如果不可兼得該選擇哪一項? (包括寫剛才的函數也要考慮這些) 如果能用註解是否可犧牲可讀性? 翻到課本章節,把他們都看過一遍。 現在寫完了,驗證你的程式。 1. 自己寫個反函數來驗證? 2. 跟老師或課本答案驗證? 3. 抽取幾個關鍵資料來驗證? 有個雛型之後, 1. 你剩下多少時間? 2. 是否還要最佳化? 3. 是否要替程式寫一個文件說明或標註版本? 4. 如果剛才寫在 main,是否再寫成函數方便以後使用? 5. 是否新增功能,例如使用者可以任意輸入任何數字? 總之我還是覺得,一開始一本好書是必要的,讀書是必要的,網路則是次要的。 書上熟悉的部分自然可以加速甚至跳過,書本上的範例程式通常有好的 coding style ... 最後 p.s.如果是書上的習題,表示把當前+先前章節都讀懂了,應該要能寫出答案, 有時間不妨再讀一次。 我不知道可不可以在這裡發問,但是要把你鑽研過程遇到的困難寫出來, 不過,我個人要稱讚你,因為你在寒假是要複習而不是為了交作業。 希望你遇到 BUG 不要氣餒,努力寫,以後就可以把程式這項工具運用熟練。 以上僅供參考唄~~有誤勿見怪 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.110.137.133
james732:推用心回覆 01/26 23:04
※ 編輯: applecool 來自: 123.110.137.133 (01/26 23:09) ※ 編輯: applecool 來自: 123.110.137.133 (01/26 23:13)
diabloevagto:很棒的意見! 01/26 23:12
※ 編輯: applecool 來自: 123.110.137.133 (01/26 23:29)
cory8249:推 01/26 23:42
niwat:推, 認真 01/26 23:48
※ 編輯: applecool 來自: 123.110.137.133 (01/27 00:19)
applecool:謝謝~如果有誤請指正 01/27 00:21
h800526:超級感謝你的回應!真的很用心和誠意 01/27 00:35
h800526:謝謝你!!我知道自己該怎麼做了,自己還不是那麼努力,我會繼 01/27 00:37
h800526:續加油 01/27 00:37
james732:加油!! (我承認我只會在旁邊喊聲XDDD) 01/27 00:40
※ 編輯: applecool 來自: 123.110.137.133 (01/27 00:45)
applecool:修掉我自己的推文 XD 不小心把水球回到推文~好糗 01/27 00:46
liu2007:486P幣,偉哉! 01/27 01:20
ppc:真有耐心 推~~~ 01/27 03:13
applecool:P幣?可以幹嘛?發文要扣錢? 01/27 11:15
tjjh89017:推強大的回覆(worship) 01/27 11:49
lwecloud:P幣只是代表你花了不少時間用心在打這篇文章XD 01/27 23:28