加密的病历单
时间限制: 1 Sec 内存限制: 128 MB
[提交][状态][讨论版]
题目描述
Yemaster是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。
在药房实习期间,Yemaster扎实的专业基础获得了医生的一致好评,得知Yemaster在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。
经过研究,Yemaster发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)
1. 原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz)
2. 逆序存储(abcd -> dcba )
3. 大小写反转(abXY -> ABxy)
输入
一个加密的字符串。(长度小于50且只包含大小写字母)
输出
输出解密后的字符串。
样例输入
GSOOWFASOq
样例输出
Trvdizrrvj
分析
此题可以分多部走
(1)读入
(2)翻转
(3)大写转小写,小写转大写
(4)后继3个字符
(5)输出
步骤代码
(1)readln(s); //s:string;
(2)for i:=1 to length(s); //建议length(s);再写一个变量,不然很耗时
begin
t:=s[i];
s[i]:=s[length(s)-i+1];
s[length(s)-i+1]:=t;
end;
(3)for i:=1 to length(s) do
if (s[i]>='a') and (s[i]<='z') then s[i]:=upcase(s[i])
else s[i]:=lowercase(s[i]); //upcase和lowercase是转换大小写
(4)
for i:=1 to length(s)do
begin
if upcase(chr(ord(s[i])+3))>'Z' then s[i]:=chr(ord(s[i])+3-26)
else s[i]:=chr(ord(s[i])+3);
end;