#include<string.h>
void main ()
{
char str[100]
char str1[100]
printf("输入字符串:")
scanf("%s",&str)
int len
len=strlen(str)
for(int i=0i<leni++)
{
str1[i]=(str[i]-97+3)%26+97
}
str1[len]='\0'
printf ("密文为:%s\n",str1)
}
凯撒密码就是简单的加上一个数,'a'+3='d''z'+3='c' 假设原文全是小写字母,那么 char plain[N]={...}//明文 char cipher[N]={}//密文 int key=3int i=0,tempfor(i=0i<Ni++) {if(plain[i]!=' ') {temp=plain[i]+key-'a'temp=temp%26cipher[i]=temp+'a'} else cipher[i]=plain[i]} 这样就完成了加密,密文数组里面就是对原文加密后的密文,key是密钥。#include <stdio.h>#define isletter( c ) ( ((c)>='a'&&(c)<='z') || ((c)>='A'&&(c)<='Z') )
void Enc( const char *str, char *out, int key )
{
int i = 0
while( str[i] )
{
if ( isletter( str[i] ) )
{
out[i] = str[i] + key
if ( ! isletter( out[i]) )
out[i] -= 26
}
else
out[i] = str[i]
i++
}
out[i] = 0
}
void Denc( const char *str, char *out, int key )
{
int i=0
while( str[i] )
{
if ( isletter( str[i] ) )
{
out[i] = str[i] - key
if ( ! isletter( out[i] ) )
out[i] += 26
}
else
out[i] = str[i]
i++
}
out[i] = 0
}
int main()
{
char out[100], out2[100]
Enc( "THE QUICK BROWn fox jumps over THE LAZY DOG", out, 3 )
printf( "%s\n", out )
Denc( out, out2, 3 )
printf( "%s\n", out2 )
}