#Z04046013. 身份证号码
身份证号码
题目描述:
十八位居民身份证号码由 6 位地址码、8 位出生日期码、3 位顺序码和 1 位校验码组成(倒数第 2 位是性别代码,男单女双),其格式如图所示。
其中校验码的计算方法如下:
(1)将身份证号码的前 17 位数字分别乘以对应的系数,对应关系如下表。
号码位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 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 |
---|---|---|---|---|---|---|---|---|---|---|---|
校验码 | 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
现用 C++编程验证身份证号码的正确性,并识别其中所包含的出生日期和性别信息。
输入格式:
一行,18位数字的身份证号。
输出格式:
如果验证成功,输出出生日期,及性别(male, female )。
如果验证失败,输出“wrong!”。
样例输入:
样例1:
330326199807071166
样例2:
330326199807071616
样例输出:
样例1:
1998-07-07,female
样例2:
wrong!
相关
在以下作业中: