判斷身分證是否正確,檢查的原則說明如下:
(A)格式:共有十位,第一位為大寫字母,後九位為數字,表示如下:
L1 |
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
D8 |
D9 |
(B)性別判定:D1只可為1或2,1表男性、2表女性。
(C)檢查辦法:
(a)、字母L1由下列表中,找到其代號兩位,令其為X1,X2。X1為十位數,X2為個位數。
字母 |
A |
B |
C |
D |
E |
F |
G |
H |
J |
K |
L |
M |
N |
代號 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
字母 |
P |
Q |
R |
S |
T |
U |
V |
X |
Y |
W |
Z |
I |
O |
代號 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
(b)計算方法:
Y=X1+9*X2+8*D1+7*D2+6*D3+5*D4+4*D5+3*D6+2*D7+D8+D9
如果Y能被10整除,則表示此身分證號碼正確。
【輸入檔案格式】有多筆資料,每筆資料有三個用逗點分開的字元型態資料,依次代表身分證號碼、姓名、性別。
【輸出檔案格式】
依前述原則檢查每筆資料,並列出下列錯誤狀況。
(1)格式錯誤:依(A)檢查若有錯,則列印FORMAT ERROR。
(2)性別錯誤:依(B)檢查及核對檔案內的D1欄位是否符合,若有錯則列印SEX CODE ERROR。(※資料中M是男性,F是女性)
(3)檢核數錯誤:依(C)檢查若有錯,則列印CHECK SUM ERROR。
※請依(A),(B)(C)順序檢查,只列出第一個檢查出的錯誤狀況。
※在印出結果時,應按身分證號碼由小到大排序(參考範例輸出)。
【輸入檔案範例】
V120498032,DARIUS,M
B12X767544,ISAAC,M
H221930843,ALICE,M
G220977967,ANGEL,F
B220713002,CATHY,F
E221142995,BETTY,F
P220668834,CLAIRE,F
J220374186,DELIA,F
A102947623,DENNIS,M
F222490168,DONA,F
【輸出檔案範例】
A102947623 DENNIS M
B12X767544 ISAAC M FORMAT ERROR
B220713002 CATHY F
E221142995 BETTY F CHECK SUM ERROR
F222490168 DONA F
G220977967 ANGEL F
H221930843 ALICE M SEX CODE ERROR
O220374186 DELIA F CHECK SUM ERROR
P220668834 CLAIRE F
V120498032 DARIUS M