我是新手,正在尝试学习c中的二等分法。到目前为止,这是我的程序:
#include<stdio.h>
#include<math.h>
double f(double x)
{
return pow(x,2)-2;
}
main()
{
double x1, x2, x3, i;
do
{
printf("Enter a number for x1 and x2");
scanf("%lf %lf", &x1, &x2);
}
if(f(x1)*f(x2)<0); /* **<--- if statement line 16** */
for(i=0;i<100;i++)
{
x3=(x1+x2)/2;
if (f(x1)*f(x3)<0)
x2=x3;
else
x1=x3;
if(f(x3)==0 || fabs(x1-x2)<0.000001) /* check if the roots*/
break;
}
print("x=%lf \n",x3);
return 0;
}
,我收到此错误消息。
16:error: expected âwhileâ before âifâ
我知道我的代码很乱,但是我仍在学习。 我不知道为什么要在if循环之前有一个while循环。
答案 0 :(得分:1)
您的do
循环:
do {
printf("Enter a number for x1 and x2");
scanf("%lf %lf", &x1, &x2);
}
缺少结束while (...);
条件。
可能您想写while
而不是if
。
答案 1 :(得分:1)
在if
之前,您有以下内容:
do
{
printf("Enter a number for x1 and x2");
scanf("%lf %lf", &x1, &x2);
}
if(f(x1)*f(x2)<0);
您已开始do...while
循环,但没有while
条件。您还有一个if
,后面没有任何语句。您可能想在这里使用while
而不是if
:
do
{
printf("Enter a number for x1 and x2");
scanf("%lf %lf", &x1, &x2);
}
while (f(x1)*f(x2)<0);
答案 2 :(得分:0)
此:
if(f(x1)*f(x2)<0); /* **<--- if statement line 16** */
应为:
while (f(x1)*f(x2)<0); /* **<--- if statement line 16** */