#include
int main (void)
{
float a0,a1,a2,a3;
float a,b,c,end1,end2,end3;
scanf("%f%f%f%f",&a0,&a1,&a2,&a3);
scanf("%f%f",&a,&b);
while(b-a>=0.001)
{
end1=a3*a*a*a+a2*a*a+a1*a+a0;
end2=a3*b*b*b+a2*b*b+a1*b+a0;
if(end1*end2<0)
{
c=(a+b)/2;
end3=a3*c*c*c+a2*c*c+a1*c+a0;
}
if(end3==0)
break;
else if(end1*end3<0)
b=c;
else if(end2*end3<0)
a=c;
else if(end1==0)
break;
else if(end2==0)
break;
}
printf("%.2f",c);
return 0;
}
这不是float 类型么?%.2f就是保留两位小数,输出格式没有错吧
你把所有变量初始化,你在定义变量四,会给变量开辟内存,第一个if语句里面 end3 的值是多少? 无法比较
你这个题想干嘛?
(float)(c=(a+b)/2 )
c=(float)(a+b)/2
嗯,c 在某些条件下,没有初始化。所以输出了这一大陀。另外 %.2f 就是只保留两位。