問題 D 習題6 12 解密

2021-10-08 11:55:02 字數 1213 閱讀 8941

題目描述

有一行電文,已按如下規律譯成密碼:

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 統計一串數...