```c
#include<stdio.h>
#include<malloc.h>
int binary_search(int p[],int k,int sz)
{
int left=0;
int right=sz-1;
while(left<=right)
{
int mid=(left+right)/2;
if(p[mid]<k)
{
left=mid+1;
//return(-1);
}
else if(p[mid]>k)
{
right=mid-1;
//return(-1);
}
else if(p[mid]=k)
{
return(mid);
}
}
return(-1);
}
int main(void)
{
int len,i,k;
int *p;
while(1){
printf("请输入你要存放的元素个数。\n");
scanf("%d",&len);
p=(int*)malloc(sizeof(int)*len);
printf("注意:数组为有序数组.\n");
printf("请输入你要存储的元素值。\n");
for(i=0;i<len;++i)
{
scanf(" %d",&p[i]);
}
fflush(stdin);
//int sz=sizeof(p)/sizeof(p[0]);
printf("请输入要查找的元素值.\n");
scanf("%d",&k);
int sz=sizeof(p)/sizeof(p[0]);
int binary_search(int p[],int k,int sz);
int ret=binary_search(p,k,sz);
if(ret==-1)
{
printf("找不到指定数字\n");
}
else
{
printf("找到了,下标是 %d\n",ret);
}
}
return 0;
}
```