vb if语句的一些小问题

2025年03月24日 09:15
有5个网友回答
网友(1):

1、
为什么当d<0时,会显示“无效的过程调用或参数”???
这是不存在的,因为
d = Sqr(b * b - 4 * a * c)

永远不会出现d<0的情况。
2、
你的if语句没有错误

但是!!!!!
你的代码不能正确求解一元二次方程。因为你对一元二次方方程的判别式认识错误。
正确的代码,如下:
Private Sub Command1_Click()
Dim a As Double
Dim b As Double
Dim c As Double
Dim d As Double
'这里要增加防止“系数没有输入”的错误的代码
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = b * b - 4 * a * c
Label5.Caption = d
If d >= 0 Then'实根
d=sqr(d)
Label7.Caption = ((-b) + d) / (2 * a)
Label9.Caption = ((-b) - d) / (2 * a)
Else'虚根
d=sqr(-d)
Label7.Caption = -b/2/a & “+” & d/2/a & “i"
Label9.Caption = -b/2/a & “+” & d/2/a & “i"
End If
End Sub

网友(2):

写的没错

显示无效的过程或参数在哪行显示的你没说明白,应该是d = Label5.Caption这行吧?

你先声明了这个变量为双精度类型,如果 Label5.Caption 不是一个数字,就会报错。

Label5.Caption = d

d = Label5.Caption

这个不理解,都赋值过去了,你再赋值回来干嘛。

网友(3):

乍一看没错,实在没时间创建那么多控件帮你测试,sorry

网友(4):

有点乱……

网友(5):

d没定义吧