#include<stdio.h>
int main()
{
int q, a[]={1,2,4,6,8,9,12,22},chazhao,left,right,mid;
printf("请输入要查找的数:");
scanf("%d",&chazhao);
q=sizeof(a)/sizeof(a[0]);//ok
right=q-1;
left=0;
//printf("%d",a[mid]);
while(left<=right){
mid=(left+right)/2;
if(a[mid]<chazhao){ left=mid+1;
}
else if(a[mid]>chazhao){right=mid-1;
}
else{printf("找到了,下标是%d",mid);break;
}
}
if(left>right){printf("无");
}
}
今天的错误是没有把mid=(left+right)/2放入循环之中,导致死循环,要注意left,right改变之后,mid也会随之改变。