解密文本初阶
描述
在兴建校园的过程中,为了防止信息被窃取,小栋发明了一种简单的加密方法:
对于纯文本消息中的每个字母,将其向右移动五个位置以创建密文消息(即,如果字母为“ A”,则密文为“ F”)。
加密过程:任何非字母字符都应保持不变,并且所有字母字符均应为大写。
例如,如果密文消息是
ABCDEFGHIJKLMNOPQRSTU VWXYZ
则解密后的明文是
VWXYZABCDEFGHIJKLMNOP QRSTU
这个加密方法显然很容易被破解,但是对于小栋建校工程各部门工程的通讯协同,已经够用了。
你能写一个解密程序,把密文翻译成明文吗?
输入
输入将包含最多100个数据集。
每个数据集包含3个组成部分:
起始行固定不变为“ START”
一行加密后的密文消息
结束行固定不变为“ END
读到数据集结束行代码“ ENDOFINPUT”就退出程序
输出
对于每个数据集,输出一行:解密后的消息。
输入样例 1
START
YMJ UWTAJWGX TK XTQTRTS YMJ XTS TK IFANI, PNSL TK NXWFJQ;YT PSTB BNXITR FSI NSXYWZHYNTS;
END
START
IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ
END
START
YMJWJKTWJ XMFQQ YMJD JFY TK YMJ KWZNY TK YMJNW TBS BFD, FSI GJ KNQQJI BNYM YMJNW TBS IJANHJX.
END
ENDOFINPUT
输出样例 1
THE PROVERBS OF SOLOMON THE SON OF DAVID, KING OF ISRAEL;TO KNOW WISDOM AND INSTRUCTION;
DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE
THEREFORE SHALL THEY EAT OF THE FRUIT OF THEIR OWN WAY, AND BE FILLED WITH THEIR OWN DEVICES.
#include<stdio.h>
#include<string.h>
int main()
{
char c[1000]={0};
while(gets(c))
{
char b[6]="START",d[4]="END",m[20]="ENDOFINPUT";
if(strcmp(m,c)==0) break;
if(strcmp(b,c)==0||strcmp(d,c)==0) continue;
else
{
int n=strlen(c);
for(int i=0;i<n;i++)
if(c[i]>='A'&&c[i]<='E')
c[i]=c[i]+26-5;
else if(c[i]>'E'&&c[i]<='Z')
c[i]=c[i]-5;
}
printf("%s\n",c);
}
return 0;
}