A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© GO_monster 中级黑马   /  2015-3-25 12:58  /  1632 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在论坛里看到有人发关于面试题的帖子,先研究了一下,做了个半成品,
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.问题是每次输入后面都有乱码,求解决!!!

8 个回复

倒序浏览
本帖最后由 理工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. }
复制代码


回复 使用道具 举报

不错,考虑到x/y/z的情况啦
回复 使用道具 举报
tzp123 来自手机 中级黑马 2015-3-25 22:11:21
板凳
你们学的真好
回复 使用道具 举报
学习了,感觉简单题也要认真对待啊
回复 使用道具 举报
我看了你的实现,并没有产生一个新的数据出来,仅仅是打印替换,还可以做的更完美一些
回复 使用道具 举报
#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;
}
回复 使用道具 举报
学习了。。。。不错呀
回复 使用道具 举报
学习了:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马