快轉到主要內容

ITSA 基礎題庫 —— 題目01. 矩陣數字顯示

·213 字·1 分鐘·
ChengHao Yang
作者
ChengHao Yang
SRE / CNCF Ambassador
目錄

題目 Problem
#

題目連結:https://etutor2.itsa.org.tw/mod/topics/view.php?id=15902

敘述 Description
#

現有一可顯示四位數字的 LED 燈一組,可根據輸入的四位數字顯示數字。比如說,

由鍵盤輸入 1234 ,則可在螢幕上顯示

1234.jpg

若輸入 0789 ,則顯示

0789.jpg

輸入 Input
#

輸入格式為四個整數。

輸出 Output
#

輸出值為輸入值的矩陣數字。

範例輸入 Sample Input
#

0789

範例輸出 Sample Output
#

***** ***** ***** *****
*   *     * *   * *   *
*   *     * ***** *****
*   *     * *   *     *
*****     * *****     *

提示 Hint
#

題解 Solution
#

如果題目直接輸入整數,會把前導 0 給省略,因此使用字串輸入。

輸出會是由上到下執行,所以要先印出每一個數字的第一行,再印出每一個數字的第二行,以此類推。

可以用字元陣列建立要顯示的 LED 燈,最後直接對應每個數字輸出該字串即可。

程式碼 Accepted Code
#

#include <stdio.h>

char display[5][10][6] = {
    {"*****", "    *", "*****", "*****", "*   *", "*****", "*****", "*****", "*****", "*****"},
    {"*   *", "    *", "    *", "    *", "*   *", "*    ", "*    ", "    *", "*   *", "*   *"},
    {"*   *", "    *", "*****", "*****", "*****", "*****", "*****", "    *", "*****", "*****"},
    {"*   *", "    *", "*    ", "    *", "    *", "    *", "*   *", "    *", "*   *", "    *"},
    {"*****", "    *", "*****", "*****", "    *", "*****", "*****", "    *", "*****", "    *"},
};

int main()
{
    char s[10];
    scanf("%s", s);
    for (int j = 0; j < 5; j++){
        for (int i = 0; i < 4; i++){
            int d = s[i] - '0';
            if (i)
                printf(" ");
            printf("%s", display[j][d]);
        }
        printf("\n");
    }
    return 0;
}

後記 Afterword
#

目前預計會把所有 ITSA 基礎題目都會用 C 語言通通寫過一次,瀏覽次數增加最多的好像都是這樣基礎文章,可能最近碰到開學,學寫程式的人有變多。

相關文章