题目描述
有一行电文,已按如下规律译成密码:
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'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z'),因为我是个小白级别,尽量要代码还是有层次一些,这样的复杂式子尽量不要写了吧还是...
}
}
for(int i=0;i<len;i++){
putchar(str[i]);
}
}
大家如果有疑问欢迎在评论下方留言,一起讨论吧!
本文深入解析了一种特定的密码转换算法,该算法将英文字母按照逆序规则进行转换,同时保持非字母字符不变。文章提供了详细的算法实现过程,包括ASCII码的运用,以及如何通过代码实现这一转换。适合对密码学、算法设计感兴趣的读者。

1557

被折叠的 条评论
为什么被折叠?



