身份证编码规则如下:根据〖中华人民共和国国家标准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位保证符合身份证号码的要求,罗马数字X就是大写的英文字母X)。

输出格式:

T行,与输入的T行测试数据相对应,如果该行测试数据最后一位符合所述算法则输出right,否则输出wrong。

输入样例:

2
34052419800101001X
310105199412049278

输出样例:

right
wrong

这个题我实在不想写第二遍,大家康康我以前写的代码吧

#include<stdio.h>
int main()
{int n = 0;scanf("%d", &n);char ar[100][18] = { 0 };int i = 0, j = 0, k = 0;for (i = 0; i < n; i++)scanf("%s", &ar[i]);char pand[11] = { 1,0,'X',9,8,7,6,5,4,3,2 };for (i = 0; i < n; i++){k = pack(ar, i);if (ar[i][17] == 'X'){if (pand[k] == ar[i][17])printf("right\n");elseprintf("wrong\n");}else {if (pand[k] == (ar[i][17] - 48))printf("right\n");elseprintf("wrong\n");}}return 0;
}
int pack(char ar[100][18], int i)
{int p[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };int k = 0, zhi = 0;for (k = 0; k < 17; k++)zhi += p[k] * (ar[i][k] - 48);return zhi % 11;
}

就离谱

7-51 实验9_2_身份证号码最后一位 (100 分)相关推荐

  1. 7-4 身份证号码最后一位 (100分)

    7-4 身份证号码最后一位 (100分) 身份证编码规则如下:根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验 ...

  2. 实验9_2_身份证号码最后一位

    身份证编码规则如下:根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成. 顺序码(身份证第十五位到十七位) ...

  3. 7-2 实验9_2_身份证号码最后一位

    身份证编码规则如下:根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成. 顺序码(身份证第十五位到十七位) ...

  4. 实验7-4 身份证号码最后一位

    身份证编码规则如下:根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成. 顺序码(身份证第十五位到十七位) ...

  5. 输入身份证判断性别python最后一位是英文怎么写_身份证号码最后一位,是表示性别用的吗?...

    展开全部 表示性别是倒数第二位,偶为女单为男. 最后一位是数字校验码,主要是为了校验计算机输入公民身份e68a84e8a2ad62616964757a686964616f31333365633963证 ...

  6. 【转载】 身份证号码校验(15位和18位都可以)

    转载自: 开源中国社区    面向对象的15位.18位中国大陆身份证号码解析.验证工具 import java.text.ParseException; import java.text.Simple ...

  7. 关于18位身份证号码最后一位计算(Java实现)

    关于18位身份证号码最后一位计算(Java实现) 现代的身份证号码长度都是18位的,但是只要知道前17位便可推出第18位数字或者字母(第18位为0,1,...,9和X中的一个).也就是说,国内不存在前 ...

  8. 编写函数,实现对身份证号码最后一位的验证

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

  9. 18位身份证号码最后一位校验码的计算方法

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

最新文章

  1. aes离线解密工具_CTF常用工具、网站、练习平台
  2. 网络营销推广解答网站排名上下摇摆不定怎么办?
  3. Android当中layer-list使用来实现多个图层堆叠到一块儿
  4. Struts 2常见应用
  5. C++ STL string字符串替换 replace函数的使用
  6. 替罪羊树模板(封装版)-----转自知乎
  7. MCS:连续随机变量——Erlang分布
  8. c 程序设计语言第一次作业,重大2017年C++程序设计语言第一次作业(含答案).doc...
  9. windows系统迁移,C盘搬家
  10. 刚体运动学公式_经典运动学公式汇总
  11. 技嘉主板bios怎么进入,如何进入技嘉主板的bios
  12. Python自动发抖音脚本教程(1:介绍和源码)
  13. Java 添加Word脚注、尾注
  14. Mac m1 tensorflow 内核似乎挂掉了,它很快将自动重启
  15. CSS文本溢出打点显示
  16. 电脑分屏没有声音_Win10笔记本增加双屏显示器及解决没有声音的问题
  17. 一寸照像素和厘米的关系及换算
  18. 最全 | 全国31个省市区重点产业布局
  19. 2013-8-17 上周工作总结
  20. python语言与蟒蛇_1、python语言是一种“大蟒蛇语言‘’,但是python语言却和蟒蛇没有任何关系_学小易找答案...

热门文章

  1. DreamMail无法登录Gmail的SMTP发送邮件的解决办法
  2. 移动考勤管理系统有什么优势
  3. 室内精准定位市场大洗牌,蓝牙定位是否会成为主流?
  4. NoSQL和RDBMS
  5. 九州云与英特尔联合发布智慧校园私有云框架,赋能教育新基建
  6. 【XML】xml封装方法
  7. 无线黑名单实现(将终端踢下线同时禁止终端再次连接)
  8. Termius:一款跨平台免费SSH客户端工具,支持WIN/MAC平台
  9. SSL/TLS 漏洞“受戒礼”,RC4算法关闭
  10. DCMM各地区政策奖励情况