#include<stdio.h>
int erfen(int arr[],int sz,int n)
{
int left=0;
int right=sz-1;
while(left<=right)
{
int mid=left+(right-left)/2;
if(n<arr[mid])
right=mid-1;
else if(n>arr[mid])
left=mid+1;
else
printf("%d",mid);
break;
}
return -1;
}
int main()
{
int n=0;
int arr[]={1,2,3,4,5,6,7,8,9,10};
int sz=sizeof(arr)/sizeof(arr[0]);
scanf("%d",&n);
getchar();
erfen(arr,sz,n);
}
为啥输入后,啥都没打印就结束了(除了输入5,打印4以外)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-link 2021-12-03 11:59关注
else
{
printf("%d",mid);
break;
}
你这个break放在外面的话,循环只执行一次就break掉了啊本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 如何用python读取nasa电池数据集?
- ¥50 MTK手机模拟HID鼠标出现卡顿
- ¥20 求下下面这个数据结构代码
- ¥15 路由器考试怎么办,有懂行的吗 ,eNSP
- ¥20 前端 二进制文件流图片转化异常
- ¥15 github上的这个C语言项目如何跑起来
- ¥15 java 判断某个数 区间是否存在
- ¥15 appium控制多个雷电模拟器问题
- ¥15 C# iMobileDevice
- ¥15 谁会做这个啊#ensp#Boson NetSim