作者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