黑马程序员技术交流社区

标题: 对输入的英文字母进行加密 [打印本页]

作者: EchoWill    时间: 2014-4-28 10:59
标题: 对输入的英文字母进行加密
本帖最后由 EchoWill 于 2014-4-28 19:19 编辑
  1. #include <stdio.h>
  2. #include <string.h>

  3. int main(int argc, const char * argv[])
  4. {
  5.    
  6.     char str[1024] = {},s[1024] = {}; //定义字符串str以输入,字符串s以输出
  7.     printf("请输入需要加密的字符串:\n");
  8.     scanf("%s",str);
  9.    
  10.     // 字符串的初始下标
  11.     int i = 0, j = 0;
  12.     // 循环遍历字符串中的所有字符,直到'\0'为止
  13.     while (str[i]) {
  14.         // 当字符是26个英文字母的大小写一位时,进行替换
  15.         if ((str[i] >= 'a' && str[i] <= 'z')||(str[i] >= 'A' && str[i] <= 'Z'))
  16.         {
  17.             // 字符串在a~w或A~W之间,用其后的三个字母替换该字母
  18.             if ((str[i] >= 'a' && str[i] <= 'w')||(str[i] >= 'A' && str[i] <= 'W'))
  19.             {
  20.                 // 循环替换字母
  21.                 for (int k = 1; k < 4; k++)
  22.                 {
  23.                     s[j] = str[i] + k;
  24.                     j++;
  25.                 }
  26.             }
  27.             else if (str[i] == 'x'|str[i] =='X')    //当末尾字母为x或X时,以相同字母替换最后一位
  28.             {
  29.                 // 循环替换字母
  30.                 for (int k = 1; k < 3; k++)
  31.                 {
  32.                     s[j] = str[i] + k;
  33.                     j++;
  34.                 }
  35.                 s[j]=str[i]+2;
  36.                 j++;
  37.             }
  38.             else if (str[i] == 'y'|str[i] =='Y')    //当末尾字母为y或Y时,以相同字母替换最后两位
  39.             {
  40.                 // 循环替换字母
  41.                 for (int k = 1; k < 4; k++)
  42.                 {
  43.                     s[j] = str[i] + 1;
  44.                     j++;
  45.                 }
  46.             }
  47.             else    //当字母为z或Z时,以相同字母替换之
  48.             {
  49.                 // 循环替换字母
  50.                 for (int k = 1; k < 4; k++)
  51.                 {
  52.                     s[j] = str[i];
  53.                     j++;
  54.                 }
  55.             }
  56.         }
  57.         else // 非英文字母直接略过
  58.         {
  59.             s[j]=str[i];
  60.             j++;
  61.         }
  62.         i++;
  63.     }
  64.     printf("加密后的字符串:%s\n",s);
  65.    
  66.     return 0;
  67. }
复制代码

为什么输出结果有system.lib?
作者: 兰闻天    时间: 2014-4-28 11:38
本帖最后由 兰闻天 于 2014-4-28 11:41 编辑

#include <stdio.h>
#include <string.h>

int main(int argc, const char * argv[])
{
   
    char str[1024]={},s[1024]={}; //定义字符串str以输入,字符串s以输出,这里需要把初始化一下,要不里面的东西都是未定义的,不知道那个字节里有什么;
   
printf("请输入需要加密的字符串:\n");
    scanf("%s",str);
   
    // 字符串的初始下标
    int i = 0, j = 0;
    // 循环遍历字符串中的所有字符,直到'\0'为止
    while (str) {
        // 当字符是26个英文字母的大小写一位时,进行替换
        if ((str >= 'a' && str <= 'z')||(str >= 'A' && str <= 'Z'))
        {
            // 字符串在a~w或A~W之间,用其后的三个字母替换该字母
            if ((str >= 'a' && str <= 'w')||(str >= 'A' && str <= 'W'))
            {
                // 循环替换字母
                for (int k = 1; k < 4; k++)
                {
                    s[j] = str[ i ]  + k;
                    j++;
                }
            }
            else if (str == 'x'|str =='X')    //当末尾字母为x或X时,以相同字母替换最后一位
            {
                // 循环替换字母
                for (int k = 1; k < 3; k++)
                {
                    s[j] = str[ i ]  + k;
                    j++;
                }
                s[j]=str[ i ] +2;
                j++;
            }
            else if (str == 'y'|str =='Y')    //当末尾字母为y或Y时,以相同字母替换最后两位
            {
                // 循环替换字母
                for (int k = 1; k < 4; k++)
                {
                    s[j] = str[ i ]  + 1;
                    j++;
                }
            }
            else    //当字母为z或Z时,以相同字母替换之
            {
                // 循环替换字母
                for (int k = 1; k < 4; k++)
                {
                    s[j] = str[ i ] ;
                    j++;
                }
            }
        }
        else // 非英文字母直接略过
        {
            s[j]=str[ i ] ;
            j++;
        }
        i++;
    }
    printf("加密后的字符串:%s\n",s);
   
    return 0;
}
作者: 胡铭    时间: 2014-4-28 11:53
本帖最后由 胡铭 于 2014-4-28 11:54 编辑

楼上说的对- -




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