实验7-4 身份证号码最后一位
身份证编码规则如下:根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。
顺序码(身份证第十五位到十七位)是县级公安机关所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。如:005的就是个男性,而且和他同年月日生的男性至少有两个,他们的后四位是001* 和003* 。分配顺序码中“999、998、997、996”四个顺序号分别为男女性百岁以上老人专用的特定编号。 校验码(身份证最后一位)是根据前面十七位数字码,按照ISO7064:1983.MOD11-2校验码计算出来的检验码。
从1999年10月1日起,全国实行公民身份证号码制度,居民身份证编号由原15位升至18位。前6位为地址码;第七位至14位为出生日期码,此码由6位数改为8位数,其中年份用4位数表示;第15位至17位为顺序码,取消了顺序码中对百岁老人使用的特定编号;第十八位为校验码,主要是为了校验计算机输入公民身份证号码的前17位数字是否正确,其取值范围是0至10,当值等于10时,用罗马数字符X表示。
计算方法
1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2;
2、将这17位数字和系数相乘的结果相加;
3、用加出来和除以11,看余数是多少;
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。(即余数0对应1,余数1对应0,余数2对应X…);
5、通过上面得知如果余数是3,就会在身份证的第18位数字上出现的是9。如果对应的数字是2,身份证的最后一位号码就是罗马数字X。
例如:某男性的身份证号码为【53010219200508011X】, 我们看看这个身份证是不是符合计算规则的身份证。
首先我们得出前17位的乘积和【(5 * 7)+(3 * 9)+(0 * 10)+(1 * 5)+(0 * 8)+(2 * 4)+(1 * 2)+(9 * 1)+(2 * 6)+(0 * 3)+(0 * 7)+(5 * 9)+(0 * 10)+(8 * 5)+(0 * 8)+(1 * 4)+(1 * 2)】是189,然后用189除以11得出的结果是189÷11=17余下2,187÷11=17,还剩下2不能被除尽,也就是说其余数是2。最后通过对应规则就可以知道余数2对应的检验码是X。所以,可以判定这是一个正确的身份证号码。
现在请你写一段程序来判断一个身份证号码的最后一位是否与上述规则相符。
输入格式:
第一行一个整数T(0<T<100),表示有T行测试数据。后边是T行每行是一个18位的身份证号码(测试数据前17位保证符合身份证号码的要求)。
输出格式:
T行,与输入的T行测试数据相对应,如果该行测试数据最后一位符合所述算法则输出right,否则输出wrong。
输入样例:
2
34052419800101001X
310105199412049278
输出样例:
right
wrong
代码实现:
#include<stdio.h>
int main()
{int t;scanf("%d",&t);int num[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char r[]={'1','0','X','9','8','7','6','5','4','3','2'};//必须为‘’ getchar();for(int i=0;i<t;i++){char a[50];gets(a);int sum=0;//高亮 int s=0;//高亮 for(int j=0;j<17;j++){sum+=num[j]*((int)(a[j]-'0'));}s=sum%11;if(a[17]==r[s]) {printf("right\n");}else{printf("wrong\n");}}return 0;
}
实验7-4 身份证号码最后一位相关推荐
- 输入身份证判断性别python最后一位是英文怎么写_身份证号码最后一位,是表示性别用的吗?...
展开全部 表示性别是倒数第二位,偶为女单为男. 最后一位是数字校验码,主要是为了校验计算机输入公民身份e68a84e8a2ad62616964757a686964616f31333365633963证 ...
- 【转载】 身份证号码校验(15位和18位都可以)
转载自: 开源中国社区 面向对象的15位.18位中国大陆身份证号码解析.验证工具 import java.text.ParseException; import java.text.Simple ...
- 关于18位身份证号码最后一位计算(Java实现)
关于18位身份证号码最后一位计算(Java实现) 现代的身份证号码长度都是18位的,但是只要知道前17位便可推出第18位数字或者字母(第18位为0,1,...,9和X中的一个).也就是说,国内不存在前 ...
- 编写函数,实现对身份证号码最后一位的验证
二代身份证号码为18位,其最后一位(第18位)的计算方法为: 1. 将前面的身份证号码17位数分别乘以不同的系数.从第一位到第十七位的系数分别为: 7-9-10-5-8-4-2-1-6-3-7-9-1 ...
- 7-4 身份证号码最后一位 (100分)
7-4 身份证号码最后一位 (100分) 身份证编码规则如下:根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验 ...
- 18位身份证号码最后一位校验码的计算方法
介绍18位身份证号码最后一位校验码的计算方法 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. ...
- 身份证号码是18位数字字符构成的字符串,输入一个身份证号码判断该号码拥有者的性别
/*身份证号码是18位数字字符构成的字符串,输入一个身份证号码判断该号码拥有者的性别 提示:第17为数字字符奇数为男,偶数为女 */ #include #include #include #inclu ...
- Excel如何快速将15位身份证号码转为18位
今天跟大家分享一下Excel如何快速将15位身份证号码转为18位 1.首先我们选中身份证号码单元格区域 2.点击[DIY工具箱] 3.点击[身份证]选择[15位身份证证升18位] 4.点击[确定] ...
- 实验9_2_身份证号码最后一位
身份证编码规则如下:根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成. 顺序码(身份证第十五位到十七位) ...
最新文章
- 循环神经网络实现文本情感分类之使用LSTM完成文本情感分类
- 开启Windows7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP)
- 玩转Regsvr32命令
- Java中判断两字符是否相等?
- python编写自动化脚本 与shell_脚本安装Discuz论坛(shell + Python 实现自动化安装)...
- 在html中怎么在按回车的时候换到下一个文本框_史上最全的HTML、CSS知识点总结,浅显易懂。适合入门新手...
- 372. Super Pow
- APS如何入门1-综述
- Python实训-15天-博客汇总表
- JavaScript中短时间高频次触发事件的优化
- os.environ[‘CUDA_VISIBLE_DEVICES‘]= ‘0‘设置环境变量
- linux非编工作站,高清EDIUS非编网络系统建设 在线非编系统
- SVO: Fast Semi-Direct Monocular Visual Odometry
- ios UICollectionViewLayout 横向瀑布流
- xu2w显示屏软件下载_LED显示屏控制软件(LED BEST)
- 三种隐藏 HTML 元素的方式
- 计算机实验原理word,完整word版计算机组成原理实验报告 微控制器
- Ubuntu 下如何下载GitHub里的文件 和 GRC结合hackrf 实现GMSK文本传输
- vba CAD提取图元属性
- 月薪3万的大厂程序员裸辞3个月,送外卖谋生背后的真实感悟
热门文章
- python爬取pubmed的文献_爬虫获取pubmed中文献的标题和摘要
- 【进阶实战】用PaddlePaddle检测空气质量
- iOS获取文件夹下所有的文件
- Android3D抽方块源码,block puzzle jewel 方块拼图消除游戏安卓源码
- android.view.InflateException: Binary XML file line #22: Binary XML file line #22:: Error inflating
- 电路原理笔记整理,电路原理知识点总结.doc
- 阿里云服务器ECS 搭建网站
- 520探讨一下如何给geek男友选礼物?(超实用)
- 被企业微信吓到了吗?离做到极致还早
- 安全合规/GDPR--24--研究:GDPR合规体系设立与执行