7-8 查验身份证 一个合法的身份证号码由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 11010819671130186637070419881216001X输出样例1: 12010X198901011234 110108196711301866 37070419881216001X输入样例2: 2 320124198808240056 110108196711301862输出样例2: All passed
#include<iostream>
#include<string>using namespace std;int main()
{int n;cin >> n;string* str = new string[n];for (int i = 0; i < n; i++)//输入身份证号 {cin >> str[i];}char a[n];   // 存储每行最后一位int sum[n];  // 存储每行前17位的和int shaobing[n];// 用于判断是否符合条件,1 符合 0 不符合for (int i = 0; i < n; i++){a[i] = str[i][17];sum[i] = 0;shaobing[i] = 1;  }char M[11] = { '1','0','X','9','8','7','6','5','4','3','2' };int N[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };// 检验前十七位是否全为数字for (int j = 0; j < n; j++){for (int i = 0; i < 17; i++){if (str[j][i] >= '0'&&str[j][i] <= '9'){sum[j] += (str[j][i] - '0')*N[i]; // 加权求和}else{shaobing[j] = 0;break;}}}bool flag = 1;  // 判断是否所有均符合条件for (int i = 0; i < n; i++){if (shaobing[i] == 0 || M[sum[i] % 11] != a[i]){flag = 0;   // 进入此循环则有一个不符合条件cout << str[i] << endl;}}if (flag){cout << "All passed" << endl;}return 0;
}

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

  1. 查验身份证 (15 分)一个合法的身份证号码

    查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6, ...

  2. JAVA代码实现身份证18位校验码合法性校验

    身份证第18位(校验码)的计算方法 1.将前面的身份证号码17位数分别乘以不同的系数.从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2. 2.将这 ...

  3. python判断身份证是否合法的函数_Python开发之身份证验证库id_validator验证身份证号合法性及根据身...

    上个星期,大佬分享了一个验证身份证号合法性的库:id_validator,没空去试着用一下看看,今天有点时间,来试着用下这个库. 1.首先,要安装这个库,windows+R键运行cmd,打开命令行窗口 ...

  4. 根据身份证号和社会保险号码查询不出您的医保信息 请核实后重新填写

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 今天打算 ...

  5. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  6. 怎么用java实现通过身份证号码判断籍贯所在地区

    https://blog.csdn.net/weixin_43876206/article/details/89426036 怎么用java实现通过身份证号码判断籍贯所在地区 java实现通过身份证号 ...

  7. PHP实现输入身高和体重输出bmi值,PHP输入一个人的身份证号根据身份证号码判断性别,这两个程序

    目录 一.前言 二.代码段 1.输入身高和体重输出bmi值的代码段 2.输入一个人的身份证号根据身份证号码判断性别的代码段 三.实现结果(流程) 1.输入身高和体重输出bmi值的代码段 2.输入一个人 ...

  8. 根据身份证号和社会保险号码查询不出您的医保信息,请核实后重新填写

    今天打算登录<北京市社会保险网上服务平台>查看一下社保的状态,结果遇到下面几个问题: 根据身份证号和社会保险号码查询不出您的医保信息,请核实后重新填写 根据输入查不出任何记录,请检查您输入 ...

  9. 基于华视身份证读卡器读取身份证信息的Android demo

    项目概述 本Demo需要华视的身份证读卡器,连接Android机器设备,当身份证读卡器读取到身份证信息后,立马展示出身份证信息数据.得到身份证的姓名.照片.出生年月等数据. 项目概述 本Demo需要华 ...

  10. 公民身份号码是一种由18位数字组成的特征组合码,其排列顺序从左至右依次为:6位数字地址码、8位数字出生日期码,3位数字顺序码和1位数字校验码(校验码若为10则用字符X来表示)。编写程序从键盘输入一个

    #include <stdio.h> int main() {int add,year,month,day;/*定义地址码,年月日*/int shunxuma;/*定义顺序码*/char ...

最新文章

  1. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍
  2. 030_CSS外边距合并
  3. FLutter入门:异步加载组件FutureBuilder
  4. DOM与元素节点内联样式
  5. 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~...
  6. linux添加phoenix引导,在linux怎么执行phoenix 脚本
  7. Security+ 学习笔记1 恶意软件
  8. Studio系列教程来啦
  9. 四十岁以后,如何做夫妻?
  10. AI得贤招聘官上线ChatGPT,免费为企业提供AI智能助手Molly
  11. 安全事件响应观察报告家族
  12. 【展望】对未来的期待
  13. Python爬虫实战一之爬取糗事百科段子
  14. kdb的基本用法 2
  15. mybatis中POJO的作用
  16. (2.4)【服务型木马-winshell】最小木马:使用方法
  17. mavlink协议_MAVLink学习之路05_MAVLink应用编程接口分析
  18. 大专程序员毕业五年税后18K,想进BAT,网友:吃shi都赶不上热的
  19. 利用FFmpeg进行视频文件进行分割
  20. 第一章第十题(以英里计的平均速度)(Average speed in miles)

热门文章

  1. creo数控编程怎么样_CREO数控编程NC图文教程 -
  2. 学习笔记 —— 吴恩达《机器学习》课程
  3. 解决Ubuntu显卡驱动的问题
  4. ISO 18000-6c 访问标签--应用程序访问操作ISO 18000-6C标签的方法
  5. Windows 2003超级终端
  6. udp超过mtu长度 linux,TCP UDP 数据包长度(MSS)总结
  7. 【趣闻】清华大学大一的英文原版线性代数教材里居然出现了Python
  8. 整体刚度矩阵matlab,单元刚度矩阵matlab
  9. c语言编程软件有哪些 Win7下用哪种C语言编译器
  10. MapGuide应用最佳实践—MapGuide Server和MapGuide WebExtension分开部署