这段程序没有编错,可是算不出结果,请指点,屏幕上没有结果。<br />float f(float x)<br />{<br /> float y;<br />// y=(((0.54525/1e7-1.2103722/1e10*273.16)*x + 1.4307/1e7*273.16 - 0.75/1e4)*x + 0.57/1e4*273.16)*x-0.7;<br /> y=(0.54525/1e7-1.2103722/1e10*273.16)*x*x*x + (1.4307/1e7*273.16 - 0.75/1e4)*x*x + (0.57/1e4*273.16)*x;//-0.7;<br /> return(y);<br />}<br />float xpoint(float x1,float x2)<br />{<br /> float y;<br /> y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));<br /> return(y);<br />}<br />float root(float x1,float x2)<br />{<br />// int i;<br /> float x,y,y1;<br /> y1=f(x1);<br /> do<br /> {<br /> x=xpoint(x1,x2);<br /> y=f(x);<br /> if(y*y1>0)<br /> {<br /> y1=y;<br /> x1=x;<br /> }<br /> else<br /> {<br /> x2=x;<br /> }<br /> }<br /> while(fabs(y)>=0.0001);<br /> return(x);<br />}<br />main()<br />{<br /> float x1=0,x2=70,f1,f2,x;<br /> do<br /> {<br /> f1=f(x1);<br /> f2=f(x2);<br /> }<br /> while(f1*f2>=0);<br /> x=root(x1,x2);<br /> printf("A root of equation is%f",x);<br /> while(1);<br />} |
|