(1)加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;例如通过将字母按顺序推后n位起到加密作用,如果n=3,则将字母A换作字母D,将字母B换作字母E。X变成A,Y变成B,Z变成C,x变成a,y变成b,z变成c。
(2)解密:输入密文后再输入移位位数则可输出明文
假如有这样一条指令: Can you come here
用替代密码加密后就成为: Fdq brx Frph khuh(来个详细解答)
#include <stdio.h>
#include <ctype.h>
void jiami(char *s,int n)
{for(;*s;s++)
if(isalpha(*s))
*s=*s%32+n>25?*s+n-26:*s+n;
}
void jiemi(char *s,int n)
{for(;*s;s++)
if(isalpha(*s))
*s=*s%32-n<1?*s+26-n:*s-n;
}
int main()
{ char s[200];
int n;
gets(s);
scanf("%d",&n);
jiami(s,n);
puts(s);
jiemi(s,n);
puts(s);
return 0;
}
#include <ctype.h>
void jiami(char *s,int n)
{for(;*s;s++)
if(isalpha(*s))
*s=*s%32+n>25?*s+n-26:*s+n;
}
void jiemi(char *s,int n)
{for(;*s;s++)
if(isalpha(*s))
*s=*s%32-n<1?*s+26-n:*s-n;
}
int main()
{ char s[200];
int n;
gets(s);
scanf("%d",&n);
jiami(s,n);
puts(s);
jiemi(s,n);
puts(s);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2019-01-04
#include<stdio.h>
#include<stdlib.h>
void Encrypt(char *p, int offset)
{
char *q = p + strlen(p);
offset %= 26;
while(p != q){
if(*p >= 'A' && *p <= 'Z'){
*p += offset;
if (*p > 'Z')
*p -= 26;
}else if(*p >= 'a' && *p <= 'z'){
*p += offset;
if(*p > 'z')
*p -= 26;
}
p++;
}
}
void Decrypt(char *p, int offset)
{
char *q = p + strlen(p);
offset %= 26;
while(p != q){
if(*p >= 'A' && *p <= 'Z'){
*p -= offset;
if (*p < 'A')
*p += 26;
}else if(*p >= 'a' && *p <= 'z'){
*p -= offset;
if(*p < 'a')
*p += 26;
}
p++;
}
}
int main()
{
char s[] = "Can you come here";
printf("%s\n", s);
Encrypt(s, 3);
printf("%s\n", s);
Decrypt(s, 3);
printf("%s\n", s);
system("pause");
return 0;
}
#include<stdlib.h>
void Encrypt(char *p, int offset)
{
char *q = p + strlen(p);
offset %= 26;
while(p != q){
if(*p >= 'A' && *p <= 'Z'){
*p += offset;
if (*p > 'Z')
*p -= 26;
}else if(*p >= 'a' && *p <= 'z'){
*p += offset;
if(*p > 'z')
*p -= 26;
}
p++;
}
}
void Decrypt(char *p, int offset)
{
char *q = p + strlen(p);
offset %= 26;
while(p != q){
if(*p >= 'A' && *p <= 'Z'){
*p -= offset;
if (*p < 'A')
*p += 26;
}else if(*p >= 'a' && *p <= 'z'){
*p -= offset;
if(*p < 'a')
*p += 26;
}
p++;
}
}
int main()
{
char s[] = "Can you come here";
printf("%s\n", s);
Encrypt(s, 3);
printf("%s\n", s);
Decrypt(s, 3);
printf("%s\n", s);
system("pause");
return 0;
}