要求:用户输入一行明文(字符串),针对字母进行加密(偏移量设置为 3),非字母部分保留原型。
#include <stdio.h>
int main()
{
int ch;
printf("请输入明文:");
while ((ch = getchar()) != '\n')
{
if (ch >= 'a' && ch <= 'z')
{
putchar('a' + (ch - 'a' + 3) % 26);
continue;
}
if (ch >= 'A' && ch <= 'Z')
{
putchar('A' + (ch - 'A' + 3) % 26);
continue;
}
putchar(ch);
}
putchar('\n');
return 0;
}
注:‘a’ + (ch - ‘a’ + 3) % 26中先通过(ch-‘a’+3)%26得出ch在26个字母表中偏移3后的相对位置,即a为3,以此类推。再加上没有偏移时的首字母’a’便能得到如今偏移后的字母。