16.數字黑洞數6174.一個任意的四位正整數(四位數完全相同除外),將數字重新組合成一個最大的數和最小的數相減,重復這個過程,最多七步,必得6174.如取四位數5462,按以上方法作運算如下: ①6542-2456=4086 ②8640-0468=8172 ③8721-1278=7443 ④7443-3447=3996 ⑤9963-3699=6264⑥6642-2466=4176 ⑦7641-1467=6174 從文本框Text1中輸入一個任意的數字不完全相同的四位正整數,在文本框Text2中輸出掉進黑洞的步數.實現上述功能的VB代碼如下,但加框處代碼有錯,請改正: ①
② Private Sub Command1-Click( ) Dim a(1 TO4)As Integer,c As Integer,tAs In teger Dim x As Integer,yAs Integer,iAs Integer,j AsInteger x=Val(Text1.Text) c=0 Do While x<>6174 For i=l To4'把四位正整數x的每一位數字取出來并存放到數組a中 a(i)=xMod10 '① Next i Fori=1To3 Forj=i+lTo4 IfThen'② t=a(i):a(i)=a(j):a(j)=t end Next j Next i x=a(1)*1000+a(2)^100+a(3)*10+a(4) y=a(1)+a(2)*10+a(3)*100+a(4)*1000 x=x-y c=c+1 Loop Text2.Text=Str(c) End Sub.
. Private Sub Command1-Click( ) Dim a( )As Integer,b( )AsInteger,m As Integer,n As Integer Dim i As Integer,k As Integer,cAs Integer,x As Integer n=Val(Textl.Text):m=Val(Text2.Text):x=Val(Text3.Text) ReDim a(lTon)As Lnteger'重新定義數組a,存儲下標對應編號人的隊列狀態 ReDim b(lTon)As Lnteger'重新定義數組b,存儲下標對應編號人的密碼 Randomize'隨機數生成器初始化 For i=l To n a(i)=l'在列
'產生每個人的隨機密碼 Next c=0 k=0 Listl.Clear Do While c<n For i=l To n k=k+a(i)'累計報數 Ifk=mAnd
Then k=0 a(i)=0'出列 Listl.Addltem''出列人的編號為''&i&'',該人的密碼為''&b(i)