Private Sub Command1_Click()
Dim n As Integer, i As Integer, s As String
Randomize
n = Int(Rnd*20) *2+1: ①
s=“”
For i =1 To n
If i <=n\2+1 Then
s=s+Str(2*i-1)
Else
s=s+ ②
End If
Next i
Text2.Text = s
End Sub
图a |
Const n = 10
Dim a(n) As Integer
Private Sub Form_ Load ()
'随机生成数组元素a(i),代码略
End Sub
Private Sub Command1_Click ()
Dim i As Integer, k1 As Integer, k2 As Integer
For i=1 To n\2
k1 = i: '改错
For j=i+1 To n-i+1
If a(k1)>a(j) Then k1=j
If a(k2)<a(j) Then k2=j
Next j
If k1<>I Then t=a(k1):a(k1)=a(i):a(i)=t
If k2=I Then '填空
t = a(k2): a(k2) = a(n- i+1):a(n-i+1) = t
Next i
For i=1 To n
List2.AddItem Str(a(i))
Next i
End Sub
第一步: 87+78=165
第二步: 165+561=726
第三步: 726+627=1353
第四步: 1353+3531=4884
即十进制数87最少经过4步可得到回文数。
给定一个n(2≤n≤10)进制数m,已知m的位数≤20,求最少经过几步可得到回文数,若步数≤30,则在标签Label2,上输出步数,否则输出“不可能得到回文数!”。程序运行界面如下图所示。
Dim a(1 To 20) As Integer
Dim b(1 To 20) As Integer
Private Sub Command1_Click()
Dim n As Integer, m As Integer, step As Integer, x As Integer
n = Val(Text1.Text): m = Val (Text2.Text)
i=1:step=0
Do While m<>0
a(i) =m Mod 10: m=m\10:i=i+1
Loop
x=
If Ishw(x) Then Label2.Caption = "step=" + Str(step)
Do While step <= 30
p=0
For i=1 To x
b(i) = (a(i) +a(x-i+1)+p) Mod n
p= (a(i)+a(x-i+1)+p)\n
Next i
step=step+1
If p< 0 Then x=x+ 1:
For i=1 To x
Next i
If Ishw(x) Then Label2. Caption = "step=" + Str(step): Exit Do
Loop
End Sub
Function Ishw(y As Integer) As Boolean
Dim j As Integer
Ishw = True
For j=1 To y\2
If a(j) <> a(y- j + 1) Then Ishw = False: Exit For
Next j
End Function