代码运行后查找出无效值,求纠错一下
```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<k)
{
left=mid+1;
//return(-1);
}
else if(p>k)
{
right=mid-1;
//return(-1);
}
else if(p=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);
}
fflush(stdin);
//int sz=sizeof(p)/sizeof(p);
printf("请输入要查找的元素值.\n");
scanf("%d",&k);
int sz=sizeof(p)/sizeof(p);
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;
}
打个断点,看看输出 有报错吗 看下报错信息 先执行一下,看看有没有错呢 日志
页:
[1]