16.【加試題】小柯編寫了一個(gè)多位數(shù)乘法的VB程序,運(yùn)行界面如圖所示。文本框Text1中輸入一個(gè)小于等于1000位的被乘數(shù),文本框Text2中輸入1位乘數(shù),點(diǎn)擊“開始計(jì)算”按鈕Command1后,在文本框Text3中顯示計(jì)算結(jié)果。 實(shí)現(xiàn)上述功能的VB程序如下,但加框處代碼有錯(cuò),請改正。 Private Sub Command1_Click( ?。?br />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表示進(jìn)位 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函數(shù)用來刪除字符串首尾的空格 For i=1 To n Next i Text3.Text=str2 End Sub。
17.【加試題】某日起加密授權(quán)碼生成方法描述如下: (1)授權(quán)碼由10位字符組成,前8位為日期的密文,后2位為驗(yàn)證碼; (2)取日期的第1位字符,若該字符第一次出現(xiàn),則直接取其對應(yīng)加密字符,否則取下一個(gè)不重復(fù)的加密字符.按此操作,依次取出該日期余下各位對應(yīng)的加密字符; (3)求出所有日期字符數(shù)值的和,將和除16取余加1得到一位驗(yàn)證碼字符;若和不小于16,則將和除16取整加1得到另一位驗(yàn)證碼字符,否則另一位驗(yàn)證碼字符為“X”.取出驗(yàn)證碼重復(fù)時(shí),處理規(guī)則與(2)相同. 加密(驗(yàn)證碼)字符對應(yīng)表如下: 小明設(shè)計(jì)了一個(gè)生成8位日期(YYYYMMDD格式)授權(quán)碼的VB程序,程序功能如下:在文本框Text1中輸入一個(gè)8位有效日期,單擊“生成授權(quán)碼”按鈕Command1,在標(biāo)簽Label2中顯示出該日期的授權(quán)碼.運(yùn)行效果如圖所示. 實(shí)現(xiàn)上述功能的VB程序段如下: (1)請?jiān)跈M線處填入合適代碼: Dim f(0 To 15)As Integer Const Code=“KnGjLtWb0aPHZqYc“ Private Sub Command1_Click( ?。?br />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 '獲取不重復(fù)的加密字符 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”,則該授權(quán)碼的驗(yàn)證碼字符是