回复 5楼 heartnheart
照你这样修改了,能执行了,但是答案是错误的啊。。。
比如输入2,6
答案应该是5.但是输出地结果是无解~
我又修改了一下:
#include<stdio.h>
#include<math.h>
float f(float x)
{
float y;
y=(x*(x-5)+6)*x-80;
return(y);
}
float xpoint(float x1,float x2)
{
float x;
x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return (x);
}
float root(float x1,float x2)
{
float x,y,y1;
y=f(x);
y1=f(x1);
while(fabs(y)<0.0001)
{if(y*y1>0)x=x1,y1=y;
else x=x2;}
return(x);
}
void main()
{
float x1,x2,m,n;
printf("please input x1,x2=");
scanf("%f%f",&x1,&x2);
m=xpoint(x1,x2);
n=root(x1,x2);
if (f(x1)*f(x2)<0)printf("Your answer is:%8.4f\n",m);
else if (f(x1)*f(x2)>0)printf("Your answer is:%8.4f\n",n);
else printf("无解!\n");
}
答案也是无解。。不过我觉得我的答案和标准答案是一个意思诶。。。标准答案如下::
#include<stdio.h>
#include<math.h>
float f(float x)
{
float y;
y=(x*(x-5)+6)*x-80;
return(y);
}
float xpoint(float x1,float x2)
{
float y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return (y);
}
float root(float x1,float x2)
{
float x,y,y1;
y1=f(x1);
do
{
x=xpoint(x1,x2);
y=f(x);
if(y*y1>0)
{
x=x1;
y1=y;
}
else
x=x2;
}while(fabs(y)>=0.0001);
return(x);
}
void main()
{
float x1,x2,f1,f2,x;
do
{
printf("input x1,x2:\n");
scanf("%f,%f",&x1,&x2);
f1=f(x1);
f2=f(x2);
}
while(f1*f2>=0);
x=root(x1,x2);
printf("A root of equation is%8.4f\n",x);
}
不过我检验了一下……标准答案好像……也不怎么对~
我不晓得要怎么搞了~