/*有一行电文,已按下面规律译成密码:
A →Z B →Y C →X ……
a →z b →y c →x ……
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。
要求编程序将密码译回原文,并输出密码和原文。*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
int main()
{
char c[100];
int i;
printf("请输入电文:\n");
gets(c);
printf("密码是:\n");
puts(c);
for(i = 0;i < strlen(c);i++)
{
if(isupper(c[i]))
c[i] = fabs(155 - c[i]);
if(islower(c[i]))
c[i] = fabs(219 - c[i]);
}
printf("原文是:\n");
puts(c);
}
谭浩强C程序设计(第四版)p169第12题
找规律找了有10分钟
说明:
可以分成两个数组,因为比较麻烦我就用了一个数组,直接替换的。如果是两个数组,可以分成密码一个数组,原文一个数组,密码内容不会被替换