A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

皮特尔

中级黑马

  • 黑马币:8

  • 帖子:22

  • 精华:0

© 皮特尔 中级黑马   /  2015-3-8 18:18  /  781 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. //定义函数encodeLower,传入小写字母c和位数n,返回c在26个小写字母内偏移n位后的结果
  2. char encodeLower(char c, int n)
  3. {
  4.         if (c - 'a' + (n%26) < 26)
  5.         {
  6.                 return c + (n%26);
  7.         }
  8.         return c - 26 + (n%26);
  9. }
  10. //定义函数encodeUpper,传入大写字母c和位数n,返回c在26个大写字母内偏移n位后的结果
  11. char encodeUpper(char c, int n)
  12. {
  13.         if (c - 'A' + (n%26) < 26)
  14.         {
  15.                 return c + (n%26);
  16.         }
  17.         return c - 26 + (n%26);
  18. }
复制代码
代码如上。实现的功能很简单:传入任意字母,在26个字母内实现任意位数的凯撒加密,返回加密结果。
但是像这样把大写和小写字母分成两个函数,有点繁琐,那么问题来了:对于把这两个函数合并成一个,大家有什么好的想法吗?

4 个回复

倒序浏览
我觉得可以这么写 if ((n<'z'&&n>'a')||(n<'Z'&&n>'A'))
回复 使用道具 举报
byuan04 发表于 2015-3-8 20:18
我觉得可以这么写 if ((n'a')||(n'A'))

这样的话逻辑不严密吧?对'Z'加密的话会超出26个字母的范围的。
回复 使用道具 举报
皮特尔 发表于 2015-3-8 20:34
这样的话逻辑不严密吧?对'Z'加密的话会超出26个字母的范围的。

题目不严谨。。没说最后三位怎么加密 那就加密到‘w’好了

或者你最后三位另外写个单独的if语句,‘z’就加密成‘abc’
回复 使用道具 举报
byuan04 发表于 2015-3-9 16:06
题目不严谨。。没说最后三位怎么加密 那就加密到‘w’好了

或者你最后三位另外写个单独的if语句,‘z’ ...

你看懂我的代码了吗?

我已经实现了'a-z'和'A-Z'移动任意n位后的加密,返回值是一个字符。
如果需要返回后三个,在循环里面调用这个函数就行了。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马