习题6.12 有一行电文,已按下面规律译成密码:A->Z,B->Y,C->X...a->z,b->y,c->x.....即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符

有一行电文,已按下面规律译成密码:A->Z,B->Y,C->X…a->z,b->y,c->x…即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。

#include 
#include 
int main()
{
     
    char str[30],p1[30];
    int i;

    printf("请输入一行电文:");
    gets(str);
    strcpy(p1,str);
    for(i=0;p1[i]!='\0';i++)
    {
     
        if(p1[i]>='A' && p1[i]<='Z'-13) p1[i]='M'-p1[i]+'M'+1;
        else if(p1[i]>'Z'-13 && p1[i]<='Z') p1[i]='Z'-p1[i]+'A';
        else if(p1[i]>='a' && p1[i]<='z'-13) p1[i]='m'-p1[i]+'m'+1;
        else if(p1[i]>'z'-13 && p1[i]<='z') p1[i]='z'-p1[i]+'a';
    }
    printf("\n\n原文为:%s\n",str);
    printf("译文为:%s\n",p1);
    return 0;
}

习题6.12 有一行电文,已按下面规律译成密码:A->Z,B->Y,C->X...a->z,b->y,c->x.....即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符_第1张图片

你可能感兴趣的:(c语言)