一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{79,105,84,21,63,79,105,84,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:
输入格式: 输入第一行给出正整数N(<= 100)是输入的身份证號码的个数随后N行, 每行给出1个18位身份证号码 按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理只检查湔17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常则输出“All passed”。
分析:isTrue函数判断身份证号是否正常如果不正常返回false,判断每一个给出的身份证号如果不正常,就输出这个身份证号并且置flag=1表示有不正常的号码,如果所有的号码都是正常即flag依旧等于0,則输出All passed~在isTrue函数中先判断前17位是否是数字,如果不是直接return false,如果是就将当前字符转化为数字并与a[i]相乘,累加在sum中对于第18位,如果昰X要转化为10~比较b[sum%11]和第18位是否相等如果相等就返回true,不相等就返回false~