文章

36

粉丝

504

获赞

54

访问

353.8k

头像
题解:加密算法
P1014 华南师范大学/贵州大学机试题
发布于2020年2月22日 21:43
阅读数 10.9k

这个加密方法其实就是历史中经典的恺撒密码

getline(cin,s)用来读取一行的输入,头文件<string>

如果在句子中遇到A到Z或者a到z的字符那么就将它转换

重点在于怎么转换:

s[i] = (s[i] - 'A' + 3) % 26 + 'A';

首先 s[i]-'A'得到原来字母位于字母表中的序号:A是0,B是1。。。。

(s[i]-'A'+3)%26得到字母平移后位于字母表中的序号,%26是避免序号超出25

最后再加个'A'来把序号转换成对应字母的ASCII码

#include<string>//getline
#include<iostream>
using namespace std;
int main()
{
	string s;
	getline(cin, s);
	for (int i = 0; i < s.length(); i++)
	{
		if ('A' <= s[i] && s[i] <= 'Z')
			s[i] = (s[i] - 'A' + 3) % 26 + 'A';
		else if('a' <= s[i] && s[i] <= 'z')
			s[i] = (s[i] - 'a' + 3) % 26 + 'a';
	}
	cout << s;
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发