C/C++_2019_8_3(最难的问题 )

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_44770155/article/details/100586517

做人的最大乐趣,就是在混乱当中,找到属于自己的系统。

题目描述

最难的问题 | 时间限制:1秒 | 内存限制:32768K
NowCoder生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是军团中的一名军官,需要把发送来的消息破译出来、并提供给你的将军。

消息加密的办法是

对消息原文中的每个字母,分别用该字母之后的第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

输入描述:

输入包括多组数据,每组数据一行,为收到的密文。
密文仅有空格和大写字母组成。

输出描述

对应每一组数据,输出解密后的明文。

示例

输入
HELLO WORLD
SNHJ
输出
CZGGJ RJMGY
NICE

题目解析

题目很容易理解,原文与密码错位5个英文字符
密码字母: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

解题思路

密码 > ‘E’
则:原文 = 密码 - 5
否则: 原文 = 密码 + 21

示例代码

#include <stdio.h>
int main() {
	char c;
	while ((c = getchar()) != EOF){
		if ('A' <= c && 'Z' >= c) {
			c = (c > 'E') ? (c - 5) : (c + 21);
		}
		putchar(c);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44770155/article/details/100586517