题解:Pascal加密的病历单

加密的病历单

时间限制: 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;

转载于:https://my.oschina.net/u/3233411/blog/830123

你可能感兴趣的:(题解:Pascal加密的病历单)