• 趣味题:恺撒Caesar密码(c++实现)


    描述:Julius Caesar 生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来、并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F),其他字符不 变,并且消息原文的所有字母都是大写的。 密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

    输入:最多不超过100个数据集组成。每个数据集由3部分组成:起始行:START 密码消息:由1到200个字符组成一行,表示Caesar发出的一条消息结束行:END 在最后一个数据集之后,是另一行:ENDOFINPUT

    输出:每个数据集对应一行,是Caesar 的原始消息。

    input:

    START
    NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
    END
    START
    N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ
    END
    START
    IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ
    END
    ENDOFINPUT
    ouput:
    IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
    I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME
    DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE
    
    分析:题目比较简单,需要注意的是输入函数的使用,密码消息中含空格,故不能用cin输入,所以使用getline(cin.str)输入,特别第一个start的字符串也要使用getline()输入,否则密码征文为空白,我觉得应该是输入start用回车换行后回车符还在缓冲区,等到用getline()输入是读到了回车结束输入,这样密码消息为空白。
    getline(),只以回车作为结束符
     1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 
     5 void change(string& a)
     6 {
     7     for (int i = 0; i < a.size(); i++)
     8     {
     9         if (a[i] >= 'A'&&a[i] <= 'U')
    10             a[i] += 5;
    11         else if (a[i] >= 'V'&&a[i] <= 'Z')
    12             a[i] = 'A' + a[i] - 'V';
    13     }
    14 }
    15 
    16 int main()
    17 {
    18     string start, message, end;
    19     while ((getline(cin, start)) && (start.compare("ENDOFINPUT")))
    20     {
    21         getline(cin,message);
    22         getline(cin, end);
    23         change(message);
    24         cout << message << endl;
    25     }
    26     system("pause");
    27     return 0;
    28 }


  • 相关阅读:
    谷歌技术"三宝"之BigTable
    谷歌技术"三宝"之谷歌文件系统
    谷歌技术"三宝"之MapReduce
    大话存储
    ASP.NET之旅--深入浅出解读IIS架构
    好网站
    ArcGIS API for Silverlight学习资料积累
    浏览器滚动条快到底部时自动加载数据
    MVC EF中Attach和Entry区别
    微信开发jssdk入门
  • 原文地址:https://www.cnblogs.com/wuyoucao/p/4687861.html
Copyright © 2020-2023  润新知