首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

算法提高 身份证号码升级

问题描述   从1999年10月1日开始,公民身份证号码由15位数字增至18位。(18位身份证号码简介)。升级方法为:   1、把15位身份证号码中的年份由2位(7,8位)改为四位。   2、最后添加一位验证码。验证码的计算方案:   将前 17 位分别乘以对应系数 (7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2) 并相加,然后除以 11 取余数,0-10 分别对应 1 0 x 9 8 7 6 5 4 3 2。   请编写一个程序,用户输入15位身份证号码,程序生成18位身份证号码。假设所有要升级的身份证的四位年份都是19××年 输入格式   一个15位的数字串,作为身份证号码 输出格式   一个18位的字符串,作为升级后的身份证号码 样例输入 110105491231002 样例输出 11010519491231002x 数据规模和约定   不用判断输入的15位字符串是否合理

00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    javascript身份证号码验证函数支持带x

    // --身份证号码验证-支持新的带x身份证 function  isIdCardNo(num)  { var  factorArr  = new  Array( 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 , 6 , 3 , 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 ); var  error; var  varArray  = new  Array(); var  intValue; var  lngProduct  = 0 ; var  intCheckDigit; var  intStrLen  =  num.length; var  idNumber  =  num;     //  initialize if  ((intStrLen  != 15 )  &&  (intStrLen  != 18 )) { // error = "输入身份证号码长度不对!"; // alert(error); // frmAddUser.txtIDCard.focus(); return false ;     }     //  check and set value for (i = 0 ;i < intStrLen;i ++ ) {         varArray[i]  =  idNumber.charAt(i); if  ((varArray[i]  < ' 0 ' ||  varArray[i]  > ' 9 ' )  &&  (i  != 17 )) { // error = "错误的身份证号码!."; // alert(error); // frmAddUser.txtIDCard.focus(); return false ;         }  else if  (i  < 17 ) {             varArray[i]  =  varArray[i] * factorArr[i];         }     } if  (intStrLen  == 18 ) { // check date var  date8  =  idNumber.substring( 6 , 14 ); if  (checkDate(date8)  == false ) { // error = "身份证中日期信息不正确!."; // alert(error); return false ;         }         //  calculate the sum of the products for (i = 0 ;i < 17 ;i ++ ) {             lngProduct  =  lngProduct  +  varArray[i];         }         //  calculate the check digit         intCheckDigit  = 12 -  lngProduct  % 11 ; switch  (intCheckDigit) { case 10 :                 intCheckDigit  = ' X ' ; break ; case 11 :                 intCheckDigit  = 0 ; break ; case 12 :                 intCheckDigit  = 1 ; break ;         }         //  check last digit if  (varArray[ 17 ].toUpperCase()  !=  intCheckDigit) { // err

    02

    身份证号校验规则

    中国居民身份证号码编码规则 第一、二位表示省(自治区、直辖市、特别行政区)。 第三、四位表示市(地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码)。其中,01-20,51-70表示省直辖市;21-50表示地区(自治州、盟)。 第五、六位表示县(市辖区、县级市、旗)。01-18表示市辖区或地区(自治州、盟)辖县级市;21-80表示县(旗);81-99表示省直辖县级市。 第七、十四位表示出生年月日(单数字月日左侧用0补齐)。其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。 第十五、十七位表示顺序码。对同地区、同年、月、日出生的人员编定的顺序号。其中第十七位奇数分给男性,偶数分给女性。 第十八位表示校验码。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,校验码如果出现数字10,就用X来代替,详情参考下方计算方法。

    02
    领券