(1)编写函数,实现对字符串进行简单加密。
void code(char *data, int n)
对data的字符串进行加密,data中的非字母字符不作修改。加密方式与用户给定的加密码n有关,即字符串中的字母往前移动n位变成密文。
例如 n=2,则Z->X, z->x, Y->W, y->w, … ,C->A, c->a,
特例是B->Z, b->, A->Y, a->y。
(2)编写函数
void decode(char *data, int n)
它接受一个加过密的字符串作为参数,任务是重现原来的信息,用于解密。
实现效果(举例):
请输入字符串: I Am a Cat.
请输入加密码:2
加密后的字符串:G Yk y Ayr.
解密后的字符串:I Am a Cat.
#include<stdio.h>
#include<string.h>
void code(char *s,int n){//加密函数
char ch;
int len=strlen(s);//获得字符串长度
for(int i=0;i<len;i++){
if(s[i]<='z'&&s[i]>='a'){//情况一:小写字母
if(s[i]-n<'a'){
s[i]=s[i]-n+26;
}else{
s[i]=s[i]-n;
}
}else if(s[i]<='Z'&&s[i]>='A'){//情况二:大写字母
if(s[i]-n<'A'){
s[i]=s[i]-n+26;
}else{
s[i]=s[i]-n;
}
}
else{//情况三:其他字符
s[i]=s[i];
}
}
}
void decode(char *s,int n){//解码函数
char ch;
int len=strlen(s);//获得字符串长度
for(int i=0;i<len;i++){
if(s[i]<='z'&&s[i]>='a'){//情况一:小写字母
if(s[i]+n>'z'){
s[i]=s[i]+n-26;
}else{
s[i]=s[i]+n;
}
}else if(s[i]<='Z'&&s[i]>='A'){//情况二:大写字母
if(s[i]+n>'Z'){
s[i]=s[i]+n-26;
}else{
s[i]=s[i]+n;
}
}
else{//情况三:其他字符
s[i]=s[i];
}
}
}
int main(){
char a[20];
printf("请输入字符串:\n");
gets(a);//输入字符串到数组,输入结束标志为换行符
int n;
printf("请输入加密码:\n");
scanf("%d",&n);
code(a,n);
printf("加密后的字符串:\n");
puts(a);//输出字符串
printf("解密后的字符串:\n");
decode(a,n);
puts(a);
return 0;
}
运行结果: