成都配资公司排名

当前位置:股票配资 > 编程语言 > C语言 > 正文  |  快速导航:C# Java C++ Delphi Ruby C语言 软件工程 WPF LINQ 汇编语言 Python VC.NET VB.NET ADO.NET F# VC++ VB6
  • C语言获取身份证最后一位校验码

  • 字号:[ ]2013-10-19 13:46:46  阅读:244次  来源:乐猪网  编辑:银河精灵  收藏
  • 摘要:介绍18位身份证号码最后一位校验码的计算方法公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
  • 校验方法:

    (1)十七位数字本体码加权求和公式S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和Ai:表示第i位置上的身份证号码数字值Wi:表示第i位置上的加权因子Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2(2)计算模Y = mod(S, 11)(3)通过模得到对应的校验码Y: 0 1 2 3 4 5 6 7 8 9 10校验码: 1 0 X 9 8 7 6 5 4 3 2

    实例代码:

    #include<stdio.h>  
    char DoVerify(const char* pszSrc)  
    {  
        int iS = 0;  
        int iW[]={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};  
        static char szVerCode[]="10X98765432";  
        int i;  
        for(i=0;i<17;i++)  
        {  
            iS += (int)(pszSrc[i]-'0') * iW[i];  
        }  
        int iY = iS%11;  
        // printf("%d %% 11 = iY = %d\n",iS, iY);  
        // printf("%c \n",szVerCode[iY]);  
        return szVerCode[iY];  
    }  
        
    void main()  
    {  
        char szSrc1[] = "11010519491231002X";  
        char result1 = DoVerify(szSrc1);  
        printf("%c \n", result1);  
        char szSrc2[] = "440524188001010014";  
        char result2 = DoVerify(szSrc2);  
        printf("%c \n", result2);  
    }

    输出结果:

  • 顶一下
    (0)
    0%
    踩一下
    (0)
    0%
乐猪网 版权所有 Copyright © 2012-2015 fchsn.wang All rights reserved.
本站用于学习交流,部分文章来源于网络,如果不慎侵犯了您的权益,请配资开户 我们删除!
粤ICP备12000837号

成都配资公司排名