问题是确定方程a*x+B=0是否有1个解,并写出它,如果有0个解,则不写出任何解,如果有无限个解,则写出无限个解
#include <iostream>
using namespace std;
int main()
{
float a,b,x;
cin>>a>>b;
x=-b/a;
if(x!=0)
cout<<x<<endl;
else if(a==0)
cout<<"no solution"<<endl;
else
cout<<"infinite solutions"<<endl;
return 0;
}
它应该写“没有解决方案”,但它却写了-inf
1条答案
按热度按时间gcuhipw91#
您的检查顺序错误。由于您没有指定输入,我的假设是:
这意味着,对于您的输入,您将
-1
除以0
,结果为-inf
(数学上不正确,但浮点数(有时)是这样工作的,请参见The behaviour of floating point division by zero)If-else链从上到下计算,在计算为
true
的第一个条件处停止。由于您首先检查
x!=0
,并且-inf
不等于0
,因此您只得到-inf
的输出。为了确保您能够捕捉到被零除的情况,您需要首先检查它。
您的代码将如下所示: