mid的作用域在循环里,你把mid的定义放在循环外就行了
【以下回答由 GPT 生成】
问题原因: 在输出找到的数的下标时,printf语句中的占位符使用了错误的格式,导致错误。
解决方法: 将printf语句中的占位符修正为正确的格式,即使用"%d"来表示要输出的整数。
下面是修正后的代码:
#include<stdio.h>
int main(){
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1;
int k;
printf("请输入您想要查找的数字: ");
scanf("%d", &k);
while(left <= right){
int mid = (left + right) / 2;
if(arr[mid] == k){
printf("找到了这个数,它的下标为: %d,这个数为: %d\n", mid, arr[mid]);
break;
}
else if(arr[mid] < k){
left = mid + 1;
}
else{
right = mid - 1;
}
}
if(left > right){
printf("找不到这个数\n");
}
return 0;
}
这样修改后,printf语句就能正确地输出找到的数的下标和数值了。
【相关推荐】