判斷我國公民的身份證是否合法

2021-07-03 16:52:57 字數 1237 閱讀 6108



//我國公民的身份證號碼特點如下:

//1、     長度為18位;

//2、     第1~17位只能為數字;

//3、     第18位可以是數字或者小寫英文本母x。

//4、     身份證號碼的第7~14位表示持有人生日的年、月、日資訊。

//例如:511002198808080111或51100219880808011x。

//請實現身份證號碼合法性判斷的函式。除滿足以上要求外,需要對持有人生日的年、月、日資訊進行校驗。年份大於等於2023年,

//小於等於2023年。需要考慮閏年、大小月的情況。所謂閏年,能被4整除且不能被100整除 或 能被400整除的年份,閏年的2月份為29天,

//非閏年的2月份為28天。其他情況的合法性校驗,考生不用考慮。函式返回值:

//1)  如果身份證號合法,返回0;

//2)  如果身份證號長度不合法,返回1;

//3)  如果身份證號第1~17位含有非數字的字元,返回2;

//4)  如果身份證號第18位既不是數字也不是英文小寫字母x,返回3;

//5)  如果身份證號的年資訊非法,返回4

//6)  如果身份證號的月資訊非法,返回5;

//7)  如果身份證號的日資訊非法,返回6(請注意閏年的情況);

#include

#include

using namespace std;

int getresult(string s )

if(!isdigit(s[17])&&s[17]!='x')

return 3;

for(int i=6;i<10;i++)

if(y>2100||y<1900)

return 4;

for(int i=10;i<=11;i++)

if(m>12||m<1)

return 5;

for(int i=12;i<=13;i++)

if(d<1||d>31)

return 6;

if(d==31&&(m==4||m==6||m==9||m==11))

return 6;

if(d==30&&(m==1||m==3||m==5||m==7||m==8||m==10||m==12))

return 6;

if(m==2)

}else

return 1;

return 0;

}void main()

js判斷身份證是否合法

function idcardcheck num d 0 9 x test num 校驗位按照iso 7064 1983.mod 11 2的規定生成,x可以認為是數字10。下面分別分析出生日期和校驗位 var len,re len num.length if len 15 d d d d var a...

js判斷身份證是否合法

function idcardcheck num d 0 9 x test num 校驗位按照iso 7064 1983.mod 11 2的規定生成,x可以認為是數字10。下面分別分析出生日期和校驗位 var len,re len num.length if len 15 d d d d var a...

校驗身份證 是否是合法身份證

第1位 第2位第3位 第4位第5位 第6位第7位 第8位第9位 第10位 第11位 第12位 第13位 第14位 第15位 第16位 第17位79 10584 2163 79105 8420 1234 5678 910x 9876 5431 獲取省份 獲取 出生日 獲取性別2 前17位 係數 3in...