身份證號碼

2021-10-19 09:23:20 字數 1317 閱讀 2809

每乙個人自出生後都會有乙個身份證號碼。根據我國有關部門規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為:六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。居民身份證是國家法定的證明公民個人身份的有效證件。例如:對於身份證號碼330719196804253671,其中330719表示位址碼,19680425表示出生日期碼,367表示順序碼,最後乙個1表示數字校驗碼。

數字校驗碼的計算方法:

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、通過上面得知如果餘數是3,就會在身份證的第18位數字上出現的是9。如果對應的數字是2,身份證的最後一位號碼就是羅馬數字x。

例如:某人的身份證號碼為[53010219200508011x],我們看看這個身份證是不是合法的

身份證。首先我們得出前17位的乘積和

[ (57)+(39)+(010)+(15)+(08)+(24)+(12)+(91)+(26)+(03)+(07)+(59)+(0*

10)+(85)+(08)+(14)+(12) ]是189,然後用189除以11得出的結果是189/11=17—2,也就是說其餘數是2。最後通過對應規則就可以知道餘數2對應的檢驗碼是x。所以,可以判定這是乙個正確的身份證號碼。

你的任務是編寫程式判斷輸入的身份證號碼中數字校驗碼是否正確,如果正確,則僅輸出「right」;如果錯誤,則輸出你認為是正確的身份證號碼。

輸入有多行,每一行是乙個字串行,表示乙個人的身份證號碼(保證輸入符合身份證號碼的格式要求)。

對於每一行輸入,假如輸入的身份證號碼的數字校驗碼正確,那麼輸出「right」,否則,按照規定的格式,輸出正確的身份證號碼。

輸入樣例1:

330719196804253671

輸出樣例1:

right

53010219200508011x

【耗時限制】1000ms 【記憶體限制】128mb

#includeusing namespace std;

const int a[17]=;

const char b[11]=;

int main()

sum=sum%11;

if(b[sum]==s[17]){

cout<<"right"

身份證號碼驗證

說明 驗證身份證的有效性 引數 cid 身份證號碼 返回 地方 出生時間 性別 private string checkcidinfo string cid if cid.length 18 char c cid cid.length 1 bool last false if c 0 c 9 c a...

身份證號碼檢測

華為的上機題 我國公民的身份證號碼特點如下 1 長度為18位 2 第1 17位只能為數字 3 第18位可以是數字或者小寫英文本母x。4 身份證號碼的第7 14位表示持有人生日的年 月 日資訊。例如 511002 19880808 0111或511002 19880808011x。請實現身份證號碼合法...

驗證身份證號碼

好久沒更新了,今天簽到啦。感覺這個驗證挺重要的,也挺常用的,所以分享給需要的朋友。驗證身份證號碼,在網上找到的好東東 function checkidcard idcard var idcard,y,jym var s,m var idcard array new array idcard arra...