子題2(10%):是否文句中存在任何子字串,其為「合理」的「台北市」、「台中市」或「高雄市」身份證字號。
註:
(1) 身份證字號第1 碼為地區碼,「台北市」以「A」開頭、「台中市」以「B」開頭、「高雄市」以「E」開頭。
(2) 身份證字號的第2 碼為「性別」碼,其值應為「1」或「2」。
(3) 若將身份證字號的「地區碼」改為2 碼數字,其中「A」改為「10」、「B」改為「11」、「E」改為「14」,其後併入原身份證後9 碼數字,成為1 個新的11 位數字碼。將此數字碼由左至右分別乘以「1、9、8、7、6、5、4、3、2、1、1」,其相乘後的總和應可被10 整除。
輸入說明:
第1~3 行表示欲檢查之文句。
輸出說明:
若存在合理的身份證字號即輸出「有」,不存在即輸出「沒有」。
輸入範例:【檔名:in-3-2.txt】
His ID number is A120441768.
Her ID number is B272857734.
Their ID numbers are E286585485, E282467997, and E195445887.
輸出範例:【檔名:out-3-2.txt】
有
沒有
有
Private Sub Form_Load()
回覆刪除Me.Hide
Dim a As Boolean
Dim ans As String
Dim ans1 As Long
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Do While Not EOF(1)
Line Input #1, x
List1.Clear
For i = 1 To Len(x)
b = Mid(x, i, 2)
ans = ""
If b = "B1" Or b = "B2" Or b = "A1" Or b = "A2" Or b = "E1" Or b = "E2" Then
ans = Mid(x, i, 10)
If IsNumeric(Mid(ans, 2, 9)) = True Then
'IsNumeric函數=檢查是不是數字
ans1 = 0
a = False
If Mid(ans, 1, 1) = "A" Then ans1 = ans1 + (1 * 1) + (0 * 9)
If Mid(ans, 1, 1) = "B" Then ans1 = ans1 + (1 * 1) + (1 * 9)
If Mid(ans, 1, 1) = "E" Then ans1 = ans1 + (1 * 1) + (4 * 9)
ans1 = ans1 + Val(Mid(ans, 2, 1)) * 8
ans1 = ans1 + Val(Mid(ans, 3, 1)) * 7
ans1 = ans1 + Val(Mid(ans, 4, 1)) * 6
ans1 = ans1 + Val(Mid(ans, 5, 1)) * 5
ans1 = ans1 + Val(Mid(ans, 6, 1)) * 4
ans1 = ans1 + Val(Mid(ans, 7, 1)) * 3
ans1 = ans1 + Val(Mid(ans, 8, 1)) * 2
ans1 = ans1 + Val(Mid(ans, 9, 1)) * 1
ans1 = ans1 + Val(Mid(ans, 10, 1)) * 1
If ans1 Mod 10 = 0 Then a = True
End If
End If
Next
If a = True Then Print #2, "有" Else Print #2, "沒有"
Loop
Close
Close
End
End Sub