|
自定义子程序 验证***
如果真 (取文本长度 (*** ) ≠ 18 )返回 (2 )身 = 到文本 (到整数 (取文本中间 (***, 1, 1)) × 7 + 到整数 (取文本中间 (***, 2, 1)) × 9 + 到整数 (取文本中间 (***, 3, 1)) × 10 + 到整数 (取文本中间 (***, 4, 1)) × 5 + 到整数 (取文本中间 (***, 5, 1)) × 8 + 到整数 (取文本中间 (***, 6, 1)) × 4 + 到整数 (取文本中间 (***, 7, 1)) × 2 + 到整数 (取文本中间 (***, 8, 1)) × 1 + 到整数 (取文本中间 (***, 9, 1)) × 6 + 到整数 (取文本中间 (***, 10, 1)) × 3 + 到整数 (取文本中间 (***, 11, 1)) × 7 + 到整数 (取文本中间 (***, 12, 1)) × 9 + 到整数 (取文本中间 (***, 13, 1)) × 10 + 到整数 (取文本中间 (***, 14, 1)) × 5 + 到整数 (取文本中间 (***, 15, 1)) × 8 + 到整数 (取文本中间 (***, 16, 1)) × 4 + 到整数 (取文本中间 (***, 17, 1)) × 2)身 = 到文本 (到整数 (身 ) % 11 )如果真 (身 = “0”)身 = “1”返回1 = 证 (***, 身 )如果真 (身 = “1”)身 = “0”返回1 = 证 (***, 身 )如果真 (身 = “2”)身 = “X”返回1 = 证 (***, 身 )如果真 (身 = “3”)身 = “9”返回1 = 证 (***, 身 )如果真 (身 = “4”)身 = “8”返回1 = 证 (***, 身 )如果真 (身 = “5”)身 = “7”返回1 = 证 (***, 身 )如果真 (身 = “6”)身 = “6”返回1 = 证 (***, 身 )如果真 (身 = “7”)身 = “5”返回1 = 证 (***, 身 )如果真 (身 = “8”)身 = “4”返回1 = 证 (***, 身 )如果真 (身 = “9”)身 = “3”返回1 = 证 (***, 身 )如果真 (身 = “10”)身 = “2”返回1 = 证 (***, 身 )返回 (返回1 )如果 (身 ≠ 取文本中间 (***, 18, 1 )) 返回 (1 )返回 (0 )
不该使用如果真,当***最后一位被算出来之后,比对后该直接返回结果,使用如果真的话在每一个如果真内部添加 返回(返回1) 或者全部转换为 判断
比如***513021195711065669 ,这是一个正确的***,但是这个子程序因为算出来“身=3”,所以直接赋值了对应的“身=9”,判断后返回***正确,比对之后因为是如果真,接下来的如果真都再次判断。又比对了一次“身=9”,这时候会直接赋值了对应的“身=3”,再判断就出错了
希望官方纠正一下
|
|