題目連結
https://zerojudge.tw/ShowProblem?problemid=a009
解題思路
ASCII碼全名為「American Standard Code for Information Interchange」,中文為「美國信息交換標準代碼」。之所以會有這個代碼是因為電腦採用的是二進制,八進制、十進制的其他數字,或甚至英文字母,必須經由此代碼轉換為二進制後,電腦才能順利理解、顯示、運算。
以C語言來說,當電腦進行字元與整數的運算時,會自動將該字元轉為ASCII碼再與整數運算,運算完成後再轉成字元。因此,所謂「把明碼的每個字元加上某一個整數K而得到密碼的字元」,指的是將明碼所對應到的ASCII碼加上某一個整數K,再轉為字串得到密碼。
透過觀察範例輸入/出可知,1經過轉換後會變成*,查表可得K值為-7。因此,我們先使用scanf()函式讀取輸入的明碼,存放到字元陣列arr,再將陣列內的元素逐一減七,就是題目所求的密碼了。
注意事項
本題中使用了strlen()函式取出字串長度。由於strlen()函式並非標準函式庫裡的函式,使用前須先引用 <string.h> 函式庫。
程式碼:C語言
1 |
|