利用一维字符数组实现一段英文的加密,如“I love you so much. Would you marry me?”。加密原则为:将英文字符向后循环滚动8位,如‘a’转变为‘i’、‘q’转变为‘y’,‘Z’转变为‘H’,空格和标点符号等字符保持不变。打印输出加密后的密文。
参考如下:
#include <stdio.h>
int main()
{
char str[100];
gets(str);
int i;
for(i = 0; str[i] != '\0'; i++)
{
if ((str[i] >= 'a' && str[i] <= 'z' - 8) || (str[i] >= 'A' && str[i] <= 'Z' - 8))
{
str[i] += 8;
}
else if ((str[i] > 'z' - 8 ) && str[i] <= 'z')
{
str[i] = 'a' + str[i] - 'z' + 7;
}
else if ((str[i] > 'Z' - 8 ) && str[i] <= 'Z')
{
str[i] = 'A' + str[i] - 'Z' + 7;
}
}
printf("%s", str);
return 0;
}
我可以
这个很简单啊!首先判断元素是否为英文字母,含大小写,通过ascii码,直接把数组的元素取出来+8给到新的数组就可以了啊!
供参考:
#include <stdio.h>
int main()
{
char str[81];
int offset = 8, i;
gets(str);
for (i = 0; str[i]; i++)
{
if (str[i] >= 'A' && str[i] <= 'Z')
str[i] = (str[i] - 'A' + offset) % 26 + 'A';
else if (str[i] >= 'a' && str[i] <= 'z')
str[i] = (str[i] - 'a' + offset) % 26 + 'a';
}
printf("%s", str);;
return 0;
}