黑马程序员技术交流社区

标题: 下面的题目有多少种写法呢? [打印本页]

作者: 黄文伯    时间: 2013-5-22 17:10
标题: 下面的题目有多少种写法呢?
本帖最后由 黄文伯 于 2013-5-22 21:12 编辑

需求: 实现字符加密,如:  输入abc 输出efg。
作者: 谢孔营    时间: 2013-5-22 17:14
先说一种:将abc每个字母加4就OK了
作者: ozt6719393    时间: 2013-5-22 17:19
最简单的加密方法,凯撒移位加密法,即将每个需加密字符的ascii码加上一个给定的t值,解密时扣掉这个t即可。当然,你可以将t值设为一个表达式,但是这个表达式必须是个双射的表达式,即可以还原的表达式,所以常数是最简单的符合双射原则的表达式。
下面给出移位加密法的程序:
加密:
const t=10(这里自己设定)
var s:ansistring; i:longint;
begin
  readln(s);
  for i:=1 to length(s) do s[i]:=chr(ord(s[i])+t);
  writeln(s);
end.
解密:
const t=10(一定要和加密的t值一样)
var s:ansistring; i:longint
begin
  readln(s);
  for i:=1 to length(s) do s[i]:=chr(ord(s[i])-t);
  writeln(s);
end.

希望对你有帮助!!
作者: 金辉    时间: 2013-5-22 18:15
没别的思路了~
作者: 杨彬    时间: 2013-5-22 18:23
貌似 基础视频讲过一个简单地加密  就是对一个数"^"上你设定的数,解密就是获取你加密数后再"^"上你设定的数,如果要用字母的话(char)一下就行了吧
作者: Miss小强    时间: 2013-5-22 20:05
不是很明白题目的意思;
是要写完成+4这个动作的方法还是???
作者: 黄文伯    时间: 2013-5-22 20:16
Miss小强 发表于 2013-5-22 20:05
不是很明白题目的意思;
是要写完成+4这个动作的方法还是???

记得老毕讲过,但是自己写的时候又写错了,找不到老毕当时写的代码了
作者: 刘兆华    时间: 2013-5-22 20:55
+4动作是ASCII 码表的对应值+4吧。
举体操作:
  1. int[] str={'a','b','c'};
  2.                 for(int x=0;x<str.length;x++)
  3.                 {
  4.                         System.out.println(str[x]);
  5.                         str[x]+=4;
  6.                         System.out.println(str[x]);
  7.                 }
复制代码
此时再来个强制转换,转成char就变成字符啦。

  1. String str1="";
  2.                 for(int x=0;x<str.length;x++)
  3.                 {
  4.                         str1+=(char)str[x];
  5.                 }
  6.                 System.out.println(str1);
复制代码

作者: 黄文伯    时间: 2013-5-22 21:12
刘兆华 发表于 2013-5-22 20:55
+4动作是ASCII 码表的对应值+4吧。
举体操作:此时再来个强制转换,转成char就变成字符啦。 ...

十分感谢
作者: 神之梦    时间: 2013-5-22 23:40
来学习个,顺便顶下黄胸
作者: 刘兆华    时间: 2013-5-23 01:00
黄文伯 发表于 2013-5-22 21:12
十分感谢

:#兄台客气了~




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