原题传送门
思路:水题,根据题目的提示来敲即可
代码参考
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
double a,b,c,d;
double j = 0,f1 = 0,f2 = 0;
cin>>a>>b>>c>>d;
for(double i=-100;i<=100;i+=0.001)
{
j = i+0.001;
f1 = a*i*i*i+b*i*i+c*i+d;
f2 = a*j*j*j+b*j*j+c*j+d;
if(f1>0 && f2<0 || f1<0 && f2>0)
{
double x = (i+j)/2;//二分法取值代表根,因为计算机的精确度0.001
cout<<setiosflags(ios::fixed)<<setprecision(2)<<x<<" ";
}
}
}