7-67 凯撒密码 - C/C++ 数组及字符串
题目描述
(凯撒密码)是一个简单的替换加密技术,
它简单地将明文字符串中的全部字母在字母表上偏移n项。
当n大于0时,表示向后偏移,小于0则表示向前偏移。
当n为2时,字母A变C,c变e,y变a, Z变B;
当n为-2时,字母A变Y,c变a,y变w,Z变X。
功能需求
请编写程序,依次读入明文字符串及整数偏移量n,
然后输出加密后的密文字符串。
提示:C语言可用gets()函数,
C++语言可用getline()函数读入整行字符串。
输入样例:
No One Can Stop Us
2
输出样例:
Encrypted message:Pq Qpg Ecp Uvqr Wu
代码内容
#include<stdio.h>
#include<string.h>
int main()
{
int m,i,k;
char x[100];
gets(x);
m=strlen(x);
scanf("%d",&k);
for(int i =0; i<m ; i++)
{
if(x[i]>='a'&&x[i]<='z')
{
x[i] = (x[i] - 'a' + k)%26 + 'a';
if(x[i]<'a')
x[i] = x[i] + 26;
else if(x[i] > 'z')
x[i] = x[i] - 26;
}
if(x[i]>='A'&&x[i]<='Z')
{
x[i] = (x[i] - 'A' + k)%26 + 'A';
if(x[i]<'A')
x[i] = x[i] + 26;
else if(x[i] > 'Z')
x[i] = x[i] - 26;
}
}
printf("Encrypted message:");
printf("%s",x);
return 0;
}