我们知道凯撒加密算法是将需要加密的明文的每个单元字符改为某几位之后的字符。
如加密五位:
原文:abcdef 密文:ghijk
算法原理:
加密:q=p+n(mod 26)
解密:p=q-n(mod 26)
代码(无指针):
#include <stdio.h>
#include <string.h>
void test();
int main() {//主函数
int s=1;
while(s){
int q,w=0;
printf("请选择加密/解密/退出(1/2/0)");
scanf("%d",&q);//选择
getchar();
if(q==1){
test(w);
}
else if(q==2){
w=1;
test(w);
}
else if(q==0){
s=0;
}
else{
printf("输入错误请重新输入");
}
}
return 0;
}
void test(int w){
char wordline[100];
int i,k;
if(w==1){
printf("请输入密文:");
}
else{
printf("请输入明文:");
}
gets(wordline);
printf("输入k值(1-25):");
scanf("%d%*c",&k);//需要改为第几个之后的字符
if(w==1){
k=26-k;
}
for(i=0; i<strlen(wordline); i++)
{
if(wordline[i] >= 'A' && wordline[i] <= 'Z')
{
wordline[i] = ((wordline[i]-'A')+k)%26+'A';
}
else if(wordline[i] >= 'a' && wordline[i] <= 'z')
{
wordline[i] = ((wordline[i]-'a')+k)%26+'a';
}
}
if(w==1){
printf("解密后明文:%s",wordline);
}
else{
printf("加密后密文:%s",wordline);
}
printf("\n");
}
注:写代码时算法参考于凯撒加密算法_是Rong啊~的博客-优快云博客_凯撒加密算法
结果(截图):