有点崩溃,拜托大家帮我找下问题在哪吧

我并没有赋值给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中了。你可以试一下。

希望对你有帮助,欢迎关注下我的博客呗,我会持续发技术文章。一起学习一起进步。

谢谢,非常感谢