[练习2] 有一行电文译文下面规律译成密码: A->Z a->z B->Y b->y C->X c->x … 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。
时间: 2024-04-09 16:28:16 浏览: 115
有一个电文包含26个字母和非字母字符按规律将其译成密码
5星 · 资源好评率100%
下面是将密码回原文的函数实现:
```c++
#include <iostream>
#include <cstring>
void decrypt(const char* password)
{
int len = strlen(password);
char original[len + 1];
for (int i = 0; i < len; i++)
{
char c = password[i];
if (isalpha(c))
{
if (isupper(c)) // 大写字母
{
original[i] = 'Z' - (c - 'A');
}
else // 小写字母
{
original[i] = 'z' - (c - 'a');
}
}
else // 非字母字符
{
original[i] = c;
}
}
original[len] = '\0';
std::cout << "密码:" << password << std::endl;
std::cout << "原文:" << original << std::endl;
}
int main()
{
const char* password = "Yvgsrmt";
decrypt(password);
return 0;
}
```
在这个函数中,我们首先获取密码的长度 `len`,然后创建与密码长度相同的字符数组 `original` 来保存原文。接下来,我们遍历密码中的每个字符,对于字母字符,根据规则将其转换回原文中的字符,对于非字母字符,直接复制到原文中。最后,打印出密码和原文。
在 `main` 函数中,我们使用一个示例密码进行测试,并调用 `decrypt` 函数将密码回原文。最后,打印出密码和原文。
阅读全文