有一行电文,已按下面规律译成密码:A→z B→y a→Z b→Y
第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字母不变。要求编程序将密码译成原文,并输出密码和原文
#include <stdio.h>
int main()
{
char cl[26], sl[26], p[20];
int i, j, k;
for (i=0, j='A', k='a'; i<26; cl[i]=j++, sl[i]=k++, i++);
printf("Please enter password: ");
gets(p);
printf("Password: ");
puts(p);
for (i=0; i<20; i++)
for (j=0; j<26; j++){
if (p[i]==cl[j]){
p[i]=cl[25-j]; break;
}
if (p[i]==sl[j]){
p[i]=sl[25-j]; break;
}
}
printf("Original: ");
puts(p);
return 0;
}
#include <stdio.h>
#include <string.h>
void f(char t[])
{
int len=strlen(t),j;
for(j=0;j<len;j++)
{
if(t[j]>='A'&&t[j]<='Z')
{
t[j]=t[j]+57-(t[j]-'A')*2;
}
else if(t[j]>='a'&&t[j]<='z')
{
t[j]=t[j]-7-(t[j]-'a')*2;
}
}
}
int main()
{
char t[250];
printf("请输入字符串:\n");
gets(t);
f(t);
puts(t);
return 0;
}
转换公式都已经给出了,你只需要遍历字符串数组,然后判断一下当前字符是否是字母,如果是字母,就代入转换公式计算,否则不变就可以了。