当前位置: 高中信息技术 / 综合题
  • 1. (2021高二上·平阳月考) 判断身份证校验位是否正确

    第一步:将身份证号码的第1位数字与7相乘;将身份证号码的第2位数字与9相乘;将身份证号码的第3位数字与10相乘;将身份证号码的第4位数字与5相乘;将身份证号码的第5位数字与8相乘;将身份证号码的第6位数字与4相乘;将身份证号码的第7位数字与2相乘;将身份证号码的第8位数字与1相乘;将身份证号码的第9位数字与6相乘;将身份证号码的第10位数字与3相乘;将身份证号码的第11位数字与7相乘;将身份证号码的第12位数字与9相乘;将身份证号码的第13位数字与10相乘;将身份证号码的第14位数字与5相乘;将身份证号码的第15位数字与8相乘;将身份证号码的第16位数字与4相乘;将身份证号码的第17位数字与2相乘。

    第二步:将第一步身份证号码1~17位相乘的结果求和,全部加起来。

    第三步:用第二步计算出来的结果除以11,这样就会出现余数为0,余数为1,余数为2,余数为3,余数为4,余数为5,余数为6,余数为7,余数为8,余数为9,余数为10共11种可能性。

    第四步:如果余数为0,那对应的最后一位身份证的号码为1;如果余数为1,那对应的最后一位身份证的号码为0;如果余数为2,那对应的最后一位身份证的号码为X;如果余数为3,那对应的最后一位身份证的号码为9;如果余数为4,那对应的最后一位身份证的号码为8;如果余数为5,那对应的最后一位身份证的号码为7;如果余数为6,那对应的最后一位身份证的号码为6;如果余数为7,那对应的最后一位身份证的号码为5;如果余数为8,那对应的最后一位身份证的号码为4;如果余数为9,那对应的最后一位身份证的号码为3;如果余数为10,那对应的最后一位身份证的号码为2。

    余数列表

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    校验码对照表

    1

    0

    X

    9

    8

    7

    6

    5

    4

    3

    2

    B2  某男性公民公民身份号码本体码为44052418800101001,其校验码字符值仍可按B1各步骤与方法计算如下:

    =28+36+0+ 25+16+16+2+8+48+0+0+9+0+5+0+0+2=195

    195÷11=17 , 即(ai×Wi)(mod 11)为8。

    查表2得出校验码字符值ai为4。

    该男性公民的公民身份号码为440524188001010014。

    1. (1)  如果身份证的前17位是34052419800101001,则该身份证的校验位是
    2. (2) 实现上述功能的代码如下,请在划线处填入合适的代码,使程序正常运行。

      def check(s):

      s1=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]

      s2='10X98765432'

      k=0 

      for i in :

      k=k+int(s[i])*s1[i]

      return 

      sfz=input('请输入身份证号:') 

      if t !=18:

      print('位数有误,请重新输入!')

      else:

      if sfz[-1]=='x':

      sfz=sfz[:-1]+"X"

      if :

      print('合法身份证号')

      else:

      print('非法身份证号')

    3. (3) 实现上述功能的代码如下,但加框处代码有错,请改正。

微信扫码预览、分享更方便