VB编程题?
【题目】编写程序,验证任意一个不超过9位的自然数,经过下述的反复变换最终得到123。变换方法是:统计该数的各位数字,将偶数数字(0算偶数数字)个数记为a,奇数数字个数记为...
【题目】编写程序,验证任意一个不超过9位的自然数,经过下述的反复变换最终得到123。变换方法是:统计该数的各位数字,将偶数数字(0算偶数数字)个数记为a,奇数数字个数记为b,该数位数记为c;以a为百位数、b为十位数、c为个位数,得到一个新数(若a=0),则以b为百位数、a为十位数),若这个新数不是123,再按上述步骤进行变换,直到出现123为止。123被称为陷阱数。
【编程要求】
1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界 面元素大小适中,且均可见;
2.运行程序,在文本框1中任意输入一个不超过9位的自然数后,按“运行”按钮,则根据变换规则生成新数,将其输出到列表框,重复变换操作,直至得到123为止,最后输出“验证成功”信息;按“清除”按钮,将文本框和列表框清空,焦点置于文本框上;按“结束”按钮,结束程序运行;
3.程序中应定义一个名为Validate的通用过程,用于对数据进行变换操作。 展开
【编程要求】
1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界 面元素大小适中,且均可见;
2.运行程序,在文本框1中任意输入一个不超过9位的自然数后,按“运行”按钮,则根据变换规则生成新数,将其输出到列表框,重复变换操作,直至得到123为止,最后输出“验证成功”信息;按“清除”按钮,将文本框和列表框清空,焦点置于文本框上;按“结束”按钮,结束程序运行;
3.程序中应定义一个名为Validate的通用过程,用于对数据进行变换操作。 展开
1个回答
展开全部
Private Sub Command1_Click()
If Text1.Text = "" Or Len(Text1.Text) > 9 Then
MsgBox "请输入一个不超过9位的自然数!"
Exit sub
End If
If Not IsNumeric(Text1.Text) Then
MsgBox "请输入一个不超过9位的自然数!"
Exit sub
End If
Dim retNum As Long
retNum = Validate(CLng(Text1.Text))
If retNum = 123 Then
ListBox1.AddItem retNum
MsgBox "验证成功"
Else
ListBox1.AddItem retNum
End If
Text1.Text = retNum
End Sub
'变换数字
Private Function Validate(ByVal num As Long) As Long
Dim a As Long, b As Long, c As Long
Dim i As Long
If num = 123 Then
Validate = 123
Exit Function
End If
a = 0
b = 0
c = Len(CStr(num))
For i = 1 To c
If CLng(Mid(CStr(num), i, 1)) Mod 2 = 0 Then
a = a + 1
Else
b = b + 1
End If
Next
If a = 0 And b <> 0 Then
Validate = b * 100 + a * 10 + c
Else
Validate = a * 100 + b * 10 + c
End If
End Function
'清空列表
Private Sub Command2_Click()
ListBox1.Clear
End Sub
If Text1.Text = "" Or Len(Text1.Text) > 9 Then
MsgBox "请输入一个不超过9位的自然数!"
Exit sub
End If
If Not IsNumeric(Text1.Text) Then
MsgBox "请输入一个不超过9位的自然数!"
Exit sub
End If
Dim retNum As Long
retNum = Validate(CLng(Text1.Text))
If retNum = 123 Then
ListBox1.AddItem retNum
MsgBox "验证成功"
Else
ListBox1.AddItem retNum
End If
Text1.Text = retNum
End Sub
'变换数字
Private Function Validate(ByVal num As Long) As Long
Dim a As Long, b As Long, c As Long
Dim i As Long
If num = 123 Then
Validate = 123
Exit Function
End If
a = 0
b = 0
c = Len(CStr(num))
For i = 1 To c
If CLng(Mid(CStr(num), i, 1)) Mod 2 = 0 Then
a = a + 1
Else
b = b + 1
End If
Next
If a = 0 And b <> 0 Then
Validate = b * 100 + a * 10 + c
Else
Validate = a * 100 + b * 10 + c
End If
End Function
'清空列表
Private Sub Command2_Click()
ListBox1.Clear
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询