跪求FORTRAN 身分證字號產生器驗證器程式碼

Wabcdefghi

中華民國身分證字號最後1碼為驗證碼

第1碼(W)英文字代表所屬的縣市

第2碼(a)數字

1為男生2為女生

第3碼至第10碼為任意一串數字

檢查公式:V=W(十位數字)+W(個位數字)*9+a*8+b*7+c*6+d*5+e*4+f*3+g*2+h*1

i=10-(V mod 10)

要求輸入居住地 性別

輸出身分證字號

A台北市 B台中市 C基隆市 D台南市 E高雄市 F台北縣 G宜蘭縣 H桃園縣 I嘉義市 J新竹縣 K苗栗縣 L台中縣 M南投縣 N彰化縣 O新竹市 P雲林縣 Q嘉義縣 R台南縣 S高雄縣 T屏東縣 U花蓮縣 V台東縣 W金門縣 X澎湖縣 Y陽明山 Z連江縣A=10 B=11 C=12 D=13 E=14 F=15 G=16 H=17 J=18 K=19 L=20 M=21 N=22 P=23 Q=24 R=25 S=26 T=27 U=28 V=29 W=30 X=31 Y=32 Z=33 I=34 O=35

2 Answers

Rating
  • Jack
    Lv 5
    1 decade ago
    Favorite Answer

    依照題目的「要求 輸入居住地、性別,輸出身分證字號」,則一共會有 10 的 7 次方(1,000 萬)個解答,絕對印不完。在實務上,戶政事務所會以 7 個數字(題目中的 b, c, d, e, f, g, h)中的「下一個未使用過的號碼」指定給前來報戶口的新生嬰兒。但我們並不知道戶政事務所目前已使用到幾號,因此我將題目略為修改為「輸入身分證字號的前 9 碼,輸出驗證碼(第 10 碼)」,程式如下:

    character*1 w

    integer*1 jw

    integer*2 ia(26), in(8), iw, i

    integer*4 v

    data ia/10,11,12,13,14,15,16,17,34,18,19,20,21,22,35,23,24,25,26,&

    27,28,29,30,31,32,33/

    equivalence (w, jw)

    1 print *, 'Enter ID (first 9 codes):'

    read (*, '(a1, 8i1)') w, in

    iw = ia(jw-64)

    v = iw/10 + mod(iw,10)*9

    do k=1,8

    v = v + in(k)*(9-k)

    enddo

    i = 10 - mod(v,10)

    if (i .eq. 10) i=0

    print *, 'Verification code =', i

    goto 1

    end

    我曾以週遭親友的二十多個身分證字號輸入測試,結果均正確無誤。

    Source(s): 自己
  • 6 years ago

    一起玩情趣用品網路商城,提供成人情趣用品、情趣內衣等,全省宅配到府、超商付款包裝隱密,歡迎參觀選購。

    一起玩情趣用品官網:http://www.17one.net/

    一起玩情趣用品粉絲團:https://www.facebook.com/17one

Still have questions? Get your answers by asking now.