谁能把这个VB编程一句一句给我解释了啊? 50

PrivateSubtext1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13Thenk=k+1IfVal(Text1.Text)=cT... Private Sub text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
k = k + 1
If Val(Text1.Text) = c Then
Call initn
Else
h = h + 1
Call initn
End If
End If
End Sub
Sub initn()
Dim a As Integer, b As Integer
Randomize
Do
a = Int(Rnd() * 10)
b = Int(Rnd() * 10)
Loop While a = 0 Or b = 0
c = a + b
Label1.Caption = a & "+" & b & "="
Text1.Text = ""
Text1.SetFocus
Label2.Caption = k
Label3.Caption = h
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
Label5.Caption = "程序终止"
Label1.Caption = ""
Text1.Text = ""
Label6.Width = 0
Label9.Caption = "00:00"
End Sub
Private Sub Timer1_Timer()
Label6.Width = Label6.Width + 9720 / time / 60
Label9.Caption = Format(m, "00") & ":" & Format(s, "00")
s = s - 1
If s < 0 Then
m = m - 1
If m < 0 Then

Timer1.Enabled = False

Label9.Caption = "00:00"
r = (k - h) / k
Label5.Caption = Now & Space(2) & "<" & X & ">" & "共答" & l & "题,答错 " & h & "题,正确率为" & Format(r, "00.00% ") & "。"

Label1.Caption = ""
Text1.Text = ""

End If
s = 59
End If
End Sub
展开
 我来答
unsamesky
2013-06-26 · TA获得超过2734个赞
知道小有建树答主
回答量:859
采纳率:100%
帮助的人:421万
展开全部
如果要下面的代码都正确运行,那么必须将k,h,c这三个变量必须设置为模块级变量或者全局变量。

Private Sub text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then '如果文本框Text1里面按下回车键
k = k + 1 '变量k加1
If Val(Text1.Text) = c Then '如果Text1文本框的数值 = c,那么
Call initn '调取执行iniTn这个Sub
Else '如果Text1文本框的值不等于c,那么
h = h + 1 '变量h加1
Call initn '调取执行iniTn这个Sub
End If ‘If Val(Text1.Text) = c条件结束
End If If KeyAscii = 13 条件结束
End Sub 'Text1键盘按下事件结束

Sub initn() 'Sub工程 iniTn
Dim a As Integer, b As Integer '定义两个整型变量a和b
Randomize '变换随机数发生器生成不同随机数
Do 'Do循环语句开始
a = Int(Rnd() * 10) '生成一个[0,10)的随机数,并用Int取整后赋值给变量a
b = Int(Rnd() * 10) '生成一个[0,10)的随机数,并用Int取整后赋值给变量b
Loop While a = 0 Or b = 0 '当a或者b其中一个随机数等于0的时候就继续循环,也就是a和b都要生成一个大于0,小于10的随机数。
c = a + b 'c 等于a和b的和
Label1.Caption = a & "+" & b & "=" 'Label1标签显示一个等式"a + b =",a和b分别是上面生成的随机数
Text1.Text = "" 'Text1文本框清空
Text1.SetFocus 'Text1文本框获得鼠标焦点
Label2.Caption = k 'Label2 标签用来显示正确的题目数
Label3.Caption = h 'Label3标签用来显示错了几道题
End Sub

Private Sub Command2_Click() '按钮2单击事件
Timer1.Enabled = False '计时器不可使用
Label5.Caption = "程序终止" 'Label5标签显示“程序终止”
Label1.Caption = "" 'Label1文本框显示为空
Text1.Text = "" 'Text1文本框清空
Label6.Width = 0 ’Label6标签的宽度设置为0
Label9.Caption = "00:00" 'Label9显示计时器零位00:00
End Sub

Private Sub Timer1_Timer() ‘计时器Timer变化事件
Label6.Width = Label6.Width + 9720 / time / 60 ’Label6标签的宽度根据时间进行增加
Label9.Caption = Format(m, "00") & ":" & Format(s, "00") 'Label9显示时间进度
s = s - 1 's自减一 (这里实际上就是分秒针倒计时)
If s < 0 Then '如果s小于0,那么(这里实际上就是秒针归零)
m = m - 1 'm自减一(这里实际上就是分针倒计时)
If m < 0 Then '如果m<0,那么(这里实际上就是分针归零)

Timer1.Enabled = False '时间停止

Label9.Caption = "00:00" 'Label9显示时间零位00:00
r = (k - h) / k 'r变量计算正确率
Label5.Caption = Now & Space(2) & "<" & X & ">" & "共答" & l & "题,答错 " & h & "题,正确率为" & Format(r, "00.00% ") & "。"
'Label5标签显示现在是<X>,共答I题,答错h题,正确率为r * 00.00%

Label1.Caption = "" ‘Label1标签显示空
Text1.Text = "" 'Text1文本框清空

End If 'If m < 0条件结束
s = 59 's = 59秒因为前面分钟减去一分钟,那么秒数就定位到59秒,可以这样理解,比如前面m = 05:00,那么倒计时器要减掉一秒,肯定是分针变成04,而秒针变成59,也就是04:59
End If If s < 0 条件结束
End Sub
szqaly
2013-06-26 · TA获得超过1745个赞
知道大有可为答主
回答量:2107
采纳率:77%
帮助的人:1497万
展开全部
'这是一个给出算式,要你答题的程序
'------------------------------------------
'text1文本框写入和数,按回车时执行代码,判断准确与否,并进入下一题
Private Sub text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then '13 是回车符(vbCr)的编码值
k = k + 1 '计数,总共回答的算术题数
If Val(Text1.Text) = c Then 'c 保存的是当前算术题的和数
Call initn
Else
h = h + 1 '计数,回答错误数目
Call initn
End If
End If
End Sub
'------------------------------------------
'这个过程是出题,把算式显示在窗口标签中,由 text1_KeyPress 过程调用
Sub initn()
Dim a As Integer, b As Integer
Randomize
Do
a = Int(Rnd() * 10)
b = Int(Rnd() * 10) '返回0 到9 的随机数
Loop While a = 0 Or b = 0 '两数 a,b 都不是 0时结束循环
c = a + b '保存和数
Label1.Caption = a & "+" & b & "=" '两随机数 组成一个加法算式如: 3+5= 写入标签
Text1.Text = ""
Text1.SetFocus
Label2.Caption = k
Label3.Caption = h '回答数目与答错的数目分别显示在标签上
End Sub
'-----------------------------------
'终止出题
Private Sub Command2_Click()
Timer1.Enabled = False
Label5.Caption = "程序终止"
Label1.Caption = ""
Text1.Text = ""
Label6.Width = 0
Label9.Caption = "00:00"
End Sub
'----------------------------------------------------------------------
'时钟大概一秒钟执行一次,对本轮出题游戏限定时间的倒计时
Private Sub Timer1_Timer()
Label6.Width = Label6.Width + 9720 / Time / 60 '不清楚什么名堂
Label9.Caption = Format(m, "00") & ":" & Format(s, "00")
s = s - 1 '秒倒计时
If s < 0 Then
m = m - 1 '分倒计时
If m < 0 Then
'时间到:
Timer1.Enabled = False

Label9.Caption = "00:00"
r = (k - h) / k '计算准确率
Label5.Caption = Now & Space(2) & "<" & X & ">" & "共答" & l & "题,答错 " & h & "题,正确率为" & Format(r, "00.00% ") & "。"
'小数转换成百分比Format(r, "00.00% ") ;共答题数是好像 k ,这里写错了 l
Label1.Caption = ""
Text1.Text = ""
End If
s = 59
End If
End Sub
'1 问题: s , m 分别表示 秒,分,要事先设定,表示本轮答题的时间限定,在规定的时间内能加答多少。
' 2 还有不少被多个程序共用的变量。你要在模块上头声明位置 定义它们。否则系统自动生成的变量都是过程级变量,看似同名,其实各自独立的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式