作者gasbomb (胖丁)
看板C_Sharp
標題[問題] 九九乘法表
時間Fri May 4 14:58:11 2012
最近在看書自學
用迴圈一口氣列出九九乘法表我會
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
1F:推 LaPass:錯在 Console.Write(y);沒判斷吧? 05/04 15:07
2F:推 LaPass:你每跑一次迴圈都會執行次那一行,你看你乘出來的數字的後 05/04 15:09
3F:→ LaPass:面都多個y 05/04 15:09
4F:→ gasbomb:我剛剛也抓到了,現在正在想辦法修改 謝謝 ^^ 05/04 15:12
5F:→ gasbomb:改好了! 程式真不是腦袋不清楚的人學得來的 orz 05/04 15:24
6F:推 if4:可以請問是哪一本書嗎?謝謝 ^_^ 05/04 15:46
7F:→ gasbomb:visual C# 程式設計16堂課 我感覺這本書講得有點快 05/04 16:00
8F:推 if4:誰寫的啊?哪一個書局?因為我不知道要怎麼找...謝謝 ^_^ 05/04 16:11
9F:→ gasbomb:碁峰 李啟龍 不是google就有答案了...? 05/04 16:19
10F:推 if4:google是一票答案問你不是比較快?XD先不說這個,我有一個疑問 05/04 16:27
11F:→ if4:if (x == 10) { 這一行後面不是不會執行到嗎?因為 05/04 16:29
12F:→ if4:while (x < 10) 不是最多執行到 9 而已...? 05/04 16:30
不會
假設目前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)好像有點畫蛇添足 ;;
13F:→ if4:為什麼還要特別 break 出來?請教一下..我沒學過C#只學過C++/C 05/04 16:33
因為不break的話
x = 1;
然後跳回去while (x < 10)
這樣會跑不完阿
※ 編輯: gasbomb 來自: 220.132.150.222 (05/04 16:39)
14F:推 if4:我知道了...你將 if 放在 x++ 後面...對不起...XD 05/04 16:37
15F:→ gasbomb:XD 05/04 16:39
16F:推 if4:我習慣迴圈遞增放在最後面,放在中間的,很少見XD 05/04 16:45
17F:→ gasbomb:這樣放算是壞習慣嗎? 我學C#之前只有"玩"過一點Ruby 05/04 16:47
18F:推 if4:因為另外一個迴圈 for (c#有嗎?)是放在最後面... 05/04 16:50
19F:→ gasbomb:有, 可是我不太喜歡用 (跑 05/04 16:52
20F:推 if4:for 的無窮迴圈 for(;;) 很經典,比 while(true) 還經典XD 05/04 16:57
21F:推 optimist9266:你現在的問題只是你不知道怎麼呈現而已啊 05/04 19:49
22F:推 f1234518456:用個二維陣列比較實在 05/04 20:12
23F:→ gasbomb:我還在新手區阿,總不能越級打怪 XD 05/04 20:20
24F:推 if4:『visual C# 程式設計16堂課』範例多嗎?16堂當然快囉^^ XD 05/05 00:57