无论输入是什么,此代码始终显示“未找到”

时间:2019-09-11 05:33:37

标签: c

这是一个二进制搜索程序。但是,如果我将排序后的数组作为输入,程序将始终显示NOT FOUND作为输出。

我是初学者,所以我尝试删除了if语句

void binary(int [],int,int,int);

void main()
{
  int i,a[100],n,beg,end,val;

  printf("enetr the size :\n");
  scanf("%d",&n);

  printf("enter the elements :\n");

  for(i=0;i<n;i++)
    scanf("%d",&a[i]);

  printf("enter the value to be search");
  scanf("%d",&val);

  beg=0;
  end=n-1;
  binary(a,beg,end,val);
}

void  binary(int a[],int end,int beg,int value)
{
  int i,mid,count=0;

  while(beg<=end)
  {
    mid=((beg+end)/2);

    if(a[mid]==value)
    {
      printf("the value is find at the %d position ",mid);
      count=1;
    }

    if(value<a[mid])
      end=mid-1;
    else
      beg=mid+1;
  }

  if(count==0)
    printf("NOT FOUND");
}

尽管有输入,但显示为未找到

1 个答案:

答案 0 :(得分:6)

您在函数中错误地传递了值。

在函数定义中:

void binary(int a[],int end,int beg,int value)

您致电binary(a,beg,end,val);,但是end是第二个电话。

传递值时,您将传递beg值代替end。因此while循环未执行。