厦大ACM入门百练

解密文本初阶

描述

在兴建校园的过程中,为了防止信息被窃取,小栋发明了一种简单的加密方法:

对于纯文本消息中的每个字母,将其向右移动五个位置以创建密文消息(即,如果字母为“ 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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值