一个合法的身份证号码由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

代码如下:

 #include<stdio.h>
int main()
{int n,num=0,i,j;scanf("%d",&n);getchar();//用于读取n后面的换行符\n,防止后续被读取;char s[100][20];int  a[18]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char str[11] = {'1','0','X','9','8','7','6','5','4','3','2'};//将对应关系转化为元素与下标之间的关系;for(i=0;i<n;i++)scanf("%s",s[i]);for(i=0;i<n;i++){for(j=0;j<17;j++)if(s[i][j]-'0'<0||s[i][j]-'0'>9)//对前17位是否都是数字进行判断;break;if(j==17){int z=0;for(j=0;j<17;j++)z+=(s[i][j]-'0')*a[j];//自动转化类型,但是和z+=s[i][j]*a[j]意思不同;z=z%11;//对11取模;根据示例是取余的意思,不是相除if(str[z]!=s[i][17])puts(s[i]);else num++;}else puts(s[i]);}
if(num==n) printf("All passed\n");return 0;
}

代码来源:听着、有旋律的歌

【一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成】相关推荐

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

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

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

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

  3. 校验18位身份证号码(判断最后一位校验位和性别)

    身份证号码组成 公民身份号码是一系列组合码,由十七位数字本体码和一位校验码组成. 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码. 18位身份证最后一位校验码的 ...

  4. C语言——实验一:查验身份证(身份证号码的校验码)

    前言 为什么我这个萌新要来写这篇文章?事情还要从上周三说起. 在上周三的程序设计基础课上,我们老师给我们全班同学布置了一项题为<实验一:查验身份证>的实验作业,这也是我第一次接触到实验作业 ...

  5. H国的身份证号码(搜索)

    个人心得:巧妙利用数字进行维护就好了,深搜还是有点心得的: #1558 : H国的身份证号码I 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H国的身份证号码是一个N位 ...

  6. #1560 : H国的身份证号码II(dp+矩阵快速幂)

    #1560 : H国的身份证号码II 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整 ...

  7. Hiho303周 H国的身份证号码I

    H国的身份证号码I 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整数是合法的身份证号 ...

  8. Hihocoder-H国的身份证号码I

    题目名称:H国的身份证号码I 题目链接:H国的身份证号码I 描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整数是合法的身份证号码当且仅当每位数字都小于等于K, ...

  9. H国身份证号码【多组实例测试】

    题目描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整数是合法的身份证号码当且仅当每位数字都小于等于K,并且任意相邻两位数字的乘积也小于等于K. 例如对于K=5 ...

  10. hihoCoder #1558 : H国的身份证号码I

    题目: 描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整数是合法的身份证号码当且仅当每位数字都小于等于K,并且任意相邻两位数字的乘积也小于等于K. 例如对于K ...

最新文章

  1. 真正的全栈工程师!B站硬核UP主自己造了一个激光雷达
  2. 如何起诉一辆自动驾驶汽车?
  3. Verilog功能模块——串行数据转并行数据
  4. 放学默示录Ⅰ:来!抠奖 移动游戏策划案
  5. 验证码图片 java_验证码图片
  6. M2提示加载客户端版本信息失败的解决办法
  7. 最全经典 | 机器视觉基础知识汇总
  8. 我的团长我的团第十七集
  9. 云杰恒指:9.3恒指期货早盘资讯
  10. 小样本算法库LibFewShot
  11. 安装Redis使用make命令出现make /bin/sh: cc: 未找到命令 make[1]: 离开目录“/usr/local/mytools/redis-5.0.0/src“
  12. 浙江大学计算机科学与技术学院导师,浙江大学计算机科学与技术学院导师介绍:杨莹春...
  13. launch 启动脚本_使用Microsoft Speed Launch快速启动快捷方式
  14. 2020春季学期哈工大软件构造学习心得二
  15. 中科院90多科研人员集体辞职后续:已低调处理,被质疑所长新添重要职务
  16. 具有手摇柴油机带动的油泵和空压机带动的柴油喷嘴的涡轮喷气式飞机
  17. 用PHPnow快速在自己的电脑上搭建PHP虚拟主机
  18. 解决WIN7设备和打印机里空白,0个对象,但是可以打印的办法
  19. 打印准考证没电脑怎么办
  20. 系统安全工程能力成熟度模型SSE-CMM梳理

热门文章

  1. 软件安装教程1——Neo4j下载与安装
  2. python实现遗传算法实例_vn.py发布v2.0.3 - 遗传算法
  3. [FAQ10926][USB serial number客制化][系列5]:如何实现可以通过pc工具来修改serialnumber?
  4. tracepro中文pojie版-tracepro附安装教程
  5. ZooKeeper 的监控
  6. 三星c5怎么改系统语言,三星c5驱动|三星c5手机驱动下载 v1.5.55.0 官方版 - 比克尔下载...
  7. sql server 2005 T-SQL ALTER SCHEMA (Transact-SQL)
  8. Taro 周报 #7: 收获「e代驾」案例,发布 v2.2.16 和 v3.2.0-canary.2
  9. 用友ERP实施流程(不是本人所写,只是个搬运工!)
  10. 怎么把python程序安装到别人电脑上_如何在自己的电脑上安装python的idle版 - 卡饭网...