二分查找算法运行总是报错,大佬们能不能帮忙看看?

Ymengchun 2018-01-06 04:07:39
#include <stdio.h>

int binary_search(int a[], int n, int key)
{
int low, high, mid;
low = 0;
high = n-1;
while (low <= high)
{
mid = (low + high) / 2;
if (a[mid] < key)
low = mid + 1;
else if (a[mid] > key)
high = mid - 1;
else
return mid;
}
return -1;
}

int main()
{
int location, result, a[] = {0, 1, 16, 24, 35, 47, 59, 62, 73, 88, 99};
printf("请输入待查找的关键字:\n");
scanf("%d\n", location);

result = binary_search(a, 11, location);

if (result < 0)
printf("二分查找的结果: %d\n", result);
else
printf("不存在此数值!");
return 0;
}
...全文
319 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-01-08
  • 打赏
  • 举报
回复
printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方,而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
赵4老师 2018-01-08
  • 打赏
  • 举报
回复
关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
Ymengchun 2018-01-06
  • 打赏
  • 举报
回复
引用 1 楼 qq_21767819的回复:
Scanf 从键盘接收求数据那有个错误,少一个取地址符号
谢谢啦!太粗心了没看见
qq_21767819 2018-01-06
  • 打赏
  • 举报
回复
Scanf 从键盘接收求数据那有个错误,少一个取地址符号

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧