黑马程序员技术交流社区

标题: 加密英文的题目想破脑子了 [打印本页]

作者: 赵安庆    时间: 2016-5-10 00:19
标题: 加密英文的题目想破脑子了
//
//  main.c
//  HM笔试总结(二)
//
//  Created by YYSky on 16/5/5.
//  Copyright © 2016年 yaomars. All rights reserved.
//

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

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

int main(){
   
    printf("请输入一个字符串:");
    char ch[100];
    gets(ch);
   
    //定义一个新字符数组来接受加密后的字符串
    char newCh[300];
    //定义newCh的索引值
    int j = 0;
   
    //依次取出ch数组中的字符,然后作判断,并赋值给newCh
    for (int i=0; ch!= '\0'; i++) {
        
        if ((ch >= 'a' && ch <= 'w') || ((ch >= 'A' && ch <= 'W'))) {
            newCh[j] = ch + 1;
            newCh[j+1] = ch + 2;
            newCh[j+2] = ch + 3;
            j += 3;
            
        } else if(ch == 'x' || ch == 'X'){
            newCh[j] = ch + 1;
            newCh[j+1] = ch + 2;
            newCh[j+2] = ch - 23;
            j += 3;
            
        } else if(ch == 'y' || ch == 'Y'){
            newCh[j] = ch + 1;
            newCh[j+1] = ch - 24;
            newCh[j+2] = ch - 23;
            j += 3;
            
        } else if(ch == 'z' || ch == 'Z'){
            newCh[j] = ch - 25;
            newCh[j+1] = ch - 24;
            newCh[j+2] = ch - 23;
            j += 3;
            
        } else {
            newCh[j] = ch;
            j ++;
            
        }
        
    }
    printf("newCh = %s\n",newCh);
    return 0;
}


作者: 赵安庆    时间: 2016-5-10 00:20
66666666666666666666
作者: 妖精的尾巴_wzn    时间: 2016-5-10 00:28
强人一个,继续加油。
作者: 寂静夜凄凉    时间: 2016-5-12 22:36
继续努力加油。。
作者: 烛风小糊涂    时间: 2016-5-12 23:00
本帖最后由 烛风小糊涂 于 2016-5-12 23:02 编辑

比楼主的短一点,(*^__^*) 嘻嘻……话说你那几个if else判断条件可以放到一起啊

  1. #import <Foundation/Foundation.h>

  2. int main(int argc, const char * argv[]) {
  3.     @autoreleasepool {
  4.         
  5.         char str[100];
  6.         char secureStr[100];                  //用来储存加密后的字符串
  7.         printf("please enter a string:");
  8.         gets(str);                            //输入字符串
  9.         
  10.         for (int i=0,j=0; i<strlen(str); i++,j++) {
  11.             if ((str[i] >= 'a' && str[i]<='z') || (str[i]>='A'&& str[i]<='Z'))
  12.             {
  13.                 secureStr[j] = str[i]+1;      //把满足判断条件的字符按照要求加密
  14.                 secureStr[j+1] = secureStr[j]+1;
  15.                 secureStr[j+2] = secureStr[j+1]+1;
  16.                 j = j + 2;                    //下标移位
  17.             }
  18.             else secureStr[j] = str[i];
  19.         }
  20.         printf("%s",secureStr);
  21.     }
  22.     return 0;
  23. }
复制代码






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