題目描述
有一行電文,已按如下規律譯成密碼:
a–>z a–>z
b–>y b–>y
c–>x c–>x
即第乙個字母變成第26個字母,第i個字母變成第(26-i+1)個字母,非字母字元不變。要求根據密碼譯回原文,並輸出。
輸入
輸入一行密文
輸出
解密後的原文,單獨佔一行。
樣例輸入
zyx123zyx
樣例輸出
abc123abc
思路解析:
主要是針對字母之間的轉換:
分成兩類:大寫字母和小寫字母;
首先,大寫字母:
a–>z b–>y c–>x
就是第乙個變成最後乙個;
第二個變成倒數第二個;
第三個變成倒數第三個;
……發現,次序是沒有變的,變的是從前面開始數還是後面開始數;
那麼把次序找到就好辦了;
用字母的ascii碼減去a的ascii碼就得到次序;
字母次序
a『a』-『a』=0
b『a』-『b』=1
c『a』-『c』=2
d『a』-『d』=3
這次序是和陣列一樣從0開始的;
那麼,字母次序z
『z』-(a』-『a』)
y『z』-(a』-『b』)
c『z』-(a』-『c』)
d『z』-(a』-『d』)
那麼,就得到了結論;
假設字母為任意大寫字母,那麼,變化後就是 『z』-(『a』-『大寫字母』);
同理,小寫字母也是一樣的思路;
假設字母為任意小寫字母,那麼,變化後就是 『z』-('a』-『小寫字母』);
完整**:
#include
#include
intmain()
else
if(str[i]
>=
'a'&&str[i]
<=
'z')
}//字串輸入
printf
("%s"
,str)
;return0;
}
問題 D 習題6 12 解密
有一行電文,已按如下規律譯成密碼 a z a z b y b y c x c x 即第乙個字母變成第26個字母,第i個字母變成第 26 i 1 個字母,非字母字元不變。要求根據密碼譯回原文,並輸出。輸入一行密文 解密後的原文,單獨佔一行。zyx123zyx abc123abc 首先第乙個聯想到的是字...
codeup墓地 習題6 12
include int main if 48 a i a i 57 if 97 a i a i 122 puts a 本體關鍵在於對ascii表中0 9,a z,a z位置的認知 0 9對應48 57,a z對應65 90,a z對應97 122.在字元陣列中直接輸入數或者字元均代表的是ascii值...
Linux C一站式學習習題答案6 1 2統計個數
2 編寫程式數一下1到100的所有整數中出現多少次數字9。在寫程式之前先把這些問題考慮清楚 這個問題中的迴圈變數是什麼?這個問題中的累加器是什麼?用加法還是用乘法累積?在第 2 節 if else語句 的習題1寫過取乙個整數的個位和十位的表示式,這兩個表示式怎樣用到程式中?include 統計一串數...