程式碼實作
using System;
class MultiplicationTable
{
public static void Main()
{
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write($"{i}*{j}={i * j}\t");
}
Console.WriteLine();
}
}
}
執行結果
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
邏輯解析
- 外層迴圈
i = 1..9 控制被乘數(行號)。
- 內層迴圈
j = 1..i 控制乘數,僅輸出左下三角(含對角線),避免重複(如 2×3 與 3×2)。
Console.Write 不換行輸出單一算式,\t 為定位符對齊欄位。
Console.WriteLine() 內層迴圈結束後換行,進入下一行。
進階變體
完整 9×9 方陣
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= 9; j++)
{
Console.Write($"{i}*{j}={i * j,2}\t");
}
Console.WriteLine();
}
使用字串插值與格式化對齊
Console.Write($"{i}×{j}={i*j,3} "); // {i*j,3} 寬度 3 右對齊
LINQ 一行寫法
Enumerable.Range(1, 9)
.Select(i => string.Join("\t", Enumerable.Range(1, i).Select(j => $"{i}*{j}={i*j}")))
.ToList()
.ForEach(Console.WriteLine);
教學重點
- 巢狀迴圈是處理二維資料、矩陣、表格的基礎結構。
Console.Write vs WriteLine 的輸出控制。
- 字串插值 (
$"") 與複合格式化 ({index,width:format}) 提升可讀性與對齊。
- 邊界條件
j <= i 體現數學對稱性優化。