m = space(0)

问题描述:

m = space(0)
c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
for i = 1 to len(c)
nc = asc(substr(c,i,1))
if nc>64 and nc86
m = m+chr(65+nc-87)
ELSE
m = m+chr(nc+4)
ENDIF
else
IF nc>120
m = m+chr(97+nc-121)
ELSE
m = m+chr(nc+2)
ENDIF
endif
endfor
wait window c+"字符加密后后"+m
m = m+chr(65+nc-87)是什么意思?我知道这是在ASCII中的位置,但我不明白为什么要这样写
还有 ELSE
m = m+chr(nc+4)
为什么不直接写成m = m+chr(nc+4)而要加ELSE呢?
以及nc>120为什么要>X的位置呢?
当然后面的m = m+chr(97+nc-121)一点也不懂......
尽量写详细一点.我们周一有VFP课,所以请您尽快.我有很多问题要问您!
1个回答 分类:综合 2014-10-21

问题解答:

我来补答
字符加密后,按你的要求,需要形成一个循环,即W转换为A,X转换为B,以后类推,
我将你的代码修改为:
if nc>86 && 如果满足条件,执行以下代码
m = m+chr(65+nc-87)
ELSE &&如果不满足前面条件,执行以下代码,有”否则“的意思
m = m+chr(nc+4)
ENDIF
其中else后的
m = m+chr(nc+4)
是正常的延退4个字母加密转换,其意义自己去领会,但仅对NC86.chr(65+nc-87)其实就是chr(nc-22)的具体意义,请见以下推理:
chr(87)="W"→A=chr(65),nc=87,chr(65+nc-87)=CHR(65+87-87)=CHR(65)=A
chr(88)="X"→B=chr(66),nc=88,chr(65+nc-87)=CHR(65+88-87)=CHR(66)=B
chr(89)="Y"→C=chr(67),nc=89,chr(65+nc-87)=CHR(65+89-87)=CHR(67)=C
chr(90)="Z"→D=chr(68),nc=90,chr(65+nc-87)=CHR(65+90-87)=CHR(68)=D
至于m = m+chr(97+nc-121)也就是m=m+chr(nc-24)的意义,跟上面的原理差不多,
仅提示一点,大写字母的加密转换是延退4个字母,小写字母的加密转换是延退2个字母,所以是ASCII值大于120的“y","z"就要进行循环转换为 ”a","b",
chr(120)="x"
chr(97)=“a"
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识