阿眾所週知,
身份字號的第一位為英文字母,
阿它代表你的出生地(其實應該說是登記出生的所在), 參見下表。
第二位為數字,是男女生之代碼,男生為 1,女生為 2,
(? 阿變性的應該可以用 3 和 4 代表男變女 或 女變男..?)
接下來為流水號 (sequence number),
最後一位則為檢查號碼(weighted check sum), 是算出來的!
阿這樣怎會跟反攻大陸有關呢? 別急 ! 且聽我慢慢道來 ..
是這樣的,
當初開始統編身份證號碼時, 省屬以上單位只有 22 個,
就是以下沒有星號(*)帶頭的, 所以 IO 很像 1 與 0 不用,
W 與 M 對沒學過英文的會搞錯不用, Z 很像 2 也不用 !
用 22 個字母依序對應兩位數 10 到 31,
後來金門縣用掉 W 對應 32, 連江縣用掉 Z 對應 33,
最後嘉義市和新竹市分別升格為省轄市把 I 和 O 也用掉了!
(以前住嘉義市的和嘉義縣的一樣用Q, 新竹市的在民國70年以前的和新竹縣一樣用 J)
(注意下表如果把有星號的項目拿掉則號碼是連續的)
至此二十六個字母用光了, 不允許再升格!
(聽說這也導致後來的廢省:-( 害得宋楚瑜和李登輝翻臉 ! :-)
阿最嚴重的當然是 ..
也不能反攻大陸了!
不然身份證號碼就沒辦法編了. .
為此, 所有當初參與編身分證號碼的都被捉去槍斃了!
也就是因為這樣, 這件事就只剩下我蔡神一個人知道!
(以上純屬瞎掰, 若有巧合 .. 阿就是巧合咩:)
算檢查碼(最後一位)要先把英文碼根據下表轉換成兩位數字 : A=10 台北市 J=18 新竹縣 S=26 高雄縣
B=11 台中市 K=19 苗栗縣 T=27 屏東縣
C=12 基隆市 L=20 台中縣 U=28 花蓮縣
D=13 台南市 M=21 南投縣 V=29 台東縣
E=14 高雄市 N=22 彰化縣 * W=32 金門縣
F=15 台北縣 * O=35 新竹市 X=30 澎湖縣
G=16 宜蘭縣 P=23 雲林縣 Y=31 陽明山特區
H=17 桃園縣 Q=24 嘉義縣 * Z=33 連江縣
* I=34 嘉義市 R=25 台南縣
計算檢查號碼的演算法:
(a) 先把英文字母依照上表轉成兩位數字,
這樣連同其餘數字共有十一位 最右邊一位是檢查碼, 是依據其餘十位算出來的
(b) 各數字從左到右依次乘上 1, 9, 8, 7, 6, 5, 4, 3, 2, 1 (檢查碼先不管)
(c) 求出(b)之和,除以10取餘數,再用10減該餘數,結果就是檢查碼,
但是若餘數為0,則檢查碼就是 0。
例如: 身份證號碼 A123456789 剛好是個合法的號碼:
A 1 2 3 4 5 6 7 8 9
1 0
1 9 8 7 6 5 4 3 2 1
------------------------------------
1 + 0 + 8+14+18+20+20+18+14+ 8 = 121
121 % 10 = 1 ( % 就是取餘數)
10 - 1 = 9 即為 檢查碼 (check sum)
|
**阿根據電視報導,
該位擁有一條龍A123456789身分證號
的先生困擾多多!
包括無法上網購票, 因為都被禁掉了!
也沒銀行要給他申請信用卡!
因為懷疑那是假的號碼!!
|
|
**問題思考 :
1. 為什麼要採取 weighted sum 來算 check sum?
2. 這樣檢查碼的比重剛好也是 1, 有蛇麼缺點?
阿廢話..用算出的檢查碼的比重當然是 1, 我是指它左邊那位比重也是 1 啦!
Hint: 人在看連續數字容易把鄰近的看對調, 打字時不小心也會打對調.
3. 新竹市最後把 O 用掉對應 35 是個嚴重的錯誤
因為 O 有時寫不好會被誤為 D, 此時 O 和 D 互相寫錯是查不出來的, 為蛇麼?
4. 寫程式如何 A 對到10, B對到11, ... ? 有很多方法!
==>可用超級賴皮法寫26個 if :-) 但是, 這樣你好意思嗎?
==>也可以利用一段一段(A到H, J到N, ...)寫數個 if,
==>當然更方便的是乾脆造一個 table (array) 來查!
?? 如何查? 阿..福氣啦 .. 阿不是 .. 我是說習題啦 :-)
5.所以, 習題來囉!
阿就是要寫一個至少可以檢查身分證號碼的程式,
最好也要可以生出合法的身分證號碼!
甚至還要可指定出生地與男女!(就是身分證號前面兩碼)
Hint: 用 fgets( ) 把整列當字串讀入再處理, 字母要允許輸入大寫或小寫!
可規定輸入 -1 或是 quit 表示結束.
6. 這個習題的目的,
除了讓同學練習字串處理與瞭解ASCII碼之外,
也讓同學知道有檢查碼(checksum)這種概念!
從身分證編碼規則中知道有所謂的加權檢查和(Weighted checksum)
--
|
|
後記: 關於新五都 ..
自從馬英九當總統後, 積極與老共修好與示好..
阿當然老共也就給與回報,
根據路邊社消息指出,
老共已經同意把福建南邊以及海南島等讓給台灣,
做為馬英九競選連任的賀禮與籌碼!
阿可是這樣身分證號碼不夠用啊??
於是..靈機一動! 有了 .. 可以弄出三個字母來備用:
對.. 你猜對了.. 就是合併一些縣市:
台中縣市合併, 讓出 L;
台南縣市合併, 讓出 R;
高雄縣市合併, 讓出 S;
阿台北縣太大了, 只好不合併!
阿桃園縣市本來就只用一個字母, 升格也沒鳥用,
所以雖然人口比台南縣市合起來還多, 仍暫不准升格!
(註: 桃園市是縣轄市, 歸桃園縣管轄)
還好不是空出這三個: 台中縣 + 雲林縣 + 南投縣,
不然紀曉嵐和陳唐山都會用台語說..那就不太好囉:-)
|
這就是何以會有新五都的秘密, 噓 .. 不要太大聲, 會被抓去關喔!
| |
|