输入了54321,查找2但是一直显示找不到,看代码感觉没问题,应该是刚学学不精不知道哪出错了.
3条回答 默认 最新
- qzjhjxj 2022-11-07 19:58关注
两个地方的问题,第11行取数组长度错误的,这里得到sz=100,第17行取 mid 的值算法错误,修改如下,供参考:
#include <stdio.h> int main() { int s[100],sz=0; //修改 for (int i=0;i<5;sz++,i++)//修改 scanf("%d",&s[i]); int n; scanf("%d",&n); //int sz=sizeof(s)/sizeof(s[0]); //修改 int left = 0; int right = sz - 1; while (left <= right) { int mid = left + (right - left)/2; //int mid = (left + (right + left)/2);//修改 if (s[mid] == n) { printf("%d %d",n , mid+1); break; } else if(s[mid]>n) { left = mid + 1; } else if(s[mid]<n) { right = mid -1; } } if (left > right) printf("找不到"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 目详情-五一模拟赛详情页
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?
- ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
- ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
- ¥15 cmd cl 0x000007b
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line