【描述】
有一行电文,已按下面规律译成密码:
A →Z B→Y C→X ……
a→z b→y c→x ……
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。
要求编程序将密码译回原文,并输出密码和原文。
整题的思路非常简单,就是定义变量,然后取值,循环,输出。
但是难点就在题目的条件,第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,所以我们这里需要用到ascii码的码值来进行运算
#include<stdio.h>
int main()
{
char str[88];
int i,len;
gets(str); //输入字符数组
len=strlen(str); //测量字符长度,确定for语句i的循环次数,测量字符数组长度的时候不要加引号,加了引号就变成了测量一个字符串
puts(str); //输出字符数组
for(i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z')
str[i] = 27-(str[i]-64)+64; //按照题目的要求,只能用ASCII码来进行求值,具体可以翻ascii码表(网上查或者翻红宝书后边皆可)
else if(str[i]>='a'&&str[i]<='z')
str[i] = 27-(str[i]-96)+96;
}
puts(str);
return 0;
}
运行结果如下: