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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kfz0507 中级黑马   /  2017-6-13 22:23  /  1920 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

int main(int argc, const char * argv[]) {
    char str[80];//创建一个字符串数组 用来接受从键盘录入的字符串
    char c;//定义一个 字符用来存放将字符串一个一个取出来的字符
    gets(str);//这是一个 C语言的方法 用来从键盘接受字符串 比 scanf 方便
    for (int i=0; (c=str[i])!='\0'; i++) {//此行为重点 注意for循环的执行条件 我们都知道字符串的存储是以'\0'来结尾的 当我们一个一个取出字符串中的单个字符时 当取到'\0'就代表字符串取完了 注意点招所有对字符串的处理 判断用到的for循环的都是这个条件 OC中也是 所以很重要 记住你就没问题了!!
        /* 下面是对加密条件的分析
         1.数字不处理原样输出,
         
         2. a A ~~~~w W 可写成一种if语句里面
         
         3. 从X Y Z 这三种字母是特出情况 需要单独拿出来考虑
         x||X  后三位为yza
         y||Y         zab
         z||Z         abc
         代码如下:
         
         */
        
        if (c>='0'&&c<='9') {
            printf("%c",c);
        }else if ((c>='a'&&c<='w')||(c>='A'&&c<='W'))
            printf("%c%c%c",c+1,c+2,c+3);
        else if (c=='x'||c=='X')
            printf("%c%c%c",c+1,c+2,c-23);
        else if (c=='y'||c=='Y')
            printf("%c%c%c",c+1,c-24,c-23);
        else if (c=='z'||c=='Z')
            printf("%c%c%c",c-25,c-24,c-23);
        
    }
    return 0;
}

2 个回复

倒序浏览
666666666,谢谢分享。
回复 使用道具 举报
谢谢大神支持!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马