• 身份证号码升级


    问题描述
      从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位字符串是否合理

    这个题很容易  就是恶心

    考查一些  字符串  ACIIL码。注意变换

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int i,n,j,m,k;
        long long int s;
      char a[100];
      char b[100];
      gets(a);
      n=strlen(a);
      for(i=0;i<6;i++)
      {
          b[i]=a[i];//前六个存进B数组里
      }
      b[6]='1';
      b[7]='9';加入俩
    for(i=6;i<n;i++)
    {
        b[i+2]=a[i];
    }
    for(i=0;i<n+2;i++)
    {
        printf("%c",b[i]);
    }
    
    s=(b[0]-48)*7+(b[1]-48)*9+(b[2]-48)*10+(b[3]-48)*5+(b[4]-48)*8+(b[5]-48)*4+(b[6]-48)*2+(b[7]-48)*1+(b[8]-48)*6+(b[9]-48)*3+(b[10]-48)*7+(b[11]-48)*9+(b[12]-48)*10+(b[13]-48)*5+(b[14]-48)*8+(b[15]-48)*4+(b[16]-48)*2;
    s=s%11;///乘上系数
    if(s==0)
    printf("1");
    if(s==1)
        printf("0");
    if(s==2)
        printf("x");
    if(s==3)
    printf("9");
    if(s==4)
        printf("8");
    if(s==5)
        printf("7");
    if(s==6)
        printf("6");
        if(s==7)
        printf("5");
        if(s==8)
            printf("4");
        if(s==9)
            printf("3");
        if(s==10)
            printf("2");
    
        getchar();getchar();getchar();
        return 0;
    }
  • 相关阅读:
    Open live Writer
    python两则99乘法表
    更改jupyter-notebook启动时的默认目录
    在内容中插入代码,返回进行编辑时,有无法跳出代码区的情况
    关于jupyter notebook密码设置
    nginx+zuul
    spring-cloud 服务优雅下线
    java.util.ConcurrentModificationException异常排查
    使用bitset实现毫秒级查询(二)
    使用bitset实现毫秒级查询
  • 原文地址:https://www.cnblogs.com/zhangjiaqi123/p/6171207.html
Copyright © 2020-2023  润新知