计算身份证号校验码

讲解正则表达式的日报里我只讲过如何检验身份证号的格式是否正确,并没有讲如何计算校验码,下面就是通过身份证号的前17位计算第十八位的代码,大家可以借鉴一下:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int w[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
string ID;

int main() {
    ios::sync_with_stdio(false);
    cin >> ID;
    register int sum = 0;
    for (register int i = 0; i < ID.size(); i ++)
        sum += (ID[i]-'0') * w[i];
    ID += (12-sum%11) % 11 == 10 ? 'X' : ((12-sum%11) % 11 + '0');
    cout << ID << endl;
    return 0;
}

发表于 2019-06-03 13:27:38 in 正则表达式