第二部分:文字录入及身份证校验

本文介绍了一种用于验证身份证号码有效性的算法。该算法基于前17位数字通过特定权重计算得出校验码,并与第18位进行比对。文中还提供了一个具体的C++实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二部分相对比较简单,实现文字的自动换行只需将editbox的属性multiline与vertical scorll属性改写为true即可

剩下的就是身份证的校验算法了,排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。我们的身份证总长18为其中第18为

号码为前17位号码通过一定的算法求得的而后地址访问某一特定的数组而得到的,大体思想为前17位分别乘以其相应的权值后相加,再取余11,得到的结果为特定数组的下标

地址,其对应的值就是身份证的校验位。

<span style="font-size:18px;">int SFZH(CString ID)
{
    int weight[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};  //每位号码的权值
    char validate[]={ '1','0','X','9','8','7','6','5','4','3','2'};//得出的18为即校验码的数组    
    int sum=0;  
    int mode=0;  
    if (ID.GetLength()==18)  
    {  
        for(int i=0;i<sfz.GetLength()-1;i++){  
            sum=sum+(sfz[i]-'0')*weight[i];  
        }  
        mode=sum%11;  
        if (validate[mode]==sfz[17])  
        {  
            return 1;  
        }  
    }  
   
    return 0;  

}</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值