6-7 字母环形解密(函数)
将26个英文字母按顺时针方向排成一个圆环。密钥是一个整数。
具体加密方法如下:
若密钥 key≥0,则从明文字母开始按顺时针方向走 ∣key∣ 步得到密文字母;
若密钥 key<0,则从明文字母开始按逆时针方向走 ∣key∣ 步得到密文字母。
请编写函数,完成解密功能。
函数原型
char Decode(char secret, int key);
说明:参数 secret 为密文字符,key 为密钥(即步数),函数值为明文字符。
裁判程序
#include <stdio.h>
#include <stdlib.h>
char Decode(char secret, int key);
int main()
{
char x, y;
int k;
scanf("%c%d", &x, &k);
y = Decode(x, k);
printf("%c\n", y);
return 0;
}
/* 你提交的代码将被嵌在这里 */
输入格式
密文(小写字母) 密钥(任意整数)
输出格式
明文(小写字母)
输入样例1
f 5
输出样例1
a
输入样例2
y -3
输出样例2
b
C语言解析
char Decode(char secret, int key)
{
int f = key > 0 ? 1 : 0;//标记key大于0
if (key < 0)key = -key;
key = key % 26;
if (key == 0)return secret;
if (f)secret = secret - key;
else secret = secret + key;
if (secret > 'z')secret -= 26;
else if (secret < 'a')secret += 26;
return secret;
}