|

自定义子程序 验证***
如果真 (取文本长度 (*** ) ≠ 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”,再判断就出错了
希望官方纠正一下
|
|