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

題目 Problem

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

敘述 Description

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

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

1234.jpg

若輸入 0789 ,則顯示

0789.jpg

輸入 Input

輸入格式為四個整數。

輸出 Output

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

範例輸入 Sample Input

1
0789

範例輸出 Sample Output

1
2
3
4
5
***** ***** ***** *****
* * * * * * *
* * * ***** *****
* * * * * *
***** * ***** *

提示 Hint

題解 Solution

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

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

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

程式碼 Accepted Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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 語言通通寫過一次,瀏覽次數增加最多的好像都是這樣基礎文章,可能最近碰到開學,學寫程式的人有變多。