vb课设数字拼图初始化 高手进
PrivateSubCommand2_Click()Dimnum(7)AsIntegerDimaAsIntegerDimbAsIntegerDimcAsIntegerDo...
Private Sub Command2_Click()
Dim num(7) As Integer
Dim a As Integer
Dim b As Integer
Dim c As Integer
Do While b < 8
p: a = Rnd * 8
If a = 0 Then
GoTo p
End If
If b = 0 Then
num(b) = a
b = b + 1
GoTo p
End If
For c = 0 To b - 1
If num(c) = a Then
GoTo p
End If
Next c
num(b) = a
b = b + 1
Loop
Randomize
这段代码是如何实现使拼图初始化的,里面的abc代表什么? 展开
Dim num(7) As Integer
Dim a As Integer
Dim b As Integer
Dim c As Integer
Do While b < 8
p: a = Rnd * 8
If a = 0 Then
GoTo p
End If
If b = 0 Then
num(b) = a
b = b + 1
GoTo p
End If
For c = 0 To b - 1
If num(c) = a Then
GoTo p
End If
Next c
num(b) = a
b = b + 1
Loop
Randomize
这段代码是如何实现使拼图初始化的,里面的abc代表什么? 展开
3个回答
展开全部
先解释一下P:
早期BASIC中每一句代码前都有一个数字来作标识表示程序执行的顺序,后来在VB中不用了,但还是保留了这一习惯,这个P就是用来表示a = Rnd * 8这句代码的位置的标识
GOTO语句,又称无条例转移指令,表示程序执行到这里时立即转移, 而GOTO P 就是转移到标记为P的指令处,在这里指执行 a = Rnd * 8 这一句.
Randomize 初始化随机数生成器,注意到下面一句RND没有?RND:产生一个随机数,随机数的产生一般用系统计时器返回的值作为新的种子值,如果没有对随机数生成器进行初始化,当下一次运行RND 时还是使用第一个种子数,这样产生的随机数就会和上一次一样,等于没有产生.所以要初始化,Randomize就是实现这个功能的.
明白了吧?
解释整修程序
Private Sub Command2_Click()
Dim num(7) As Integer'定义一个数组
Dim a As Integer'不用说吧
Dim b As Integer
Dim c As Integer
Randomize ' 初始化随机数生成器,应该放在DO语句的下面吧?
Do While b 8'如果b >= 8'就转移到标识为LOOP下面的那一语句
p: a = Rnd * 8 'p:这一句的标识是P
If a =0 Then
GoTo p '如果a =0就转移到标识为P的语句那里去
End If
If b = 0 Then
num(b) = a
b = b + 1
GoTo p '如果b =0就转移到标识为P的语句那里去
End If
For c = 0 To b - 1
If num(c) = a Then
GoTo p '如果c =0就转移到标识为P的语句那里去
End If
Next c
num(b) = a
b = b + 1
Loop'转移到Do While b < 8处
Com(0).Caption = ""'后面的就不写了吧
Com(0).Enabled = True
Com(0).Visible = False
For a = 0 To 7
Com(a + 1).Enabled = True
Com(a + 1).Visible = True
Com(a + 1).Caption = num(a)
Next a
Timer1.Enabled = True
Label1.Caption = 0
Label3.Caption = 0
Command1.Visible = True
End Sub
不知道你要干什么,不明白具体需求
早期BASIC中每一句代码前都有一个数字来作标识表示程序执行的顺序,后来在VB中不用了,但还是保留了这一习惯,这个P就是用来表示a = Rnd * 8这句代码的位置的标识
GOTO语句,又称无条例转移指令,表示程序执行到这里时立即转移, 而GOTO P 就是转移到标记为P的指令处,在这里指执行 a = Rnd * 8 这一句.
Randomize 初始化随机数生成器,注意到下面一句RND没有?RND:产生一个随机数,随机数的产生一般用系统计时器返回的值作为新的种子值,如果没有对随机数生成器进行初始化,当下一次运行RND 时还是使用第一个种子数,这样产生的随机数就会和上一次一样,等于没有产生.所以要初始化,Randomize就是实现这个功能的.
明白了吧?
解释整修程序
Private Sub Command2_Click()
Dim num(7) As Integer'定义一个数组
Dim a As Integer'不用说吧
Dim b As Integer
Dim c As Integer
Randomize ' 初始化随机数生成器,应该放在DO语句的下面吧?
Do While b 8'如果b >= 8'就转移到标识为LOOP下面的那一语句
p: a = Rnd * 8 'p:这一句的标识是P
If a =0 Then
GoTo p '如果a =0就转移到标识为P的语句那里去
End If
If b = 0 Then
num(b) = a
b = b + 1
GoTo p '如果b =0就转移到标识为P的语句那里去
End If
For c = 0 To b - 1
If num(c) = a Then
GoTo p '如果c =0就转移到标识为P的语句那里去
End If
Next c
num(b) = a
b = b + 1
Loop'转移到Do While b < 8处
Com(0).Caption = ""'后面的就不写了吧
Com(0).Enabled = True
Com(0).Visible = False
For a = 0 To 7
Com(a + 1).Enabled = True
Com(a + 1).Visible = True
Com(a + 1).Caption = num(a)
Next a
Timer1.Enabled = True
Label1.Caption = 0
Label3.Caption = 0
Command1.Visible = True
End Sub
不知道你要干什么,不明白具体需求
展开全部
这段代码目的其实很简单,就是在num数组中生成一个不重复的1-8的数字列表,a表示每次生成的不为0的一个随机数,b是用来控制当前生成了几个数字的,c是用来计算随机数a是否已经在num数组中出现过的。但是由大于大量的goto的应用,使得这段代码可读性很差,改动如下
Dim num(7) As Integer
Dim b As Integer, t As Integer, i As Integer
Dim flag As Boolean
Randomize
b = 0
Do While b < 8 'b用来控制当前已经填充的数字个数
t = Rnd * 8
While t = 0 't为每次生成的不为0的随机数
t = Rnd * 8
Wend
flag = False 'flag表示上面的t是否已经在num中出现过,false则未出现,true为已经出现
For i = 0 To b
If num(i) = t Then
flag = True
Exit For '如果已经出现,则跳出此次循环
End If
Next i
If Not flag Then '如果尚未出现过,则将t放入num,同时b+1
num(b) = t
b = b + 1
End If
Loop
Dim num(7) As Integer
Dim b As Integer, t As Integer, i As Integer
Dim flag As Boolean
Randomize
b = 0
Do While b < 8 'b用来控制当前已经填充的数字个数
t = Rnd * 8
While t = 0 't为每次生成的不为0的随机数
t = Rnd * 8
Wend
flag = False 'flag表示上面的t是否已经在num中出现过,false则未出现,true为已经出现
For i = 0 To b
If num(i) = t Then
flag = True
Exit For '如果已经出现,则跳出此次循环
End If
Next i
If Not flag Then '如果尚未出现过,则将t放入num,同时b+1
num(b) = t
b = b + 1
End If
Loop
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a b c代表什么都不知道 你就上百度问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询