题解 | 简单密码

简单密码

https://www.nowcoder.com/practice/ff99c43dd07f4e95a8f2f5448da3772a

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;

int main() {
    string str;
    while (getline(cin, str)) { //起始行
        if (str == "ENDOFINPUT") {
            break;
        }
    getline(cin, str); //密文
    for (int i = 0; i < str.size(); ++i) {
        if ('A' <= str[i] && str[i] <= 'Z') {
            str[i] = (str[i] - 'A' - 5 + 26) % 26 + 'A';
        }
    }
    cout << str << endl;
    getline(cin, str); //结束行
    return 0;
    }
}

关键点

  1. 输入格式:起始行(一行)、密文(一行)、结束行(一行);起始行分为两种,STARTENDOFINPUT ;开始用while (getline(cin, st r)) {接收掉起始行,然后判断:如果是ENDOFINPUT 则直接结束;若是START则接着读取密文;最后用一个getline(cin, str)接 收掉END
  2. 翻译密文:循环平移类问题,不能简单的-5; 并且要取模解决负数问题;应该 str[i]=(str[i]-'A'-5+26) %26+'A';

全部评论

相关推荐

一壶浊酒度余生:感觉挺好的这个奖项很拿得出手啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务