有一行电文,已按以下规律译成密码: A-Z a-z B-Y b-y C-X c-x,即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编程将密码译回原文,并输出密码和原文。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void cal(char str[])
{
for (int i = 0; i < strlen(str); i++)
{
if (str[i] == 'z')
{
str[i] = 'a';
}
else if (str[i] == 'Z')
{
str[i] = 'A';
}
else if (str[i] >= 'a' && str[i] < 'z')
{
str[i] = 'a'+'z'-str[i];
}
else if (str[i] >= 'A' && str[i] < 'Z')
{
str[i] = 'A' + 'Z' - str[i];
}
}
puts(str);
}
int main()
{
char str[20];
gets(str);
cal(str);
system("pause");
return 0;
}
答案
有一行电文,已按以下规律译成密码: A-Z a-z B-Y b-y C-X c-x,即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编程将密码译回原文,并输出密码和原文。