身份校验:is_id_number;分数:10分
发布时间
阅读量:
阅读量
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
题目描述
据我所知,在我的观察范围内
身份证号码并非毫无规律可循
同一城镇内的同学普遍拥有相同的开头六位数字
随后的八位数字则清晰地记录着出生日期
剩下的四位数字则更像是一个序列号
难道不是说 在原有的身份证号码基础上稍微改动几个数字就能冒充他人?
且慢! 有些同学发现他们的身份证号码末尾并非是‘1’至‘9’中的一个数字
这显然不是件简单易行的事情
任务:编写函数验证身份号码是否有效。
根据GB11643-1999《公民身份号码》国家标准,需求如下:
公民身份号码由十七位数字本体码(master number)和一位数字校验码(check number)组成。
从左到右依次为:六位地址码、八位日期码、三位顺序码、一位校验码。
地址码:略(本题无需检查)
日期码:应为有效的日期(考虑闰年)
顺序码:同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号。奇数分配给男性、偶数分配给女性。
校验码:对本体码的17位数字、分别乘以权值[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]并累加。
补充:权值可以用数组保存,用循环处理。不要写17个变
全部评论 (0)
还没有任何评论哟~
