算法提高 身份证号码升级
        【摘要】   
 
   
  
    问题描述   从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)...
    
    
    
    
     问题描述 
   
 
   
     从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××年
 
   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位字符串是否合理 
   
 
    i 
     
 
    
 
   
       
        - 
         
          
         
         
          
           mport java.util.Scanner;
          
         
 
        - 
         
          
         
         
           
          
         
 
        - 
         
          
         
         
          
           public class Main {
          
         
 
        - 
         
          
         
         
           
          
         
 
        - 
         
          
         
         
          
           public static void main(String[] args){
          
         
 
        - 
         
          
         
         
          
           // TODO Auto-generated methodstub
          
         
 
        - 
         
          
         
         
          
           Scanner sc=newScanner(System.in);
          
         
 
        - 
         
          
         
         
          
           String s=sc.next();
          
         
 
        - 
         
          
         
         
          
           int[] a =new int[18];
          
         
 
        - 
         
          
         
         
          
           for(int i=0;i<15;i++){
          
         
 
        - 
         
          
         
         
          
           a[i]=Integer.parseInt(s.substring(i,i+1));
          
         
 
        - 
         
          
         
         
          
           }
          
         
 
        - 
         
          
         
         
          
           int[] b=new int[18];
          
         
 
        - 
         
          
         
         
          
           for(int i=0;i<6;i++){
          
         
 
        - 
         
          
         
         
          
           b[i]=a[i];
          
         
 
        - 
         
          
         
         
          
           }
          
         
 
        - 
         
          
         
         
          
           b[6]=1;b[7]=9;
          
         
 
        - 
         
          
         
         
          
           int num=8;
          
         
 
        - 
         
          
         
         
          
           for(int i=6;i<15;i++){
          
         
 
        - 
         
          
         
         
          
           b[num++]=a[i];
          
         
 
        - 
         
          
         
         
          
           }
          
         
 
        - 
         
          
         
         
          
           int sum=0;
          
         
 
        - 
         
          
         
         
          
           sum=b[0]*7+b[1]*9+b[2]*10+b[3]*5+b[4]*8+b[5]*4+b[6]*2
          
         
 
        - 
         
          
         
         
          
           +b[7]*1+b[8]*6+b[9]*3+
          
         
 
        - 
         
          
         
         
          
           b[10]*7+b[11]*9+b[12]*10+b[13]*5+b[14]*8+b[15]*4+b[16]*2;
          
         
 
        - 
         
          
         
         
          
           sum%=11;
          
         
 
        - 
         
          
         
         
          
           for(int i=0;i
          
         
 
        - 
         
          
         
         
          
           System.out.print(b[i]);
          
         
 
        - 
         
          
         
         
          
           }
          
         
 
        - 
         
          
         
         
          
           switch(sum){
          
         
 
        - 
         
          
         
         
          
           case 0: 
          
         
 
        - 
         
          
         
         
          
           System.out.print("1");break;
          
         
 
        - 
         
          
         
         
          
           case 1: 
          
         
 
        - 
         
          
         
         
          
           System.out.print("0");break;
          
         
 
        - 
         
          
         
         
          
           case 2:
          
         
 
        - 
         
          
         
         
          
           System.out.print("x");; break;
          
         
 
        - 
         
          
         
         
          
           case 3:
          
         
 
        - 
         
          
         
         
          
           System.out.print("9"); break;
          
         
 
        - 
         
          
         
         
          
           case 4:
          
         
 
        - 
         
          
         
         
          
           System.out.print("8"); break;
          
         
 
        - 
         
          
         
         
          
           case 5:
          
         
 
        - 
         
          
         
         
          
           System.out.print("7"); break;
          
         
 
        - 
         
          
         
         
          
           case 6:
          
         
 
        - 
         
          
         
         
          
           System.out.print("6"); break;
          
         
 
        - 
         
          
         
         
          
           case 7:
          
         
 
        - 
         
          
         
         
          
           System.out.print("5"); break;
          
         
 
        - 
         
          
         
         
          
           case 8:
          
         
 
        - 
         
          
         
         
          
           System.out.print("4"); break;
          
         
 
        - 
         
          
         
         
          
           case 9:
          
         
 
        - 
         
          
         
         
          
           System.out.print("3"); break;
          
         
 
        - 
         
          
         
         
          
           case 10:
          
         
 
        - 
         
          
         
         
          
           System.out.print("2"); break;
          
         
 
        - 
         
          
         
         
          
           }
          
         
 
        - 
         
          
         
         
          
           }
          
         
 
        - 
         
          
         
         
           
          
         
 
        - 
         
          
         
         
          
           }
          
         
 
       
       
     文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。
原文链接:czhenya.blog.csdn.net/article/details/76092095
        【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
            cloudbbs@huaweicloud.com
        
        
        
        
        - 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)