非递归法:

#include <stdio.h>
#include <stdlib.h>
#define number 6 
int binsearch(int x, int *arr, int left, int right);
int main()
{
	int x = 0, inter = 0;
	int arr[number] = { 1, 5, 12, 36, 45, 98 };
	/*
	* printf("请输入可查找到的数:> ");
	* for (int i = 0; i < sizeof(arr) / sizeof(arr[0]);i++)
	*	scanf_s("%d", &arr[i]);
	*/
	printf("请输入您要查找的数:> ");
	scanf_s("%d", &x);
	inter = binsearch(x, arr, 0, sizeof(arr) / sizeof(arr[0]) - 1);
	if (inter == -1)
		printf("没有找到你要查找的数!\n");
	else
		printf("您要查找的数是%d,且位置为%d\n", x, inter);
	system("pause");
	return 0;
}
int binsearch(int x, int *arr, int left, int right)
{
	int mid = 0;
	while (left <= right)
	{
		mid = left - (left - right) / 2;
		if (x == *(arr + mid))	/*找到了*/
		{
			return mid;
		}
		else if (x < *(arr + mid))	/*偏大*/
		{
			right = mid - 1;
		}
		else	/*偏小*/
		{
			left = mid + 1;
		}
	}
	return -1;   /*没找到*/
}

递归法(不能输出要查找的数字在原数组中的位置):

#include <stdio.h>
#include <stdlib.h>
int binsearch(int x, int *arr, int n);
int main()
{
	int x = 0, inter = 0;
	int arr[] = { 1, 5, 12, 36, 48, 98 };
	printf("请输入您要查找的数:> ");
	scanf_s("%d", &x);
	inter = binsearch(x, arr, sizeof(arr)/sizeof(arr[0]));
	if (inter == -1)
		printf("没找到您要查找的数!\n");
	else
		printf("找到了您要查找的数%d\n", x);
	system("pause");
	return 0;
}
int binsearch(int x, int *arr, int n)
{
	int mid = (n - 1) / 2;
	if (n <= 0)
		return -1;
	else if (x == *(arr + mid)) /*找到了*/
		return mid;
	else if(x < *(arr + mid))	/*有点大 */
	{
		return binsearch(x, arr+mid-1, mid);/*下一次数组长度为mid */
	}	
	else if (x > *(arr + mid)) /*有点小*/
	{
		return binsearch(x, arr+mid+1, mid);
	}	
}