1031 查验身份证

2023-10-16 04:36
文章标签 身份证 查验 1031

本文主要是介绍1031 查验身份证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.问题:

一个合法的身份证号码由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位数是不是全是数字,然后计算前17位17位数字加权求和,对11取模得到值,最后按照对应值找到对应校验码M的值,拿我们计算出的这个校验码M的值和输入的身份证号码第18位比较,看是不是一样的,不一样说明该身份证号码有问题。

        这题就注意输出格式和写判断条件的时候注意点。

三.代码实现(C语言描述):

#include<stdio.h>
#include<stdlib.h>
int Is_num(char *num_str)
{//先检查身份证号码是否全为数字for(int i = 0;i < 17;i++){if(num_str[i] < '0'||num_str[i] > '9'){return 0;}}return 1;
}int Is_right_num(char *num_str)
{//对每一个身份号码的前17位数字加权求和,权重分配为:         {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}int rate[17] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};int sum = 0;for(int j = 0;j < 17;j++){sum += rate[j]*(num_str[j]-'0');}//将计算的和对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 2char M[11] = {'1','0','X','9','8','7','6','5','4','3','2'};int Z = sum % 11;char x = M[Z];if(x == num_str[17]){return 1;}return 0;
}int main()
{//输入整数N(≤100):输入的身份证号码的个数。int N = 0;scanf("%d",&N);//接下来N行每行输入1个18位身份证号码。char* num_str[N];int num_arr[N] = {0};int flag1 = 1;int flag2 = 1;int all_ok = 1;for(int i = 0;i < N;i++){char *str = (char *)malloc(sizeof(char)*19);scanf("%s",str);num_str[i] = str;}//先检查身份证号码是否全为数字int flag[N] = {0};int count = 0;for(int i = 0;i < N;i++){flag1 = Is_num(num_str[i]);flag2 = Is_right_num(num_str[i]);if(flag1 ==0 || flag2==0){flag[i] = 1;count++;}}//如果所有号码都正常,则输出All passed。if(count !=0){for(int i = 0;i < N;i++){if(flag[i]&&count != 1){printf("%s\n",num_str[i]);count--;}else if(flag[i]&&count == 1){printf("%s",num_str[i]);}}}else{printf("All passed\n");}return 0;
}

这篇关于1031 查验身份证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/219076

相关文章

Python批量读取身份证信息录入系统和重命名

前言 大家好, 如果你对自动化处理身份证图片感兴趣,可以尝试以下操作:从身份证图片中快速提取信息,填入表格并提交到网页系统。如果你无法完成这个任务,我们将在“Python自动化办公2.0”课程中详细讲解实现整个过程。 实现过程概述: 模块与功能: re 模块:用于从 OCR 识别出的文本中提取所需的信息。 日期模块:计算年龄。 pandas:处理和操作表格数据。 PaddleOCR:百度的

贷款利率高低跟什么有关?仅凭身份证就能贷到款?额度是多少?

在金融的广阔舞台上,借款人的“信用基石”——即其综合资质,是决定贷款利率高低的决定性因素。这并非偶然,而是银行基于详尽的风险评估与收益预期所做出的精准判断。 需明确的是,贷款的易得性并不意味着无门槛的放任。它更像是设置了一个更为宽泛的准入标准,让多样化的借款人能够有机会尝试,但能否真正获得贷款,还需依据个人的经济实力、职业稳定性及信用历史的纯净度来综合评判。银行的核心考量始终在于确保资金的安

Node.js实名认证接口示例-身份证、银行卡、手机号实名认证

随着互联网的高速发展,人们可以发表言论的渠道越来越多。网络平台不断汲取各地、各人、各时发表的各种信息。人们喜欢将信息发布到微博、知乎、天涯、豆瓣等等网络平台,逐步的,网络信息进入大爆炸时代。这些大量涌现的信息中难免掺杂着一些不良信息,比如:虚假信息、污言秽语、违法违规信息的发布。这些信息充斥其中,严重影响了网络的环境。   若想拥有一片安全、绿色的网络环境,那么就要让所有人意识到自己需要承担

一款支持身份证、驾驶证、护照、车牌等证件识别插件

CardOCR 证件识别是一个apk插件,为应用开发方提供身份证、驾驶证、车牌号、护照等的OCR识别服务,如通过扫描身份证,可以快速识别二代身份证上的身份证号等信息,并将这些信息返回给第三方应用。 最新版本的OCR识别库具备以下明显优势: 识别率大幅提高,车牌号和身份证正常情况下毫秒级完成识别,成功率达到99%以上。车牌识别除了支持普通的蓝色、黄色、警用等车牌外,同时也支持新能源车牌。驾驶证

阿里云身份证二要素详细使用

初步: 先登录阿里云(找官网链接) 2、云市场搜索身份证二要素 看个人需求选择 3、我选择的是下边这个 4、接下来看文档具体调用(在请求示例中有选择语言的代码 我选择的就是java) 5、在控制台看appcode码  放入代码中 6、接下来就可以运行代码看结果 示例 我做了个小案例 创建一个项目写一个简单的接口Postman测试该接口 得到结果

C++身份证实名认证-实名制-身份证三要素认证-身份认证-身份验真-接口

身份证实名认证一般是指通过一定的技术,对用户的身份进行确认的过程,常见的身份证核验方式包括身份证二要素、二要素+人像、手机号、银行卡等的一系列认证方式。   身份证核验一般需要提供身份证号码、姓名、证件人像、现场人像要素信息来与权威数据库中的信息进行匹配,以此来确认用户的真实身份。   C++身份证实名认证接口示例: #include #include #include int mai

C++发票查验-发票验真-发票真伪查验-发票ocr识别-数电票真伪-接口

发票查验接口,是指通过特定的技术手段和服务平台,对发票的真伪进行验证和识别的一项服务。在现代商业活动中,发票作为一种重要的财务和法律凭证,其真实性对于维护税务秩序和防范财务风险至关重要。   随着技术的进步,人工智能和OCR(光学字符识别)技术也被应用于发票查验之中。通过OCR技术,可以自动识别发票上的文本信息,包括发票号码、代码、金额等关键信息,并自动完成查验。这种技术不仅提高了查验效率

九度考研真题 浙大 2009-1浙大1031:xxx定律

//1031:xxx定律 #include<iostream> using namespace std; int main(){ int n; while(cin>>n&&n!=0){ int num=0; while(n!=1){ if(n%2==0){ n/=2; num++; } else{ n=3*n+1; n/

新中新身份证阅读器C++实现

最近有个身份证识别功能需要实现,通过整理把接口进行了封装整理,方便其他业务逻辑调用,代码如下: 1、IDCardHelper.h #pragma once#include <map>#pragma pack(1)typedef struct tagIDCardData {char Name[32]; //姓名 char Sex[6]; //性别char Natio

【Python 千题 —— 基础篇】身份证隐藏的信息

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目描述 题目描述 在一个用户信息管理系统中,你需要处理和验证用户提供的身份证号。编写一个程序来从用户信息字符串中提取和验证身份证号,并提供相应的处理方式。具体要求如下: 定义一个函数 process_id_ca