最新消息:学生作文网,您身边的作文指导专家!

合法身份证号 合法身份证号大全

小学作文 zuowen 2浏览

【 – 小学作文】

篇一:《身份证号码和手机号码合法性判断》

一.身份证号码合法性判断

问题描述

我国公民的身份证号码特点如下:

1.长度为18位

2.1-17位只能为数字

3.第十八位可以是数字或者小写英文字母

4.身份证号码的第7-14位表示持有人生日的年月日信息

请实现身份证号码合法性判断的函数,除满足以上要求外,需要对持有人生日的年月日信息进行校验,年份大于等于1900,小于等于2100年。需要考虑闰年、大小月的情况。所谓闰年,能被4整除且不能被100整除或能被400整除的年份。闰年2月份为29天,非闰年的2月份为28天。其他情况的合法性校验,不用考虑

函数返回值:

1.如果身份证号合法,返回0

2.如果身份证号长度不合法,返回1

3.如果身份证号第1-17位含有非数字的字符,返回2

4.如果第十八位既不是数字也不是英文小写字母x,返回3

5.如果身份证号的年信息非法,返回4

6.如果身份证号的月信息非法,返回5

7.如果身份证号的日信息非法,返回6(请注意闰年的情况)

注:除成功的情况外,以上其他情况合法性判断的优先级依次降低,也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断

要求实现函数

int verifyIDCard(char *input)

示例:

1.输入:"511002 111222"返回1

2.输入:"511002 abc123456789" 返回2

3.输入:"511002 19880808123a"返回3

4.输入:"511002 188808081234" 返回4

5.输入:"511002 198813081234" 返回5

6.输入:"511002 198808321234"返回6

7.输入:"511002 198902291234"返回7

8.输入:"511002 198808081234"返回0

代码如下:

#include<iostream>

#include<ctype.h>

using namespace std;

int verifyIDCard(char *input)

{

int i; int n=0; int year=0; int month=0; int day=0; char *a=input; for(i=6;i<10;i++) { year=year*10+(a[i]-'0'); } for(i=10;i<12;i++) { } for(i=12;i<14;i++) { day=day*10+(a[i]-'0'); } int len=strlen(input); if(len!=18) { } else { for(i=0;i<17;i++) { } if((a[i]>='0')&&(a[i]<='9')) { } else { } break; n++; cout<<"身份证号长度不合法"<<endl; return 1; month=month*10+(a[i]-'0');{合法身份证号}.

{ if((isdigit(a[17]))||(a[17]=='x')) { if((year>=1900)&&( year <=2100)) { if((month>=1)&&( month <=12)) { if((year%4==0)&&(year%100!=0)||(year%400==0)) {

if(((month==2)&&((day>=1)&&(day<=29)))||(((month>=1)&&(month<=12)&&(month!=2))&&((day>=1)&&(day<=31))))//缺少对每个月具体天数的判断,这里没有考虑

{

cout<<"身份证号码合法"<<endl;

return 0; } else { cout<<"身份证号码日信息非法"<<endl; return 6; } } else {

if(((month==2)&&((day>=1)&&(day<=28)))||(((month>=1)&&(month<=12)&&(month!=2))&&((day>=1)&&(day<=31))))//缺少对每个月具体天数的判断,这里没有考虑

} } { } cout<<"身份证号码合法"<<endl; return 0; else if(((month==2)&&(day==29))) { cout<<year<<"是平年,2月没有29天"<<endl; } else { cout<<"身份证号码日信息非法"<<endl; } return 6; return 7;

}

} } } else { } { } cout<<"身份证号码月信息非法"<<endl; return 5; cout<<"身份证号码年信息非法"<<endl; return 4; else { cout<<"第十八位既不是数字也不是英文小写字母x"<<endl; return 3; } } else { } cout<<"身份证号第1-17位含有非数字的字符"<<endl; return 2;

int main()

{

int verifyIDCard(char *input);

}

int result; char *p=NULL; while(1) { } return 0; p=(char *)malloc(50); printf("请输入身份证号码:\n"); scanf("%s",p); result=verifyIDCard(p); printf("%d\n",result); free(p);

测试结果:

二.手机号码合法性判断

问题描述:

我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:

1、 长度13位;

2、 以86的国家码打头;

3、 手机号码的每一位都是数字。

请实现手机号码合法性判断的函数要求:

1) 如果手机号码合法,返回0;

2) 如果手机号码长度不合法,返回1

3) 如果手机号码中包含非数字的字符,返回2;

4) 如果手机号码不是以86打头的,返回3;

【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。

要求实现函数:

篇二:《java判断输入身份证号的合法性》

package day0407;

import java.util.Scanner;

public class RegUtils {

/**

* 身份证号合法性校验

* 该程序实现的功能:

* 1.判断输入身份证号是否准确,如不正确,重新输入,直到输入正确为止; * 2.判断身份证的合法性;

* 3.根据有效身份证信息,得出主人的出生年月日以及判断性别

*/

private static final int[] weight=new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//乘以的系数

private static final int[] checkDigit=new int[]{1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 };//对应的校验码

public static void main(String[] args){

Scanner sc=new Scanner(System.in);

String id;

int[] arr=new int[18];

int sum=0;

int flag=0;

System.out.println("请输入身份证号码:");

id=sc.next();

while(id.matches("^\\d{17}[0-9X]$")==false){

System.out.println("ERROR!输入有误!请重新输入");

id=sc.next();

}

for(int i=0;i<18;i++){

arr[i]= Integer.parseInt(id.substring(i, i+1)); //使用

IdentityCard.substring(i, i+1)方法可取出号码的每一位

if(i!=17){

sum+=weight[i]*arr[i];

}

}

flag=sum%11; //得出余数

if(checkDigit[flag]==arr[arr.length-1]){

System.out.println("您的身份证是合法的!");

System.out.println("你的出生年月日为:"+id.substring(6, 14)); //可以根据身份证号知道出生年月日

System.out.println("你的性别为:"+(arr[16]%2==0?"女":"男")); //可以根据身份证号判断男女{合法身份证号}.

}else{

System.out.println("您的身份证是不合法的!");

}

}

}

篇三:《身份证号码的含义》

身份证号码各位的含义

新的18位身份证号码各位的含义:

1-2位省、自治区、直辖市代码;

3-4位地级市、盟、自治州代码;

5-6位县、县级市、区代码;

7-14位出生年月日,比如19670401代表1967年4月1日;

15-17位为顺序号,其中17位男为单数,女为双数;

18位为校验码,0-9和X,由公式随机产生。{合法身份证号}.

举例:

130503 19670401 0012这个身份证号的含义: 13为河北,05为邢台,03为桥西区,出生日期为1967年4月1日,顺序号为001,2为验证码。

15位身份证号码各位的含义:

1-2位省、自治区、直辖市代码;

3-4位地级市、盟、自治州代码;

5-6位县、县级市、区代码;

7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别; 13-15位为顺序号,其中15位男为单数,女为双数;

与18位身份证号的第二个区别:没有最后一位的验证码。

举例:

130503 670401 001的含义; 13为河北,05为邢台,03为桥西区,出生日期为1967年4月1日,顺序号为001。

居民身份证是国家法定的证明公民个人身份的证件。为了堵塞和制止假居民身份证的流通和使用,在查验和核查居民身份证时可掌握以下几个要点:

一、居民身份证的整体识别

1、居民身份证规格为88mm×60mm,四角呈圆弧状。式样为聚脂薄膜密封、持证人像片和登记内容一体化的单页卡式,即证件是经翻拍印制后塑封而成。

2、证件正面主要颜色为红、绿二色,印有中华人民共和国国徽和证件名称,以及环状、网状、团状花纹图案;背面为浅绿色,印有中华人民共和国版图、持证人标准像片,以及网状花纹图案,姓名、性别、民族、出生年月日、住址五个登记项目和签发日期、有效期限、编号三个项目及签发机关印章。新的防伪居民身份证背面透视全息图象由长城峰火台图象IDCHINA中国等字样组成。“ID长城峰火台图象CHINA中国”在“中国CHINAID”组成的背景前由内向外依次排列。 证件签发机关为县公安局、不设区的市公安局和设区的公安分局。

3、居民身份证从登记项目、填写内容和颜色上还有其他两种形式:

a.民族自治地方颁发的居民身份证。

证件背面五个登记项目和签发机关印章,同时使用汉字和相应的少数民族文字印刷和刻制(宁夏回族自治区除外)。常见的少数民族文字有:维吾尔文、哈萨克文、蒙古文、藏文、朝鲜文、壮文、彝文等。

证件“出生年月日”的登记项目改为“出生日期”。如:内地和经济特区颁发的证件,登记为“出生1949年10月1日”,民族自治地方颁发的证件则登记为“出生日期1949.10.1”。 证件填写内容分为只书写汉字(如广西壮族自治区和内蒙古自治区部分地区)和同时书写汉字和少数民族文字(如新疆维吾尔自治区、西藏自治区、内蒙古自治区部分地区、吉林省延边朝鲜族自治州和四川、云南、青海、甘肃、黑龙江、吉林、辽宁等省部分民族自治地方)两类。少数民族文字在上方,汉字在下方(蒙古文文字在左,汉字在右)。

对加入中国国籍的外国人,如本人的民族名称与我国民族名称不同,本人是什么民族就填写什么民族,但民族名称后应加注“入籍”二字,如“民族乌克兰(入籍)”。

b.经济特区颁发的居民身份证识别:

{合法身份证号}.

证件正面主体颜色为海蓝色,背面为浅蓝色。证件背面右上角有一个压模全息特殊标记,规格为9mm×12mm的全息标志图案。海南省经济特区的全息标志图案为五指山和太阳;深圳、珠海、汕头和厦门经济特区的全息标志图案为有带“T”字的盾牌符号。

二、居民身份证有效期限与持证人年龄、签发日期的关系

居民身份证的有效期限分为10年、20年、长期三种。16周岁至25周岁的,发给有效期为10年的居民身份证;26周岁至45周岁的,发给有效期为20年的居民身份证;46周岁以上的,发给长期有效的居民身份证。证件有效期限从签发之日起计算。如某人1949年9月20日出生,1984年35周岁时申领居民身份证,签发日期为1984年12月31日,他属于26至45周岁这一年龄段,证件有效期限属于20年这一档次,到2004年12月30日有效期满。

查验或检查时,应对照检查证件有效期限与持证人年龄,签发日期三者之间的关系。

三、居民身份证编号识别

1、身份证编码规则如下:根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码(身份证前六位)表示编码对象第一次申领居民身份证时的常住户口所在县(市、旗、区)的行政区划代码。(所有区域的编码可以到这个网站

生日期码(身份证第七位到第十四位)表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。

顺序码(身份证第十五位到十七位)是县、区级政府所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。如:007的就是个男生,而且和他同年月日生的男生至少有两个,他们的后四位是001*和003*。分配顺序码中“999、998、997、996”四个顺序号分别为男女性百岁以上老人专用的特定编号。

校验码(身份证最后一位)是根据前面十七位数字码,按照ISO7064:1983.MOD11-2校验码计算出来的检验码。

2、从1999年10月1日起,全国实行公民身份证号码制度,居民身份证编号由原15位升至18位。前6位为地址码;第七位至14位为出生日期码,此码由6位数改为8位数,其中年份用4位数表示;第15位至17位为顺序码,取消了顺序码中对百岁老人使用的特定编号;第十八位为校验码,主要是为了校验计算机输入公民身份证号码的前17位数字是否正确,其取值范围是0至10,当值等于10时,用罗马数字符χ表示。

四、临时身份证识别

临时身份证规格、登记项目均与居民身份证相同。临时身份证正面为长城、群山和网状花纹图案,颜色为蓝色。背面为网状图案,颜色为黄色。临时身份证使用与本人身份证相同的编号;常住户口特定人员的临时身份证编号也按居民身份证编号原则和方法编15位码。

临时身份证有效期限分为3个月和一年两种:尚待领取居民身份证或证件丢失、损坏尚待领补人员发给有效期3个月的临时身份证,使用阿拉伯数字填写;常住户口特定人员发给有效期一年的临时身份证,使用汉字填写。

经济特区使用的临时身份证不加特区全息标记和荧光印刷图案。

五、身份证第18位(校验码)的计算方法

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。

5、通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。

例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。{合法身份证号}.

首先我们得出前17位的乘积和是189,然后用189除以11得出的结果是17+2/11,也就是说其余数是2。最后通过对应规则就可以知道余数2对应的数字是x。所以,可以判定这是一个合格的身份证号码。

备注说明:关于大陆身份证有的人会发现前几位为什么变化了。这主要出现在中国的重庆。原有的重庆人的身份证多数以51开头。以前隶属于四川的原因。但新办的身份证可能是50开头,原因是行政区划改变所致。

最新县及县以上行政区划代码(截止2007年12月31日)

2008-02-15 09:21:37

代码 名称

110000 北京市

110100 市辖区

110101 东城区

110102 西城区

110103 崇文区{合法身份证号}.

110104 宣武区

110105 朝阳区

110106

110107

110108

110109 丰台区 石景山区 海淀区 门头沟区

110111 房山区

110112 通州区

110113 顺义区

110114 昌平区

110115 大兴区

110116 怀柔区

110117 平谷区

110200 县

110228 密云县

110229 延庆县

120000 天津市

120100 市辖区 120101

120102

120103

120104

120106

120107

120108

120109 和平区 河东区 河西区 南开区 红桥区 塘沽区 汉沽区 大港区 120105 河北区 120110 东丽区 120111 西青区 120112 津南区 120113 北辰区 120114 武清区 120115 宝坻区 120200 县

120221 宁河县 120223 静海县 120225 蓟 县 130000 河北省

130100 石家庄市 130101 市辖区 130102 长安区 130103 桥东区 130104 桥西区 130105 新华区 130107 井陉矿区 130108 裕华区 130121 井陉县 130123 正定县 130124 栾城县 130125 行唐县 130126 灵寿县 130127 高邑县 130128 深泽县 130129 赞皇县 130130 无极县 130131 平山县 130132

130133

130181

130182 元氏县 赵 县 辛集市 藁城市

篇四:《详解身份证的秘密》

详解身份证的秘密

1. 二代身份证分俩中字体:

①OCR-B 10 BT(身份证下方18位数字用的),②华文细黑(姓名性别出身日期地址用的)③上面的住址,不管怎么长,第一行都是11个汉字,多余的换到下面一行去,呵呵。④有效期限是方正美黑⑤第二代身份证为由多层聚酯材料复合而成的单页卡式证件,长度85.6mm,宽度54mm,厚度0.9mm。⑥第二代身份证证件正面印有国徽、证件名称、长城图案、证件的签发机关和有效期限及彩色花纹。⑦正面 “姓名”、“性别”、“民族”、“出生年月日”、“住址”、“公民身份号码”为6号黑体字,用蓝色油墨印刷;登记项目中的姓名项用5号黑体字印刷;其他项目则用小5号黑体字印刷;⑧身份证上自己的姓名的字体是什么字体?出生年月日 方正黑体简体字符大小:姓名+号码(11点)其他(9点)字符间距(AV):号码(50)字符行距:住址(12点⑨身份证上自己的身份证号码的字体是什么字体呢?身份证号码字体 OCR-B 10 BT 文字 华文细黑⑩背面 左上角为国徽,用红色油墨印刷;其右侧为证件名称“中华人民共和国居民身份证”,分上下两排排列,其中上排的“中华人民共和国”为4号宋体字,下排的“居民身份证”为2号宋体字;“签发机关”、“有效期限”为6号加粗黑体字;签发机关登记项采用,“xx市公安局”;有效期限采用“xxxx.xx-xxxx.xx.xx”格式,使用的是Dotum字体,全部用黑色油墨印刷。

一、有效期限

居民身份证的有效期限分为10年、20年、长期三种。16周岁至25周岁的,发给有效期为10年的居民身份证;26周岁至45周岁的,发给有效期为20年的居民身份证;46周岁以上的,发给长期有效的居民身份证。证件有效期限从签发之日起计算。如某人1990年9月20日出生,2008年18周岁时申领居民身份证,签发日期为2008年12月31日,他属于16至25周岁这一年龄段,证件有效期限属于10年这一档次,到2018年12月30日有效期满。

那么,又有人会问,为什么北京身份证是1开头的,而河南的就是4开头的呢?身份证上的数字是什么意思呢?

二、号码构成

1 、地址码

(身份证号码前六位)表示编码对象常住户口所在县(市、镇、区)的行政区划代码。1-2位省、自治区、直辖市代码; 3-4位地级市、省、自治州代码; 5-6位县、县级市、区代码。

2 、生日期码

(身份证号码第七位到第十四位)表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。

3 、顺序码

(身份证号码第十五位到十七位)地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。其中第十七位奇数分给男性,偶数分给女性。

4 、校验码

(身份证号码最后一位)是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的。

那么为什么会有人的身份证后面的数字是X呢?

如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且中国的计算机应用系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

篇五:《身份证号码举例》

身份证号码举例

身份证整个号码的含义是什么?

18位身份证号码各位的含义:

1-2位省、自治区、直辖市代码;

3-4位地级市、盟、自治州代码;

5-6位县、县级市、区代码;

7-14位出生年月日,比如19670401代表1967年4月1日;

15-17位为顺序号,其中17位(倒数第二位)男为单数,女为双数;

18位为校验码,0-9和X。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,计算的结果是0-10,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。X是罗马

数字的10,用X来代替10。

举例:

130503 19670401 0012这个身份证号的含义: 13为河北,05为邢台,03为桥西区,

出生日期为1967年4月1日,顺序号为001,2为校验码。

15位身份证号码各位的含义:

1-2位省、自治区、直辖市代码;

3-4位地级市、盟、自治州代码;

5-6位县、县级市、区代码;

7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别;

13-15位为顺序号,其中15位男为单数,女为双数;

与18位身份证号的第二个区别:没有最后一位的校验码。

举例:

130503 670401 001的含义; 13为河北,05为邢台,03为桥西区,出生日期为1967

年4月1日,顺序号为001。

Excel身份证号码校验实例

身份证号码是按照一定规律编制的,是个人身份的有效证明,每个人只有一个号码,且不会重复,因而被各单位各部门广泛应用在相关名册中。在大量的身份证号码录入过程中,由于抄写或录入等原因,可能会弄错了某位数字,如果录错了任何一位数字,计算出来的校验码就不一样。根据这一特点,本函数可以对已录入的大批量身份证号码进行校验,如果校验未通过,则说明你录入的号码中必定是某位数字错了,应及时更正,以保证身份证号码正确有效,如果录入的是第一代15位身份证号码,本函数将返回18位号码,使身份证号码保持

统一的位数。

{合法身份证号}.

代码如下:

Function IDcheck(ID) '身份证号码校验函数

Dim s, i As Integer

Dim e, z As String

Part1: '—————————-身份证号码合法性检查—————————————

If Not (Len(ID) = 18 Or Len(ID) = 15) Then '位数检验

IDcheck = "位数错误"

Exit Function

Else

If Len(ID) = 15 Then ID = Left(ID, 6) & "19" & Right(ID, 9)

If IsNumeric(Left(ID, 17)) = False Or InStr(ID, ".") > 0 Then '字符检验

IDcheck = "字符错误"

Exit Function

End If

On Error Resume Next '日期检验

If DateValue(Mid(ID, 7, 4) & "-" & Mid(ID, 11, 2) & "-" & Mid(ID, 13, 2)) < 1 Or _

DateValue(Mid(ID, 7, 4) & "-" & Mid(ID, 11, 2) & "-" & Mid(ID, 13, 2)) > Date Then

IDcheck = "日期错误"

Exit Function

End If

End If

Part2:

s = 0

For i = 1 To 17{合法身份证号}.

s = s + Val(Mid(ID, 18 – i, 1)) * (2 ^ i Mod 11)

Next

e = Mid("10X98765432", (s Mod 11) + 1, 1) '生成校验码 '—————————–校验码的生成及检查—————————————-

If Len(ID) = 18 Then

z = UCase(Right(ID, 1))

If z = e Then '校验码对比

IDcheck = "通过"

Else

IDcheck = "校验未通过" '如果要返回校验码,请把本行语句改为:IDcheck = e

End If

Else

IDcheck = ID & e '15位身份证号码升位

End If

End Function '编写 474589791 2011年6月11日

使用方法:

一、建立函数

1、打开excel,点击菜单的“工具→宏→录制新宏”,弹出录制新宏对话框。

2、在“保存在”下面选择“个人宏工作簿”,点击确定。(选择个人宏工作簿有2大好处:①使本函数可应用于当前计算机中所有的excel工作表;②不受宏安全性设置高低的影响。)

3、在弹出的录制宏工具中点击“停止录制”按钮,结束宏的录制。

{合法身份证号}.

4、点击菜单的“工具→宏→Visual Basic 编辑器”,打开编辑器。

转载请注明:中小学优秀作文大全_作文模板_写作指导_范文大全 » 合法身份证号 合法身份证号大全