黑马程序员技术交流社区

标题: 找到一个面试提,一起研究研究 [打印本页]

作者: GO_monster    时间: 2015-3-25 12:58
标题: 找到一个面试提,一起研究研究
在论坛里看到有人发关于面试题的帖子,先研究了一下,做了个半成品,
1.先看题目:编程实现对键盘输入的英文名句子进行加密。用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变。比如245a95n加密后是245bcd95opq。
2.下面是我的半成品:
#include <stdio.h>
#include <string.h>
void main()
{
        char str1[50];
        gets(str1);
        for(int i=0;i<=sizeof(str1);i++)
        {
               
                if(str1[i]>='a' && str1[i]<='z') //找到字母,替换,并输出接下来的两个
                {                                                                //如str[1]='a';
                        str1[i]=str1[i]+1;
                        printf("%c",str1[i]);
                        printf("%c",str1[i]+1);
                        printf("%c",str1[i]+2);
                        continue;
                }
                printf("%c",str1[i]);
        }       
}


3.问题是每次输入后面都有乱码,求解决!!!
作者: 理工007    时间: 2015-3-25 19:45
本帖最后由 理工007 于 2015-3-25 19:46 编辑
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     printf("请输入需要加密的字符串:");
  5.    
  6.     char ch;    //定义一个字符变量接收用户输入
  7.    
  8.     while ((ch = getchar()) != '\n')   //当输入字符不是回车的时候,就进行加密
  9.     {
  10.         //对a-w或者A-W的字符进行输出结果为后三位字母的加密方法
  11.         if ((ch >= 'a' && ch <= 'w') ||(ch >= 'A' && ch <= 'W'))
  12.         {
  13.             printf("%c%c%c",ch +1,ch +2,ch +3);
  14.             
  15.         }
  16.         //对a-w或者A-W的字符进行输出结果为后三位字母的加密方法
  17.         else if((ch >= 'x' && ch <= 'z') || (ch >= 'X' && ch <= 'Z'))
  18.         {
  19.           char xyz[] = "xyzabcAYZABC";
  20.             
  21.             for (int i = 0; i<sizeof(xyz)/sizeof(char); i++)
  22.             {
  23.                 if (ch == xyz[i])
  24.                 {
  25.                     printf("%c%c%c",xyz[i+1],xyz[i+2],xyz[i+3]);
  26.                 }

  27.             }
  28.         }
  29.         //对其他字符时不变
  30.         else
  31.             printf("%c",ch);
  32.     }
  33.    
  34.         return 0 ;
  35. }
复制代码



作者: Errors    时间: 2015-3-25 22:00
理工007 发表于 2015-3-25 19:45

不错,考虑到x/y/z的情况啦
作者: tzp123    时间: 2015-3-25 22:11
你们学的真好
作者: oucding    时间: 2015-3-25 23:07
学习了,感觉简单题也要认真对待啊
作者: hellooc    时间: 2015-3-26 00:00
我看了你的实现,并没有产生一个新的数据出来,仅仅是打印替换,还可以做的更完美一些
作者: fjzxx123    时间: 2015-3-26 00:05
#include<stdio.h>
#include<string.h>

void print(char ch){
    if(ch<='9'&&ch>='0')
        putchar(ch);
    else if(ch>='x'){
        putchar(ch-23);
        putchar(ch-22);
        putchar(ch-21);
    }
    else{
        putchar(ch+1);
        putchar(ch+2);
        putchar(ch+3);
    }
}

int main()
{
    char str[10000];
    int i,len;
    gets(str);
    len=strlen(str);
    for(i=0;i<len;i++)
        print(str[i]);
    return 0;
}

作者: richardchan    时间: 2015-3-26 01:04
学习了。。。。不错呀
作者: 龙瑞麟    时间: 2015-3-26 01:10
学习了:)




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