一个简单的C语言:密码转换

来源:百度知道 编辑:UC知道 时间:2024/06/04 17:08:12
古典密码学-变换
题目:编写函数char mycrypt(char ch, int key),函数实现的功能如下:
(对英文字母进行如下替换,其他字符不变)
1) key >= 0 ,则将英文字母ch往后移key个位置,即加密
比如key=2,若ch='a',则mycrypt(ch, key)返回'c',若ch='z',则返回'b'。

2) key < 0 ,则将英文字母ch往前移-key个位置,即解密
比如key= -2,若ch='a',则mycrypt(ch, key)返回'y',若ch='z',则返回'x'。
利用mycrypt()函数可以对输入的一串字符进行加/解密,如下:
#include <stdio.h>
main()
{
int key;
char ch;
scanf("%d",&key);
getchar();
while( (ch=getchar()) != '\n' )
{
printf("%c", mycrypt(ch,key) );
}
printf("\n");
}

(1) 输入
25
abcd
(2) 输出
zabc

(1) 输入
-25
XSRMZ
(2) 输出
YTSNA

char mycrypt ( char ch, int key )
{
if ( ch <= 'Z' && ch >= 'A' )
{
ch -= 'A';
ch += 26 + key;
ch = ch % 26;
ch += 'A';
}
else if ( ch <= 'z' && ch >= 'a' )
{
ch -= 'a';
ch += 26 + key;
ch = ch % 26;
ch += 'a';
}
return ch;
}

{
if(ch >= 'a' && ch <= 'z')
{
char cr = ch + key % 26;
if(cr > 'z')
{
return cr - 26;
}
if(cr < 'a')
{
return cr + 26;
}
}
if(ch >= 'A' && ch <= 'Z')
{
char cr = ch + key % 26;
if(cr > 'Z')
{
return cr - 26;
}
if(cr < 'A')
{
return cr + 26;
}
}
}