作者 颜晖
单位 浙大城市学院
为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。
输入格式:
输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个整数offset。
输出格式:
输出加密后的结果字符串。
输入样例1:
Hello Hangzhou
2
输出样例1:
Jgnnq Jcpibjqw
输入样例2:
a=x+y
-1
输出样例2:
z=w+x
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
char xj[80];
int sl[80];
int x,i;
for(i=0;i<80;i++)
{
scanf("%c",&xj[i]);
if(xj[i]==10)
break;
}
scanf("%d",&x);
x%=26;
for(i=0;i<80;i++)
{
sl[i]=x+xj[i];
}
for(i=0;i<80;i++)
{
if(xj[i]>64&&xj[i]<91||xj[i]>96&&xj[i]<123)
{
if((sl[i]>64&&sl[i]<91)&&(xj[i]>64&&xj[i]<91))
printf("%c",(char)sl[i]);
else if((sl[i]>96&&sl[i]<123)&&(xj[i]>96&&xj[i]<123))
printf("%c",(char)sl[i]);
else if((xj[i]>96&&xj[i]<123)&&(sl[i]<=96))
printf("%c",(char)(sl[i]+26));
else if((xj[i]>96&&xj[i]<123)&&(sl[i]>=123))
printf("%c",(char)(sl[i]-26));
else if((xj[i]>64&&xj[i]<91)&&(sl[i]<=64))
printf("%c",(char)(sl[i]+26));
else if((xj[i]>64&&xj[i]<91)&&(sl[i]>=91))
printf("%c",(char)(sl[i]-26));
}
else if(xj[i]!=127)//题干限制输入条件
printf("%c",xj[i]);
}
}
结果展示: