回复 10楼 pangshch
thank you


而且不管之前是否知道这个数据你都最后输出“no”了。。。
大侠再帮我看看呗……
while (left <= right) { // 加个等于, 因为有等于的情况 mid = (left + right)/2; if (s[mid] == x) { printf("YES\n"); break; // 用break结束循环 } else if (s[mid] < x) left = mid + 1; else right = mid - 1; } if (left > right) // 加一个判断, 当left大于right时, 说明数不存在数组里面. printf("NO\n"); }