这里for(;;)为什么循环了三次就循环不下去了?????


#define _CRT_SECURE_NO_WARNINGS 1 //使scanf strcpy strlen能够使用
# include <stdio.h>
# include <string.h>//能够用strlen函数(测量char函数组的长度)
#include<windows.h>//Sleep(延时)
#include<stdlib.h>//使用系统自带的函数
#include<math.h> //使用数学代码
#include<stdlib.h> //使用随机数字rand() srand()后面是用来让前面的随机值真正随机
#include<time.h> //使用time()系统自带的时间


int binary_search(int arr1[], int x,int y)
{
int left = 0;
int right = y-1;
int mid = 0;
//printf("%d", right);
for (mid=0; left <= right;)
{
mid = left+right/2;
if (arr1[mid] < x)
left = mid + 1;
else if (arr1[mid] > x)
right = mid - 1;
else
return mid;
}
return -1;
}


int main()
{
int arr[] = { 0,1,2,3,4,5,6,7,8,9,10 };
int k = 0;
int sz = sizeof(arr) / sizeof(arr[1]);
for (;;)
{
scanf("%d", &k);
if (k <= 10 && k >= 0) {
int ret = binary_search(arr, k, sz);
if (ret == -1)
printf("找不到这个数字\n");
else
printf("找到了,这个数的下标为%d\n", ret);
}
else
printf("请重新输入\n");
}
return 0;
}