请帮我,用C语言编写下面一个程序好吗?

来源:百度知道 编辑:UC知道 时间:2024/05/27 15:14:24
有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出,该数是数组中第几个元素的值.如果该数不在数组中,则输出“无此数”

#include <stdio.h>
#include <stdlib.h>

int BinSearch(int a[], int n, int k){
int i,low=0,high=n-1,mid;
int find =0;
while(low<=high && !find){
mid =(low+high)/2;
if(k<a[mid])high = mid-1;
else if(k>a[mid])low = mid+1;
else {i=mid;
find=1;
}
}
if(find==0)return(-1);
else return(i);
}

int main(void)
{
int a[15] = {
2, 5, 8, 9, 10,
13, 14, 15, 22, 29,
37, 46, 57, 66, 69
};

int number;
printf("请输入要查找的数字: ");
scanf("%d", &number);

int pos = BinSearch(a, 15, number);
if(pos != -1)
printf("在位置%d找到该数\n", pos);
else
printf("无此数\n");

system("pause");
return 0;
}