- z
- #include <stdio.h>
- double f(double *p, double x);
- int main(void)
- {
- double an[4];
- double a, b;
- for (int i = 3; i>= 0; i--)
- {
- scanf("%lf", &an[i]);
- }
- scanf("%lf %lf", &a, &b);
- int flag = 0; // 标志位
- while (b - a> 1e-3)
- {
- double m = (a + b) / 2;
- double ret_m = f(an, m);
- if (ret_m == 0) // 判断浮点数等于 0
- {
- printf("%.2f\n", m);
- flag = 1;
- break;
- }
- double ret_a = f(an, a);
- double ret_b = f(an, b);
- if (ret_a * ret_m> 0) // 判断同号
- {
- a = m;
- }
- if (ret_b * ret_m> 0)
- {
- b = m;
- }
- }
- if (flag == 0)
- {
- printf("%.2f\n", (a + b) / 2);
- }
- return 0;
- }
- double f(double *p, double x)
- {
- double ret;
- ret = p[3] * x * x * x + p[2] * x * x + p[1] * x + p[0];
- return ret;
- }
来源: http://www.bubuko.com/infodetail-3329205.html