本帖最后由 兰闻天 于 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;
} |