黑马程序员技术交流社区

标题: hi,麻烦帮忙看看 [打印本页]

作者: fudanxiaoan    时间: 2015-7-30 15:40
标题: hi,麻烦帮忙看看
编程实现对键盘输入的英文名句子进行加密。用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变。比如245a95n加密后是245bcd95opq。(C语言) 输入的是  Z 该怎么办呢?求解
作者: 白方镜世    时间: 2015-7-30 19:06
应该是循环吧,如果是z就变成abc
作者: liusuizuoyou    时间: 2015-7-30 19:15
打印      (z-26 )+1   (z-26)+2        ( z-26)+3
   
作者: wowthe1st    时间: 2015-7-30 19:37
代码
  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. }
复制代码

作者: fudanxiaoan    时间: 2015-7-31 17:31
wowthe1st 发表于 2015-7-30 19:37
代码

我已经决解了,谢谢你了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2