C中的二等分方法程序,为什么需要在if语句之前使用?

时间:2019-02-03 20:04:41

标签: c

我是新手,正在尝试学习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循环。

3 个答案:

答案 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** */