请问下面的题目错在那里? vb程序 谢谢

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:29:24
4. 下列程序用于计算n!(n!=1×2×3×…×n,n≤10),则程序中错误之处共有2 处。
Private Sub Command1_Click()
Dim t As integer
t = 0
For i= 1 To 10
t = t * i
Next i
Text1.Text = Str(t)
End Sub
5. 有道写于纸上的数学题因雨水淋湿,有二个数字已模糊不清: (3□+42)×6=46□ 某同学为了找出这两个数,编写了下列Visual Basic 程序,该程序中错误之处共有 3 处。
Sub command1_click()
dim x,y as integer
for x= 0 to 9
for y= 0 to 8 step 2
if (72+x)*6<>460+y then
list1.additem (“(“+str(3)+ str(x) +”+42)*6=46”+ str(y))
end if
next x
next y
end sub

**前面一道题,有两处错误。
*第一处错误: Dim t as Integer
错误原因:Integer数据类型上限较小,在计算10!时会发生溢出错误
改正错施: Dim t as Long 或者 dim t as single 或者 dim t as double 等等

*第二处错误:t=0
错误原因:学过小学数学的人都知道任何数与零相乘永远都只能为零
改正错施:t=1

*因此改正后的程序代码可以如下:
Private Sub Command1_Click()
Dim t As Double 'double 还可以换为 long或single等
t = 1
For i = 1 To 10
t = t * i
Next i
Text1.Text = Str(t)
End Sub

**后面一道题,有三处错误。
*第一处错误:if (72+x)*6<>460+y,应改为:if (72+x)*6=460+y,即将不等号(<>)改为等号(=)
*第二处错误:next x ,改为next y
*第三处错误:next y ,改为next x
-------------------------------------------------------------
*补充说明:list1.additem (“(“+str(3)+ str(x) +”+42)*6=46”+ str(y))
将所有的str改为Cstr后效果更好(出于规范性的考虑),改后的代码如下:
List1.AddItem ("(" + CS