将26个英文字母按顺时针方向排成一个圆环。密钥是一个整数。
具体加密方法如下:
- 若密钥 key≥0,则从明文字母开始按顺时针方向走 ∣key∣ 步得到密文字母;
- 若密钥 key<0,则从明文字母开始按逆时针方向走 ∣key∣ 步得到密文字母。
请编写函数,完成加密功能。
函数原型
char Encode(char plain, int key);
说明:参数 plain 为明文字符,key 为密钥,函数值为密文字符。
裁判程序
#include <stdio.h>
#include <stdlib.h>
char Encode(char plain, int key);
int main()
{ char x, y; int k;
scanf("%c%d", &x, &k);
y = Encode(x, k);
printf("%c\n", y);
return 0; }
/* 你提交的代码将被嵌在这里 */
输入格式
明文(小写字母) 密钥(任意整数)
输出格式
密文(小写字母)
输入样例1
a 5
输出样例1
f
输入样例2
b -3
输出样例2
y
我的代码
char Encode(char x,int k)
{ char ans;
if(k>=0)//顺时针
{
if(k%26+x-'a'+1>26)
ans=(char)((int)x-26+k%26);//转了超过一圈的情况
else
ans=(char)((int)x+k%26);//未走完一圈
}
if(k<0)//逆时针
{
if(-k%26<=(x-'a'))
ans=(char)(x+k%26);//未走完一圈
else
ans=(char)(x+k%26+26);//超过一圈
}
return ans;
}
刚刚入门,还停留在一点一点分类讨论的阶段,大佬们有什么指导和建议吗
鄙人感激不尽