马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 qq1242009750 于 2018-7-18 00:37 编辑
字母表相对定位
前几天做题,遇到了这么一题:请找出当前字母的第前5个元素。然后就突发其想,写了这篇帖子。
好接下来我们看一张图片:
我们知道字母表的物理存储结构不是一个环,换句话说:当要寻找的字母超出了字母表时就会发生溢出,那我们如何避免这个溢出呢?
哈哈,其实要避免这个溢出很简单,举个栗子吧(2333333):
----------------------------------------------------------前溢出--------------------------------------------------------------
看了分析相信大家都知道了,什么是非溢出偏移量了;其实就是找出当前第N个字母的N。
放波代码: if (ch >= 'A' + 5) //判断字母是否大于或等于第六个字母
{
//此时为非溢出操作
ch -= 5;
}
那什么是溢出偏移量呢? 当发生溢出时,找到正确字母的偏移量。
如图所示:
那我们如何计算溢出偏移量呢?
答:用找到字母在字母表的下标减去输入字母在字母表的下标,就可找出溢出偏移量了。
以上面的例子为例:它的溢出偏移量为24-3=21。
我们可以给出如下代码: //发生溢出
if (ch - 5 < 'A')
{
//加上溢出偏移值
ch += 21;
}
总结: if (ch >= 'A' + 5) //判断字母是否大于或等于第六个字母
{
//此时为非移除操作
ch -= ch - 5;
}
else
{
ch += 21;
}
---------------------------------------------------------------------------后溢出--------------------------------------------------------------------------
就在前两天,又遇到了这么一题:请找出当前字母的第后5个元素。
如图所示:
可以看出前溢出和后溢出的非溢出偏移量是不一样的,代码如下: //判断是否会溢出
if (ch <= 'Z' - 5)
{
ch += 5
}
后溢出的溢出偏移量和前溢出的溢出偏移量有区别,如图:
那我们如何计算溢出偏移量呢?
答:用输入字母在字母表的下标减去找到字母在字母表的下标,就可找出溢出偏移量了。
以上面的例子为例:它的溢出偏移量为21-0=21。
给出的代码如下: //发生了溢出
if (ch > 'Z' - 5)
{
//减去溢出偏移值
ch -= 21;
}
总结: //判断是否会溢出
if (ch <= 'Z' - 5)
{
ch += 5
}
else
{
ch -= 21;
}
|