一道VB题目

OptionBase1PrivateSubCommand1_Click()Dimn1AsInteger,b()AsInteger,kAsIntegerRandomizeP... Option Base 1
Private Sub Command1_Click()
Dim n1 As Integer, b() As Integer, k As Integer
Randomize
Picture1.Cls
n1 = Int((Rnd * 90) + 10)
Call sub1(b, n1)
s2 = b(1) * 10 + b(2)
k = 9
Do
Call sub1(b, k)
s1 = b(1) * 10 + b(2)
If n1 + k = s2 + s1 Then
Picture1.Print n1; "+"; k; "="; s1; "+"; s2
End If
k = k + 1
Loop Until k = 100
End Sub
Public Sub sub1(d() As Integer, k As Integer)
ReDim d(2)
d(1) = k Mod 10
d(2) = k \ 10
End Sub
谁能帮我解释一下程序啊?
程序结果如图,主要是将一个2位数,它的个位与十位对调后,产生另一个正整数,再找出另一对2位正整数,使得这两个正整数之和等于它们对调后数之和。例如:12+32=23+21
要详细一些啊?
展开
 我来答
kirin_lu
2010-09-28 · TA获得超过131个赞
知道小有建树答主
回答量:173
采纳率:100%
帮助的人:101万
展开全部
Option Base 1 ==> 定义数组基数从1开始
Private Sub Command1_Click()
Dim n1 As Integer, b() As Integer, k As Integer
Randomize ==> 产生随机系列
Picture1.Cls
n1 = Int((Rnd * 90) + 10) ==> 得到一个10到99的随机数赋给n1
Call sub1(b, n1) ==> 得到数组b,第一个元素是n1的个位,第二个元素是n1的十位
s2 = b(1) * 10 + b(2) ==> s2为n1个位与十位对调后的数
k = 9 ==> 从9开始循环尝试找出与s2匹配的数字
Do
Call sub1(b, k) ==> b为包含k的个位与十位的数组
s1 = b(1) * 10 + b(2) ==> s1为k的个位与十位对调后的数字
If n1 + k = s2 + s1 Then ==> 如果 n1 + k = s2 + s1 则说明找到匹配对(参考上面k,s2,s1的值的说明)
Picture1.Print n1; "+"; k; "="; s1; "+"; s2 ==> 输出匹配对
End If
k = k + 1 ==> 如果当前的k值不匹配,则加1继续尝试
Loop Until k = 100 ==> 直到k=100
End Sub
Public Sub sub1(d() As Integer, k As Integer)
ReDim d(2)
d(1) = k Mod 10 ==> 得到k的个位数
d(2) = k \ 10 ==> 得到k的10的倍数,当k<100时即为k的十位数
End Sub
necole1
2010-09-28 · TA获得超过382个赞
知道小有建树答主
回答量:652
采纳率:0%
帮助的人:348万
展开全部
实现思路都有了 代码还有问题?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式