下面是一行一元二次方程的代码
void N1()
{
double x1, x2, a, b, c, t;
cout << "please 分别依次 inter 一元二次方程各个项前的系数,并且用空格键开。\n #比如3X^2+1=0就输入3 0 1\n" ;
cin >> a >> b >> c;
t = b * b - 4 * a * c;
if (t > 0)
{
x1 = (-b + sqrt(t)) / (2 * a);
x2 = (-b - sqrt(t)) / (2 * a);
cout << "该方程有两个解x1=" << x1 <<" " << "x2=" << x2;
}
else if ( t == 0 )
//就是这里 我把()里面的内容改成了(t) 输入1 2 1 得出来的结果是“该方程无实数根”
{
x1 = (-b + sqrt(t)) /(2 * a);
cout << "该方程有两个相同的实数解,x1 = x2 =" << x1;
}
else cout << "该方程无实数解";
不知道现在怎么解决
—————————————————————————————————————
2022.3.18 更新:
本人又回去翻找了一下基本数据类型的知识 注意到了各个数据类型的精度的不同 可能在这个程序里面 t在运算后的取值并不是等于0,在后面可能会携带一些很小的小数,导致程序在判断选择负数的情况 。下课我就试下 。