首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言九九乘法表:三角形、矩形與格式化輸出變體

     編輯:C 語言問答

九九乘法表:從矩形到三角形的循環邊界控制

標準矩形表 (9x9)

for (int i = 1; i <= 9; ++i) {
    for (int j = 1; j <= 9; ++j)
        printf("%dx%d=%-3d ", i, j, i*j);
    putchar('\n');
}

左下三角 (題目常見要求)

for (int i = 1; i <= 9; ++i) {
    for (int j = 1; j <= i; ++j)   // j <= i 關鍵!
        printf("%dx%d=%-3d ", i, j, i*j);
    putchar('\n');
}

輸出:

1x1=1
1x2=2  2x2=4
1x3=3  2x3=6  3x3=9
...

右上三角 (原提問目標)

for (int i = 1; i <= 9; ++i) {
    for (int j = 1; j <= 9; ++j) {
        if (j < i) printf("       ");  // 7空格佔位對齊
        else printf("%dx%d=%-3d ", i, j, i*j);
    }
    putchar('\n');
}

輸出:

1x1=1  1x2=2  1x3=3  ... 1x9=9
       2x2=4  2x3=6  ... 2x9=18
                   3x3=9  ... 3x9=27

格式化技巧

  • %-3d:左對齊佔 3 位,保證列對齊。
  • %2dx%2d=%-3d:雙數字對齊,適合大表。
  • 用 \t 分隔簡單但不同終端顯示寬度不同,推薦定寬格式。

原代碼錯誤分析

for(j=1;j<=9;j++)
    if(j<=i) printf(" "); else printf("%d*%d=%d",i,j,i*j);  // 邏輯反了,且缺換行控制

問題:j<=i 時打印空格,導致左下角留白;應為 j 打印空格 (右上三角) 或直接 j<=i 打印算式 (左下三角)。

進階:單循環實現 (面試技巧)

for (int k = 1; k <= 81; ++k) {
    int i = (k-1)/9 + 1;
    int j = (k-1)%9 + 1;
    if (j <= i) printf("%dx%d=%-3d ", i, j, i*j);
    if (j == 9) putchar('\n');
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved