#define N 100
#include<stdio.h>
#include<string.h>
void encode(char str[N],int n)
{
char ch;
int i;
for(i=0;i<strlen(str);i++)
{
ch=str[i]; //原来的字符
str[i]+=n; //每个字符串位移后的字符
if((ch>='a'&&ch<='z'&&str[i]>'z')//小写字母
||(ch>='A'&&ch<='Z'&str[i]>'Z'))//大写字母
str[i]-=26; //将字符转换成字母范围内
}
}
void decode(char str[N],int n)
{
char ch;
int i;
for(i=0;i<strlen(str);i++)
{
ch=str[i]; //原来的字符
str[i]-=n; //每个字符串位移后的字符
if((ch>='a'&&ch<='z'&&str[i]<'a')//小写字母
||(ch>='A'&&ch<='Z'&str[i]<'A'))//大写字母
str[i]+=26; //将字符转换成字母范围内
}
}
int main()
{
char str[N]; //字符串的原文
int n; //密钥
printf("请输入一个明文字符串:");
gets(str); //输入一个字符串
printf("请输入要位移的数字密钥:");
scanf("%d",&n);
encode(str,n); //使用密钥对明文进行加密操作
printf("加密后的原文:%s\n",str);
decode(str,n);
printf("解密后的原文:%s\n",str);
return 0;
}
是要多位的密钥吗
#define N 100
#include<stdio.h>
#include<string.h>
void encode(char str[N],int n)
{
char ch;
int i;
for(i=0; i<strlen(str); i++)
{
ch=str[i]; //原来的字符
str[i]+=n; //每个字符串位移后的字符
/* if((ch>='a'&&ch<='z'&&str[i]>'z')//小写字母
||(ch>='A'&&ch<='Z'&str[i]>'Z'))//大写字母
str[i]-=26;*/ //将字符转换成字母范围内
}
}
void decode(char str[N],int n)
{
char ch;
int i;
for(i=0; i<strlen(str); i++)
{
ch=str[i]; //原来的字符
str[i]-=n; //每个字符串位移后的字符
/* if((ch>='a'&&ch<='z'&&str[i]<'a')//小写字母
||(ch>='A'&&ch<='Z'&str[i]<'A'))//大写字母
str[i]+=26;*/ //将字符转换成字母范围内
}
}
int main()
{
char str[N]; //字符串的原文
int n=9; //密钥
printf("请输入一个明文字符串:");
gets(str); //输入一个字符串
//printf("请输入要位移的数字密钥:");
//scanf("%d",&n);
encode(str,n); //使用密钥对明文进行加密操作
printf("加密后的原文:%s\n",str);
decode(str,n);
printf("解密后的原文:%s\n",str);
return 0;
}