黑马程序员技术交流社区

标题: 基础测试题自我分析(一) [打印本页]

作者: Morning_jcg    时间: 2015-11-4 22:43
标题: 基础测试题自我分析(一)
/*********************************************************************************

以下为本人的基础测试题,所表答案为我的答案,分析也是自己的理解,如有不对,还望指正。

**********************************************************************************/
编程题1:
编程实现对键盘输入的英文名句子进行加密。用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变。比如245a95n加密后是245bcd95opq。
我的实现:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define MAX 100

  4. int main(){
  5.         char a[MAX];
  6.         int i,len;
  7.         scanf("%s", a);
  8.         len=strlen(a);
  9.         for (i = 0; i < len; i++){
  10.                 if ((a[i] <= 'Z' && a[i] >= 'A') || (a[i] <= 'z' && a[i] >= 'a')){
  11.                         printf("%c%c%c", a[i] + 1, a[i] + 2, a[i] + 3);
  12.                 }
  13.                 else{
  14.                         printf("%c", a[i]);
  15.                 }
  16.         }

  17.         printf("\n");
  18.         return 0;
  19. }
复制代码
此题我比较偷懒,默认了输入的字符串中没有空格和回车,严格应该用gets获得所有的字符,然后保存在个字符数组里。实现更简单,直接通过一个循环,扫描每个字符,为字母就输出ascII表后三位的数值,由于我懒,所以我是一边扫一边输出,感觉存到一个新的数组一次性输出更好。还是由于我懒,我没有做xyz的边界检测,也就是说当输入的字符串中出现'x','y','z',的时候我这段码的输出的就会混进一些奇怪的字符。大家可能会说这是很严重的错误,你怎么能因为懒就不做呢?事实是我忘了,因为感觉题目太简单,所以写完也没测试(因为是记事本写的),提交上去的就是这个版本,真实地展现在了大家面前,而这个问题,我也是现在刚刚才发现的。看官们请轻喷。有什么问题欢迎大家一起讨论。





作者: liruixue    时间: 2015-11-5 09:27
你这个测试成功了吗?你确实是输出a后面的字符,但是并没有改变数组的内容
作者: 许本亮    时间: 2015-11-5 10:03
怎么感觉不太对啊,除了边界问题,加密后插入字符后面的应该顺延吧,或者分割后拼接应该能实现这题目,最后需要输出整个字符串吧
作者: Morning_jcg    时间: 2015-11-5 12:40
liruixue 发表于 2015-11-5 09:27
你这个测试成功了吗?你确实是输出a后面的字符,但是并没有改变数组的内容 ...

我并没有保存加密后的内容,只是直接输出了而已。原因如文中所见,懒。。
作者: Morning_jcg    时间: 2015-11-5 12:42
许本亮 发表于 2015-11-5 10:03
怎么感觉不太对啊,除了边界问题,加密后插入字符后面的应该顺延吧,或者分割后拼接应该能实现这题目,最后 ...

我说了啊,,我没有保存加密后的字符串,以为一边加密我就一边输出了,,比较好的是再建一个字符串,加密后的字符串存进去,也不用顺延什么的了,,为什么没这么做,还是同文中所说,我懒,,,
作者: toveyloves    时间: 2015-11-5 13:05
这是什么班学习的知识?
作者: Morning_jcg    时间: 2015-11-5 13:31
toveyloves 发表于 2015-11-5 13:05
这是什么班学习的知识?

ios,,,吧。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2