小学生数学粗心怎么办:请帮我看看这段vb的程序

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 05:39:32
要求从文本框中输入一个数,单击“判断”按钮判断它能否同时被3、5、7整除,若能整除,则在窗体上显示“能同时被3、5、7整除”,否则显示“不能整除”

我的程序是
Private Sub Command1_Click()
Dim a As Integer
a = Val(Text1.Text)
If a Mod 3 = 0 Then
If a Mod 5 = 0 Then
If a Mod 7 = 0 Then
Print "能整除"
Else
Print "不能整除"
End If
End If
End If

End Sub

Private Sub Text1_Change()
Cls
End Sub
为什么不行?出了什么问题吗?
peter0214 的答案是对的,可是我的虽然复杂,可是错误出在什么地方啊?

楼上说得很对,确实写得太复杂了。

如果实在要像你那样写,应该为每一个if语句都添加一个else子句,返回“不能整除”信息。

像你给出的程序那样写法,当不能被3和5整除时根本就不返回“不能整除”的信息,当然不对了。

还有,可以优化以下你的判断算法。

3、5、7的最小公倍数为105,因此任何小于105的数都不能同时被3、5、7整除,可以不用进行mod运算直接判断。

更进一步,因为所有的公倍数都是最小公倍数的整数倍,所以你的问题只需要判断一个数是否能被105整除就行了,这样程序要简单得多。

虽然这只是个练习,但养成了优化算法的习惯,可以简化程序编写,提高程序运行的效率,你以后的程序开发会受益菲浅。

虽然不会VB,但感觉应该把
Else
Print "不能整除"
移到最后一个End If后面,在判断逻辑上有问题

写得太复杂啦
if a mod 3=0 and a mod 5 and a mod 7 then ? "能整除" else ? "不能整除"

这一句话就搞定啦