題目連結
https://zerojudge.tw/ShowProblem?problemid=a149
解題思路
本題希望我們求得輸入整數的各個位數乘積。因此,我們可以將問題分成兩個部分:將輸入數字的各個位數分開,以及把它們乘起來。
首先,為了將輸入數字各個位數分開存放,我們可以使用字串讀取輸入,將各個位數視作獨立的字元存放在字元陣列中。可能會有人好奇,為什麼我們不使用整數陣列存放各個位數呢?這是因為整數陣列讀取時會以空白作為各項的分界,各數字間必須要有空格才會被判定為不同項,而字元陣列則是自動將各個字元單獨存進陣列中。舉例來說,若是輸入的數字為356,因為3、5和6之間沒有以空白隔開,使用整數型態陣列讀取的話只會讀到356一個數字;而字元陣列是將356視為長度為3的字串,因此會將3、5、6分別以字元型態分開存放。
再來,在運算時我們必須將其從字元型態轉回整數型態。至於如何轉換,可以參考我們之前在a009. 解碼器所說的,使用ASCII碼。透過查表可知,0的ASCII碼為48,因此阿拉伯數字的真實值即為其ASCII碼減去48。
注意事項
本題中使用了strlen()函式取出字串長度。由於strlen()函式並非標準函式庫裡的函式,使用前須先引用 <string.h> 函式庫。
程式碼:C語言
1 |
|