工具身份证校验器On this page身份证校验器 参考资料 公民身份号码 - 维基百科 原理 将 181818 位身份证号码从左至右标记: a1,a2,…,a18a_1,a_2,\dots,a_{18}a1,a2,…,a18 计算权重系数: wi=218−i mod 11w_i=2^{18-i}\bmod 11wi=218−imod11 iii111222333444555666777888999101010111111121212131313141414151515161616171717181818wiw_iwi777999101010555888444222111666333777999101010555888444222111 计算: s=∑i=117aiwis=\sum_{i=1}^{17}a_i w_is=i=1∑17aiwi 校验码: a18=(12−s mod 11) mod 11a_{18}=(12-s\bmod 11)\bmod 11a18=(12−smod11)mod11 代码 #include <bits/stdc++.h>using namespace std;int main(){ string s; cin>>s; int sum=0; for(int i=0;i<17;i++)sum+=s[i]-'0'<<17-i; int num=(12-sum%11)%11; cout<<(char)(num==10?'X':'0'+num)<<'\n'; return 0;}