A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

4、 编程实现对键盘输入的英文名句子进行加密。用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变。比如245a95n加密后是245bcd95opq。(C语言)

#include<stdio.h>
#include<string.h>
void print(char ch)
{
        if( !((ch>=65&&ch<=90)||(ch>=97&&ch<=122)) )
                putchar(ch);
        else if(ch=='x')
        {
                putchar(ch+1);
                putchar(ch+2);
                putchar(ch-23);
        }
        else if(ch=='y')
        {
                putchar(ch+1);
                putchar(ch-24);
                putchar(ch-23);
        }
        else if(ch=='z')
        {
                putchar(ch-25);
                putchar(ch-24);
                putchar(ch-23);
        }
        else
        {
                putchar(ch+1);
                putchar(ch+2);
                putchar(ch+3);
        }
}
int main()
{
        char str[100];
        int i,len;
        gets(str);
        len=strlen(str);
        for(i=0;i<len;i++)
                print(str);
        printf("\n");
        return 0;
}

5 个回复

倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
123wwlwwl 发表于 2015-9-11 10:56
为什么xyz缺少的部分要从前面补?题目中没这个规定啊?

既然是密码,如果没办法还原就叫乱码不叫密码啦~“xyz分别用他们后面的三个字母代替"这个句子本身就有问题,只知道必须用其他字母代替它们,那么如果不从前面补也得想办法从其他的地方补,不管怎么补都得另外设置。
回复 使用道具 举报
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
123wwlwwl 发表于 2015-9-11 15:23
对的 题目本身就有问题 从来没有规定过从前面取 我看大家基本上都是从前面取的 ...

无所谓啦,能解决的问题就不是问题,你十三期的?
回复 使用道具 举报
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马