新手求教,为什么有两个点始终过不去

#include<stdio.h>
int a,b,c,d;
double solve[5];
int count=0;
double fx(double left)
{ double suml;
suml=a*left*left*left+b*left*left+c*left+d;

return suml;
}
int main(){
double num=0,j=-100;

scanf("%d%d%d%d",&a,&b,&c,&d);
while(j<=100)
{

if(fx(j)*fx(j+0.001)<0)
{
count++;
solve[count]=j;
j+=0.001;
}
else
j+=0.001;
}
for(i=1;i<=3;i++)
printf("%.2lf ",solve[i]);
return 0;
}

3 条评论

  • @ 2015-09-30 20:56:33

    .....

  • @ 2015-08-04 22:11:33

    为啥我是2和4过不了……

  • @ 2015-04-21 21:12:18

    我是pascal语言。不过我曾经遇到相同问题。可能是这个原因不知道能不能帮到你。

    因为这个函数的答案精度不能保证。比如有解是无理数,无论你用多少精度的实数型都无法存。因此不能=0是解,只要绝对值小于一个很小的数,比如0.0000000000000000000001那么就是解。这也是为什么过不了1和3号点的原因!

  • 1

信息

ID
1116
难度
5
分类
搜索 | 枚举 点击显示
标签
递交数
7804
已通过
2838
通过率
36%
被复制
14
上传者