黑马程序员技术交流社区
标题:
找到一个面试提,一起研究研究
[打印本页]
作者:
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 编辑
#include<stdio.h>
int main()
{
printf("请输入需要加密的字符串:");
char ch; //定义一个字符变量接收用户输入
while ((ch = getchar()) != '\n') //当输入字符不是回车的时候,就进行加密
{
//对a-w或者A-W的字符进行输出结果为后三位字母的加密方法
if ((ch >= 'a' && ch <= 'w') ||(ch >= 'A' && ch <= 'W'))
{
printf("%c%c%c",ch +1,ch +2,ch +3);
}
//对a-w或者A-W的字符进行输出结果为后三位字母的加密方法
else if((ch >= 'x' && ch <= 'z') || (ch >= 'X' && ch <= 'Z'))
{
char xyz[] = "xyzabcAYZABC";
for (int i = 0; i<sizeof(xyz)/sizeof(char); i++)
{
if (ch == xyz[i])
{
printf("%c%c%c",xyz[i+1],xyz[i+2],xyz[i+3]);
}
}
}
//对其他字符时不变
else
printf("%c",ch);
}
return 0 ;
}
复制代码
作者:
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