1031 查验身份证

简介: 1031 查验身份证

1031 查验身份证 (15 分)

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:

首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:

Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2


现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

输入格式:

输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。

输出格式:

按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed

输入样例1:

4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X

输出样例1:

12010X198901011234
110108196711301866
37070419881216001X

输入样例2:

2
320124198808240056
110108196711301862

输出样例2:

All passed

 


这题没有难度,照着规则做就可以了,就是要细心些。

这个题目的挺有意思,可以检验/推测身份证的最后一位校验码。这个题目是检验,其实稍微改一下就可以用身份证前17位求出最后一位的校验码。

 

 

#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
  char M[11] = { '1','0','X','9','8','7','6','5','4','3','2' };
  int quan[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
  int N;
  cin >> N;
  string sfz[100];
  for (int i = 0; i < N; i++)
    cin >> sfz[i];
 
  string wrong[100];
  int n_wrong = 0;
  bool iswrong = false;
  int sum = 0;
  for (int i = 0; i < N; i++) {
    sum = 0;
    for (int j = 0; j < 17; j++) {
      if (!isdigit(sfz[i][j])) {
        iswrong = true;
        break;
      }
      sum += (sfz[i][j] - '0') * quan[j];  //这个地方不要忘记-'0'
    }
    int Z = sum % 11;
    if (sfz[i][17] != M[Z])
      iswrong = true;
    if (iswrong) {
      wrong[n_wrong++] = sfz[i];
      iswrong = false;
    }
  }
  for (int i = 0; i < n_wrong; i++)
    cout << wrong[i] << endl;
  if (n_wrong == 0)
    cout << "All passed";
  return 0;
}
相关文章
解密身份证号,and 身份证与姓名认证。
解密身份证号,and 身份证与姓名认证。
|
7月前
查发票|发票查验|验证码识别|批量查验|发票验真
昨天我开始对发票查验最耗时的环节-验证码识别下手,通过使用5000多张打码图片对PaddleOCR的模型进行训练后,识别率获得了很大提升。
210 1
|
云安全 安全 搜索推荐
身份证实名认证平台有哪些
实名认证是指通过验证用户的个人身份信息来确认其真实身份的过程。在互联网时代中,实名认证具有很大的重要性和实用价值,它可以保护用户的个人隐私和安全,有效预防欺诈行为和虚假交易,提高整个网络社区的可信度和安全性。
|
存储 文字识别 小程序
小程序识别身份证,银行卡,营业执照,驾照
小程序识别身份证,银行卡,营业执照,驾照
126 0
|
存储 文字识别 小程序
小程序识别身份证 银行卡 营业执照 驾照 小程序OCR图片识别
小程序识别身份证 银行卡 营业执照 驾照 小程序OCR图片识别
186 0
|
数据采集
详细教程:使用【阿里云-身份证实名认证接口】服务进行身份证二要素实名认证核验
如今随着互联网产业的多元化发展,尤其是互联网金融,O2O,共享经济等新兴商业形式的兴起,企业对实名认证业务的数据形式和数据质量有了更高的需求。如今也衍生出身份证实名认证接口业务,通过接口将身份证号码、姓名上传至阿里云,再与全国公民身份信息系统进行匹配,判断信息的一致性。
3283 0
详细教程:使用【阿里云-身份证实名认证接口】服务进行身份证二要素实名认证核验
L1-016 查验身份证 (15 分)
L1-016 查验身份证 (15 分)
168 0
7-54 查验身份证 (15 分)
7-54 查验身份证 (15 分)
103 0
2020-09-24L1-016 查验身份证
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。
150 0