急~~vb编程代码的小问题,高手请进

来源:百度知道 编辑:UC知道 时间:2024/06/14 11:31:23
求ax^2+bx+c=0的两个解
帮我看下有什么错误导致求不出来

Private Sub Command1_Click()
Dim a, b, c, x1, x2 As Single
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)

If (b ^ 2 - 4 * a * c) ^ (1 / 2) > 0 Then
x1 = (-b + (b ^ 2 - 4 * a * c) ^ (1 / 2)) / 2 * a
x2 = (-b - (b ^ 2 - 4 * a * c) ^ (1 / 2)) / 2 * a

Text4.Text = x1
Text5.Text = x2

Else
MsgBox "输入错误"
Text4.Text = ""
Text5.Text = ""
Text1.SetFocus

End If
End Sub

要考虑到a的情况,若为0,则为一次函数,有两个相同的解;
然后2*a要括起来,不然就会被理解为先除后乘!

If (b ^ 2 - 4 * a * c) ^ (1 / 2) > 0 Then
x1 = (-b + (b ^ 2 - 4 * a * c) ^ (1 / 2)) / 2 * a
x2 = (-b - (b ^ 2 - 4 * a * c) ^ (1 / 2)) / 2 * a

应该括起来
If (b ^ 2 - 4 * a * c) ^ (1 / 2) > 0
Then
{
x1 = (-b + (b ^ 2 - 4 * a * c) ^ (1 / 2)) / 2 * a
x2 = (-b - (b ^ 2 - 4 * a * c) ^ (1 / 2)) / 2 * a
}

x1 = (-b + (b ^ 2 - 4 * a * c) ^ (1 / 2)) /(2 * a )
x2 = (-b - (b ^ 2 - 4 * a * c) ^ (1 / 2)) /( 2 * a)
优先级错了!!
2*a要有括号!

x1 = (-b + (b ^ 2 - 4 * a * c) ^ (1 / 2)) / 2 * a
x2 = (-b - (b ^ 2 - 4 * a * c) ^ (1 / 2)) / 2 * a
后面的2*A要括号括起来,是做分子的,你那是除以2然后再乘以A,是做了分母

看不出来有什么错误