紀錄自己練習及思考的歷程。
二進位轉十進位
讀入一個0000 ~ 1111的2進位整數,請顯示出對應的10進位數字。
判斷是否為十六進位後轉十進位
設計一個程式讀入2個字元(假設英文字母均為大寫),判斷所讀入的字元是否為16進位的數字,如果是,轉換為10進位的數值;如果否,顯示非16進位。
十六進位轉二進位
讀入一個2位元的16進位數字,請顯示出對應的2進位數字(00000000 ~ 11111111)。
判斷是否為二進位後轉十六進位
設計一個程式讀入8位元的2進位數字,判斷所讀入是否為2進位的數字,如果是,轉換為16進位的數值;如果否,顯示非2進位。
有幾個質數
設計一個程式讀入2個整數,計算出2個整數間有幾個質數。
- 設計關鍵:質數是在大於1的正整數中,除了1和此整數自己以外,無法被其他正整數整除的數。
顯示該月的月曆
設計一個程式讀入年份和月份兩個整數,在畫面上顯示該月份的月曆。(已知1900年1月1日為星期一)
- 設計關鍵:先判斷該年是否為閏年,再計算從1900到輸入年份的1月1日共有幾天,天數和7取餘數後,多的天數即為當年1月1日起始之星期。
相距幾天
設計一個程式讀入兩個日期(yyyymmdd),計算出兩個日期相距幾天。
- 設計關鍵:先判斷兩個日期的年、月依序判斷是否一樣,日期間是否有閏年。
計算長整數相加
設計一個程式讀入整數(最長80個數字),計算出兩個整數相加的結果。
- 設計關鍵:使用字串來做,從最後一位數開始往前推算。
井字遊戲
請設計一個程式,讓兩個使用者完井字遊戲,依序放入O和X,程式可以判斷誰贏了。
- 設計關鍵:使用陣列來做,建議用一些函式來簡化重複的勝利判斷。
與電腦井字遊戲
請設計一個程式,讓使用者(O)和電腦(X)玩井字遊戲,由使用者開始,電腦要盡力取勝和防守,並判斷誰贏了。
- 設計關鍵:電腦的防守為有條件的判斷,玩家第一手下完後,如果玩家不是下中間位置,電腦就會下中間位置以提高取勝機率; 如果玩家是下中間位置,電腦就會下左下角位置。
1A2B猜密碼
請設計一個程式,由電腦產生由4個不重複數字(0-9)所組成的密碼,之後由玩家來猜測這個密碼。 將猜測密碼的4個數字逐一與實際密碼的4個數字進行比較,如果有猜測密碼的某個數字與組成密碼的某個數字相同,且位置相同,則計算為1A;如果數字相同,但位置不同則計算為1B。將比較的結果合併計算後提供給玩家,作為玩家進行下一次猜測的參考。當計算結果為4A0B,則表示玩家已經猜中密碼。玩家輸入0000表示放棄,程式會顯示密碼。
- 設計關鍵:建議用一些函式來簡化重複的判斷,記得防堵玩家輸入的數字都一樣。