银行卡号是否正确的校验方法之一(根据最后一位是否符合Luhn算法)
写得不太规范,高手请绕行程序代码:
CLEAR no1='6222888800010008' &&卡号 len2=INT(LEN(no1)/2) IF LEN(no1)#16 =MESSAGEBOX('卡号长度错误') ENDIF endwei=0 FOR ii=1 TO len2 &&偶数*2 结果大于10 -9或者十位数+个位数 js=ALLTRIM(STR(VAL(LEFT(RIGHT(no1,ii*2),1))*2)) IF VAL(js)>=10 endwei=endwei+VAL(LEFT(js,1))+VAL(RIGHT(js,1)) ELSE endwei=endwei+VAL(js) ENDIF ENDFOR FOR ii=1 TO len2 &&奇数位直接相加 js=LEFT(right(no1,ii*2-1),1) endwei=endwei+VAL(js) ENDFOR ?endwei IF MOD(endwei,10)=0 &&除10 整数 校验通过 ?no1+' **校验正确' ELSE ?no1+' **校验错误******' ENDIF