黑马程序员技术交流社区

标题: 各位大神 请教一个问题 [打印本页]

作者: 可心来了    时间: 2014-7-25 18:22
标题: 各位大神 请教一个问题
编程实现对键盘输入的英文名句子进行加密。
用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,
若为其它字符时不变。比如245a95n加密后是245bcd95opq。(C语言)
下面是我的代码 可是当遇到字母有 x y z 应该就不行了 求解
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     char a [10];
  5.     char b[20];
  6.     int i = 0, j = 0;
  7.     printf("请输入原文:");
  8.     scanf("%s",&a);
  9.     while(a[i] != '\0')
  10.     {

  11.         if ((a[i] >= 65 && a[i] <= 90) || (a[i] >= 97 && a[i] <= 122))
  12.         {
  13.             b[j] = a[i] + 1;
  14.             b[j + 1] = a[i] + 2;
  15.             b[j + 2] = a[i] + 3;
  16.             j += 3;
  17.         }
  18.         else
  19.         {
  20.             b[j] = a[i];
  21.             j++;
  22.         }
  23.         i++;
  24.     }
  25.     b[j] = '\0';
  26.     i = 0;
  27.     printf("加密后为:");
  28.     while(b[i] != '\0')
  29.     {
  30.         printf("%c",b[i]);
  31.         i++;
  32.     }
复制代码




作者: 菜鸟_琦    时间: 2014-10-14 13:38
#include<stdio.h>  void main() {         char a [10];     char b [20];     int i = 0, j = 0;     printf("请输入原文:");         scanf("%s",&a);         while(a[i] != '\0')     {          if ((a[i] >= 'a' && a[i] <= 'w') || (a[i] >= 'A' && a[i] <= 'W'))         {             b[j] = a[i] + 1;             b[j + 1] = a[i] + 2;             b[j + 2] = a[i] + 3;             j += 3;         }                 else if(a[i]=='x'||a[i]=='X')         {             b[j] = a[i] + 1;             b[j + 1] = a[i] + 2;             b[j + 2] = a[i] + 3-26;             j += 3;         }                 else if(a[i]=='y'||a[i]=='Y')         {             b[j] = a[i] + 1;             b[j + 1] = a[i] + 2-26;             b[j + 2] = a[i] + 3-26;             j += 3;         }                 else if(a[i]=='z'||a[i]=='Z')         {             b[j] = a[i] + 1-26;             b[j + 1] = a[i] + 2-26;             b[j + 2] = a[i] + 3-26;             j += 3;         }         else         {             b[j] = a[i];             j++;         }         i++;     }     b[j] = '\0';     i = 0;     printf("加密后为:");     while(b[i] != '\0')     {         printf("%c",b[i]);         i++;     }         printf("\n"); }
作者: 菜鸟_琦    时间: 2014-10-14 13:41
我错了。。。。




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