
找出所有4位数的升序数和回文数,使用函数实现回文数和升序数的判断。用VB编程,求高手指点,马上啊。
2、单击“升序数”按钮,找出所有4位数中的升序数。
3、使用函数实现回文数和升序数的判断。 展开
VB6.0版本的可以吗?
我用的是构成法。
Option Explicit
Dim a, b, c, d, n
Private Sub Command1_Click()
For a = 1 To 9
For b = 0 To 9
n = a * 1000 + b * 100 + b * 10 + a
List1.AddItem n
Next
Next
End Sub
Private Sub Command2_Click()
For a = 1 To 6
For b = a + 1 To 7
For c = b + 1 To 8
For d = c + 1 To 9
n = a * 1000 + b * 100 + c * 10 + d
List2.AddItem n
Next
Next
Next
Next
End Sub
上面用的是构成法。
判断的:
Option Explicit
Dim s(4)
'回文数,用函数判断法
Private Sub Command1_Click()
Dim n As Integer
For n = 1001 To 9999
If (huiwenNun(n)) Then List1.AddItem n
Next
End Sub
'采用数字分离法
Function huiwenNun(n As Integer) As Boolean
Dim a, b, c, d
a = Int(n / 1000)
b = Int((n - a * 1000) / 100)
c = Int((n - a * 1000 - b * 100) / 10)
d = n - a * 1000 - b * 100 - c * 10
If a = d And b = c Then huiwenNun = True
End Function
'升序数,没有重复数字的
Private Sub Command2_Click()
Dim n As Integer
'For n = 1000 To 9999
For n = 1234 To 6789
If (sxNun(1234)) Then List2.AddItem n
Next
End Sub
'与上面不用的数字分离方法。还可以“按位”提取数字
Function sxNun(n As Integer) As Boolean
s(1) = Mid(n, 1, 1)
s(2) = Mid(n, 2, 1)
s(3) = Mid(n, 3, 1)
s(4) = Mid(n, 4, 1)
If s(1) < s(2) And s(2) < s(3) And s(3) < s(4) Then sxNun = True
End Function
Private Sub Command1_Click()
For I = 1000 To 9999
If Sxs(I) Then List1.AddItem I
Next I
End Sub
Private Sub Command2_Click()
For I = 1000 To 9999
If Hws(I) Then List2.AddItem I
Next I
End Sub
Private Sub Form_Load()
Command1.Caption = "升序数"
Command2.Caption = "回文数"
End Sub
Private Function Sxs(IntSxs As Long) As Boolean
'判断一个数是不是升序数
Dim StrSxs As String, I As Integer
StrSxs = LTrim(Str(IntSxs))
Sxs = True
For I = 1 To Len(StrSxs) - 1
If Mid(StrSxs, I + 1, 1) <= Mid(StrSxs, I, 1) Then
Sxs = False
Exit Function
End If
Next I
End Function
Private Function Hws(IntHws As Long) As Boolean
'判断一个数是不是回文数
Dim StrHws As String, I As Integer
Hws = True
StrHws = LTrim(Str(IntHws))
For I = 1 To Int((Len(StrHws) + 1) / 2)
If Mid(StrHws, I, 1) <> Mid(StrHws, Len(StrHws) - I + 1, 1) Then
Hws = False
Exit Function
End If
Next I
End Function