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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fudanxiaoan 中级黑马   /  2015-7-30 15:40  /  605 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

5 个回复

倒序浏览
应该是循环吧,如果是z就变成abc
回复 使用道具 举报
打印      (z-26 )+1   (z-26)+2        ( z-26)+3
   
回复 使用道具 举报
代码
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int i=0;
  5.         char buf[100],dest[300],*p,c;
  6.         printf("请输入要加密的字符串\n");
  7.         scanf("%s",buf);
  8.        
  9.         for(p=buf;(c=*p)!=0;p++)
  10.         {
  11.                 if(c>='a'&&c<='z')//判断是否是小写字母
  12.                 {
  13.                         dest[i++]=(++c>'z'?c-'z'+'a'-1:c);//是小写字母则将该字母替换成其后三个字母,其后三个字母超出'z'的情况,则超出'z'后从'a'重新计算
  14.                         dest[i++]=(++c>'z'?c-'z'+'a'-1:c);
  15.                         dest[i++]=(++c>'z'?c-'z'+'a'-1:c);
  16.                 }       
  17.                 else if(c>='A'&&c<='Z')//判断是否是大写字母
  18.                 {
  19.                         dest[i++]=(++c>'Z'?c-'Z'+'A'-1:c);//是大写字母则将该字母替换成其后三个字母,其后三个字母超出'Z'的情况,则超出'Z'后从'A'重新计算
  20.                         dest[i++]=(++c>'Z'?c-'Z'+'A'-1:c);
  21.                         dest[i++]=(++c>'Z'?c-'Z'+'A'-1:c);
  22.                 }
  23.                 else //非字母则原样保留
  24.                         dest[i++]=c;
  25.         }
  26.         dest[i]=0;
  27.         printf("加密后为%s\n",dest);
  28.         return 0;
  29. }
复制代码

点评

很好,谢谢  发表于 2015-7-31 17:29
回复 使用道具 举报

我已经决解了,谢谢你了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马