16.【加試題】小柯編寫了一個多位數乘法的VB程序,運行界面如圖所示。文本框Text1中輸入一個小于等于1000位的被乘數,文本框Text2中輸入1位乘數,點擊“開始計算”按鈕Command1后,在文本框Text3中顯示計算結果。 實現上述功能的VB程序如下,但加框處代碼有錯,請改正。 Private Sub Command1_Click( ) Dim d(1 To 1001)As Integer Dim strl As String,str2 As String Dim i As Integer,n As Integer,k As Integer,s As Integer strl=Text1.Text n=Len(strl) For i=1 To n d(i)=Val(Mid(strl,i,1)) Next i s=0's表示進位 k=Val(Text2.Text) For i=n To 1 Step-1 '① s=d(i)\10 d(i)=d(i) Mod 10 Next i If s<>0 Then str2=Trim(Str(s)) Else str2=““'Trim函數用來刪除字符串首尾的空格 For i=1 To n Next i Text3.Text=str2 End Sub。
17.【加試題】某日起加密授權碼生成方法描述如下: (1)授權碼由10位字符組成,前8位為日期的密文,后2位為驗證碼; (2)取日期的第1位字符,若該字符第一次出現,則直接取其對應加密字符,否則取下一個不重復的加密字符.按此操作,依次取出該日期余下各位對應的加密字符; (3)求出所有日期字符數值的和,將和除16取余加1得到一位驗證碼字符;若和不小于16,則將和除16取整加1得到另一位驗證碼字符,否則另一位驗證碼字符為“X”.取出驗證碼重復時,處理規則與(2)相同. 加密(驗證碼)字符對應表如下: 小明設計了一個生成8位日期(YYYYMMDD格式)授權碼的VB程序,程序功能如下:在文本框Text1中輸入一個8位有效日期,單擊“生成授權碼”按鈕Command1,在標簽Label2中顯示出該日期的授權碼.運行效果如圖所示. 實現上述功能的VB程序段如下: (1)請在橫線處填入合適代碼: Dim f(0 To 15)As Integer Const Code=“KnGjLtWb0aPHZqYc“ Private Sub Command1_Click( ) Dim rq As String,sq As String Dim c As Integer,i As Integer,d As Integer For i=0 To 15 f(i)=0 Next i rq=Text1.text sq=““:d=0 If Len(rq)<>8 Then Label2.Caption=“請輸入8位日期!“ Else For i=1 To 8 c=Val(Mid(rq,i,1)) d=d+c sq=
+sq Next i If d>=16 Then yz=GetChar(d Mod 16+1)+GetChar(d\16+1) Else yz=GetChar(d Mod 16+1)+“X“ End If Label2.Caption=sq+yz End If End Sub '獲取不重復的加密字符 Function GetChar(x As Integer) As String Dim flag As Boolean flag=False Do While flag=False f(x)=f(x)+1 If f(x)=1 Then
f(x)=f(x)+1 flag=True Else x=(x+1)Mod 10 End If Loop End Function (2)若輸入的日期是“20170818”,則該授權碼的驗證碼字符是