《算法笔记》 2.5小节 问题 D: 习题6-12 解密
题目描述 有一行电文,已按如下规律译成密码: A-->Z a-->z B-->Y b-->y C-->X c-->x ...... ...... 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密码译回原文,并输出。 输入 输入一行密文 输出 解密后的原文,单独占一行。 样例输入 ZYX123zyx 样例输出 ABC123abc 这道题目的难点在于如何表达出转换密文的式子。 大家需要首先知道A和a的ascll码分别是65和97。 当然可能还有更简单的方法,大家借鉴一下我这个就可以了。 #include<stdio.h> #include<string.h> int main() { char str[10]; char c; gets(str); int len=strlen(str); for(int i=0;i<len;i++){ if(str[i]>='A'&&str[i]<='Z'){ c=64+26-(str[i]-64)+1;//直接表达出要交换的字母的ASCLL码值,然后再将其赋值给char型的str[i] str[i]=c; } if(str[i]>='a'&&str[i]<='z'){ c=96+26-(str[i]-96)+1; str[i]=c; //大家还可以将这两段if代码合成一个大的if(str[i]>='A