一个关于求解函数根的问题
写了一个求解函数根的程序!!用C-free编译运行通过了,但是用vc连编译都通不过!!是VC编译器有什么特别的地方吗?它还说我有语法错误,有语法错误怎么能在C_Free上运行啊!!求帮忙解答啊!!程序代码:
/*程序功能:求解函数f(x)=x^3-5x^2+16x-80=0的解 程序流程:(1)输入x1,x2的值,判断f(x1),f(x2)函数值是否异号 (2)若f(x1),f(x2)异号,则取两点的弦与x轴的交点x,若不异号则要求继续输入直到异号 (3)判断f(x)与f(x1),f(x2)的异号情况,若f(x1)与f(x)异号则将x作为新的x2,若f(x2)与f(x)异号则将x作为新的x1的值 (4)判断f(x)的值是否小于某个很小的数字,用来判断这个值是否可以作为我们的根 (5)若不是很小,则继续重复步骤2,3以得到合适的值作为我们的函数的根 */ #include <stdio.h> #include <math.h> float root(); float f(float x); float xpoint(float x1,float x2); void main() { float answer=root();//计算根 printf("这个函数的一个根为:%f\n",answer); } float root()//定义求解函数 { printf("请输入两个合适的边界值来求解函数的根\n"); float root_x1,root_x2;//定义两个用来接收用户输入的变量 scanf("%f%f",&root_x1,&root_x2); while(f(root_x1)*f(root_x2)>0) { printf("输入的值不合适,请输入两个合适的边界值来求解函数的根\n"); scanf("%f %f",&root_x1,&root_x2); }//如果输入值不合理要求用户继续输入直到输入值合理 float root_x; do { root_x=xpoint(root_x1,root_x2); if(f(root_x1)*f(root_x)<0) { root_x2=root_x; } if(f(root_x2)*f(root_x)<0) { root_x1=root_x; } if(f(root_x)==0) { break; } } while(abs(f(root_x))>pow(10,-6));//循环求解 return(root_x); } float xpoint(float xpoint_x1,float xpoint_x2)//定义求交点的函数 { float xpoint_answer; xpoint_answer=(xpoint_x1*f(xpoint_x2)-xpoint_x2*f(xpoint_x1))/(f(xpoint_x2)-f(xpoint_x1)); return(xpoint_answer); } float f(float f_x)//定义求函数值的函数 { float f_answer; f_answer=pow(f_x,3)-5*pow(f_x,2)+16*f_x-80; return(f_answer); }