[問題] 九九乘法表

看板C_Sharp (C#)作者 (胖丁)時間12年前 (2012/05/04 14:58), 編輯推噓12(12012)
留言24則, 5人參與, 最新討論串1/4 (看更多)
最近在看書自學 用迴圈一口氣列出九九乘法表我會 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 ... .. . 不過書上出的題目是要列成下面那樣 1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 4 4 8 12 16 20 24 28 32 36 ... .. . 我的想法是 int x = 1, y = 1; //宣告X軸跟Y軸 string str = Convert.ToString(x); Console.Write(str.PadLeft(4)); x++; while (x < 10) { str = Convert.ToString(x); Console.Write(str.PadLeft(3)); x++; if (x == 10) { Console.Write("\n"); x = 1; break; } }//先列出第一行 while (y < 10) { Console.Write(y); //印出每行的第一個表示"Y軸"的數字 if (x < 10) { str = Convert.ToString(x * y); Console.Write(str.PadLeft(2)); x++; } //這個if一次印一行XY相乘的結果 else { Console.Write("\n"); y++; x = 1; } // x > 9 跳下一行 } Console.ReadLine(); 執行出來的結果是 1 2 3 4 5 6 7 8 9 1 11 21 31 41 51 61 71 81 91 2 22 42 62 82102122142162182 3 33 63 93123153183213243273 ... .. . 後面那個非預期的數字我看不出來是哪邊跑出來的 有沒有前輩可以指點一下是哪個環節出錯呢? 我猜是str = Convert.ToString(x * y);這段的問題? -- ╔═ ═╦╦═════╦═════╗ ◤◤◤ ╠╣飛鳥ももこ╠═╗ ║ ║╚═════╝ ╚═╦═╣ ║╔══════╗╔═╩═╣ █◤ ╠╣Momoko Asuka╠╝ ║ ◣◢◣◢╩╩══════╩════╝ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.150.222

05/04 15:07, , 1F
錯在 Console.Write(y);沒判斷吧?
05/04 15:07, 1F

05/04 15:09, , 2F
你每跑一次迴圈都會執行次那一行,你看你乘出來的數字的後
05/04 15:09, 2F

05/04 15:09, , 3F
面都多個y
05/04 15:09, 3F

05/04 15:12, , 4F
我剛剛也抓到了,現在正在想辦法修改 謝謝 ^^
05/04 15:12, 4F

05/04 15:24, , 5F
改好了! 程式真不是腦袋不清楚的人學得來的 orz
05/04 15:24, 5F

05/04 15:46, , 6F
可以請問是哪一本書嗎?謝謝 ^_^
05/04 15:46, 6F

05/04 16:00, , 7F
visual C# 程式設計16堂課 我感覺這本書講得有點快
05/04 16:00, 7F

05/04 16:11, , 8F
誰寫的啊?哪一個書局?因為我不知道要怎麼找...謝謝 ^_^
05/04 16:11, 8F

05/04 16:19, , 9F
碁峰 李啟龍 不是google就有答案了...?
05/04 16:19, 9F

05/04 16:27, , 10F
google是一票答案問你不是比較快?XD先不說這個,我有一個疑問
05/04 16:27, 10F

05/04 16:29, , 11F
if (x == 10) { 這一行後面不是不會執行到嗎?因為
05/04 16:29, 11F

05/04 16:30, , 12F
while (x < 10) 不是最多執行到 9 而已...?
05/04 16:30, 12F
不會 假設目前x == 9 while (x < 10) { // 9 < 10, 所以下面開始跑 str = Convert.ToString(x); Console.Write(str.PadLeft(3)); x++; // x++, 現在 x == 10 if (x == 10) { // x == 10, 所以下面開始跑 Console.Write("\n"); x = 1; break; 其實while (x < 10)應該寫成while (true)就好了 (x < 10)好像有點畫蛇添足 ;;

05/04 16:33, , 13F
為什麼還要特別 break 出來?請教一下..我沒學過C#只學過C++/C
05/04 16:33, 13F
因為不break的話 x = 1; 然後跳回去while (x < 10) 這樣會跑不完阿 ※ 編輯: gasbomb 來自: 220.132.150.222 (05/04 16:39)

05/04 16:37, , 14F
我知道了...你將 if 放在 x++ 後面...對不起...XD
05/04 16:37, 14F

05/04 16:39, , 15F
XD
05/04 16:39, 15F

05/04 16:45, , 16F
我習慣迴圈遞增放在最後面,放在中間的,很少見XD
05/04 16:45, 16F

05/04 16:47, , 17F
這樣放算是壞習慣嗎? 我學C#之前只有"玩"過一點Ruby
05/04 16:47, 17F

05/04 16:50, , 18F
因為另外一個迴圈 for (c#有嗎?)是放在最後面...
05/04 16:50, 18F

05/04 16:52, , 19F
有, 可是我不太喜歡用 (跑
05/04 16:52, 19F

05/04 16:57, , 20F
for 的無窮迴圈 for(;;) 很經典,比 while(true) 還經典XD
05/04 16:57, 20F

05/04 19:49, , 21F
你現在的問題只是你不知道怎麼呈現而已啊
05/04 19:49, 21F

05/04 20:12, , 22F
用個二維陣列比較實在
05/04 20:12, 22F

05/04 20:20, , 23F
我還在新手區阿,總不能越級打怪 XD
05/04 20:20, 23F

05/05 00:57, , 24F
『visual C# 程式設計16堂課』範例多嗎?16堂當然快囉^^ XD
05/05 00:57, 24F
文章代碼(AID): #1Fetu69D (C_Sharp)
文章代碼(AID): #1Fetu69D (C_Sharp)