字符串14:凯撒加密(升级版)
输入一个字符串str,并对字符串进行加密。加密规则:大写字母和小写字母后移5位(a,b,c......x,y,z加密为f,g,h......c,d,e; 对A,B,C......X,Y,Z加密为F,G,H......C,D,E),其他字符不变。字符串长度小于40。
输入格式:
输入一行字符串str
输出格式:
输出加密后的字符串并换行
输入样例:
Windows XP 2001~
输出样例:
Bnsitbx CU 2001~
#include<stdio.h>
int main()
{
char str[41];
int i;
gets (str);
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='a'&&str[i]<='z')
str[i]=(str[i]-'a'+5)%26+'a';
if(str[i]>='A'&&str[i]<='Z')
str[i]=(str[i]-'A'+5)%26+'A';}
printf("%s\n",str);
return 0;
}
字符串15:恺撒算法解密
凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照偏移量N进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。现在,给你一个字符串str(经过凯撒加密后的字符串),并且告诉你偏移量为n。请你把加密的字符串解密并输出。
输入格式:
输入共一行,包括加密后的字符串str(字符串中只含有大小写字母,且串长不超过30)和偏移量 n(注意:str和n之间空格隔开)
输出格式:
解密后的字符串。
输入样例:
Kcocuvwfgpv 2
输出样例:
Iamastudent
(注意第一个字母为大写的i)
#include <stdio.h>
#include <string.h>
int main()
{
char str[31];
int n,i;
scanf("%s %d",str,&n);
//int len=strlen(str);//取字符串长度
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='A'&&str[i]<='Z')
str[i]=(str[i]-'A'+26-n%26)%26+'A';
else if(str[i]>='a'&&str[i]<='z')
str[i]=(str[i]-'a'+26-n%26)%26+'a';
}
printf("%s\n", str);
return 0;
}