我并没有赋值给hnumber,但是这里却直接得出hnumbe=2,这是怎么回事呀
/* Note:Your choice is C IDE */
//变步长逐步搜索法
#include<iostream>
using namespace std;
double f(double x);
int main(void)
{
double a,b,epsilon,x,h,begin,end;
long hnumber;
printf("\n请输入x的精度要求:");
cin>>epsilon;
cout<<"epsion="<<epsilon;
printf("\n请输入有根区间的边界a,b:");
scanf("%lf,%lf",&a,&b);
printf("\n请输入每一步的搜索步数:");
cin>>hnumber;
cout<<"hnumber="<<hnumber;
h=(b-a)/hnumber;
if(f(b)==0)x=b;
else
for(begin=a,end=a+h;;begin=end,end+=h)
{
if(f(begin)==0)
{
x=begin;
break;
}
if(f(begin)*f(end)<0)
{
if((end-begin)/2<=epsilon)
{
x=(begin+end)/2;
break;
}
else{
h/=hnumber;
end=begin;
}
}
}
printf("\n方程f(x)=0的根x=%lf。",x);
}
double f(double x)
{
return(x*x*x+4*x*x-1);
}
scanf("%lf,%lf",&a,&b);
printf("\n请输入每一步的搜索步数:");
cin>>hnumber;
问题出在了scanf这句代码, 这里是要接收两个浮点的数据是用逗号","隔开的。你输入的时候也必须用逗号隔开。
-1.0,2.0这样。现在的情况是后面的2.0被cin放到了hnumber中了。你可以试一下。
希望对你有帮助,欢迎关注下我的博客呗,我会持续发技术文章。一起学习一起进步。
谢谢,非常感谢