7-4 身份证号码最后一位 (100分)
身份证编码规则如下:根据〖中华人民共和国国家标准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位的乘积和【(57)+(39)+(010)+(15)+(08)+(24)+(12)+(91)+(26)+(03)+(07)+(59)+(010)+(85)+(08)+(14)+(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>
#include<string.h>
int main()
{char A[19]={"\0"};int bb[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char bk[11]={'1','0','X','9','8','7','6','5','4','3','2'};int a=0,b,c,n,i;scanf("%d",&n);while(n--){scanf("%s",A);b=strlen(A);a=0;for(i=0;i<17;++i){if(A[i]!='X'){c=(int)(A[i]-'0')*bb[i];}else c=bb[i];a+=c;}if(bk[a%11]==A[17]){printf("right\n");}else printf("wrong\n");}return 0;
}

7-4 身份证号码最后一位 (100分)相关推荐

  1. 7-51 实验9_2_身份证号码最后一位 (100 分)

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

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

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

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

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

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

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

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

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

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

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

  7. 身份证号码是18位数字字符构成的字符串,输入一个身份证号码判断该号码拥有者的性别

    /*身份证号码是18位数字字符构成的字符串,输入一个身份证号码判断该号码拥有者的性别 提示:第17为数字字符奇数为男,偶数为女 */ #include #include #include #inclu ...

  8. Excel如何快速将15位身份证号码转为18位

    今天跟大家分享一下Excel如何快速将15位身份证号码转为18位 ​ 1.首先我们选中身份证号码单元格区域 2.点击[DIY工具箱] 3.点击[身份证]选择[15位身份证证升18位] 4.点击[确定] ...

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

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

最新文章

  1. Android Studio开发入门-引用jar及so文件
  2. 操作系统实现(一):从Bootloader到ELF内核
  3. js字符串的操作方法
  4. ABAP 7.4 新语法-内嵌生命和内表操作
  5. 电子测量与仪器第四版pdf_固定资产管理系统_资产分类名称(电子和通信测量分析仪器篇)...
  6. 明天就要离开上海了!
  7. 计算机网络:网络设备知识笔记
  8. 阿里P8架构师谈:数据库、JVM、缓存、SQL等性能调优方法和原则
  9. xml--Schema约束
  10. Spring Cloud Stream与RabbitMQ 死信队列
  11. linxu 启动过程分析
  12. FusionCharts的使用方法
  13. logo下方显示技术支持信息_用“技术支持信息”显示的OEM信息备份修改方法
  14. 市场调研-全球与中国旋转阻尼器市场现状及未来发展趋势
  15. 《JeolOnSoftware》
  16. Android编程随机抽奖,Android 滚动抽奖的实现
  17. 无效的列类型: 1111
  18. [Introduction to AI] Local Search::Hill Climbing (最陡上升)
  19. android美柚日历控件,仿美柚大姨妈日历
  20. 自考深圳大学计算机专业难吗,深圳大学自考难吗

热门文章

  1. ubuntu20.04安装opencv4.7
  2. vue antd table customRender 自定义标签
  3. Hive 插入数据报错FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask.
  4. 红外线探测报警器的简单设计
  5. win10计算机图标怎么放桌面壁纸,图解win7、win10创意电脑桌面图标摆放的方法
  6. Linux 用户管理 文件目录指令 时间日期指令 搜索查找类 解压压缩类
  7. 「订单」业务的设计与实现
  8. oracle 中此处列不允许,oracle 此地不允许序列
  9. 数字转字符串;字符串转数字
  10. Qt Qss 渐变颜色设置