原题
7-5 凯撒密码 (20 分)
为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。
输入格式:
输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个整数offset。
输出格式:
输出加密后的结果字符串。
代码
#include<stdio.h>
int main()
{
char a[81];
int i,m,flag=0,n;
scanf("%c",&a[0]);
for(i=1;a[i-1]!='\n';i++)
{
scanf("%c",&a[i]);
}
scanf("%d",m);
n=i-1;
if(m<0)
{
flag=1;
}
m=m%26;
for(i=0;i<n;i++)
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
a[i]=a[i]+m;
if((a[i]<'a'||a[i]>'z')&&(a[i]<'A'||a[i]>'Z'))
flag==1?a[i]=a[i]+26:a[i]=a[i]-26;
}
for(i=0;i<n;i++)
{
printf("%c",a[i]);
}
return 0;
}
运行结果及报错内容
运行无输出,PTA出现段错误