一行密码,包含各种可见字符,保证长度不超过100

有一行电文,已经按照如下规则译成了密码:
A->Z a->z
B->Y b->y
C->X c->x
… …
… …
即第1个字母变换成第26个字母,第i个字母变换成第(26-i+1)个字母。非字母字符不变。给定一段密码,请将其译成原文并输出。

输入
一行密码,包含各种可见字符,保证长度不超过100。

输出
如题目描述中密码翻译规则译出的原文。
请注意行尾输出换行。


#include<iostream>
#include<string.h>

using namespace std;
int main() {
    char a[200];
    for (int i = 0; i <= 25; i++) {
        a['a' + i] = (25 - i) + 'a';
    }
    for (int i = 0; i <= 25; i++) {
        a['A' + i] = (25 - i) + 'A';
    }
    char str[100];
    cin >> str;
    for (int i = 0; i < strlen(str); i++) {
        if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z'))
            cout << a[str[i]];
        else
            cout << str[i];
    }
    return 0;
}