c语言的search函数
① 求c语言大神 题目:编写查找函数search(),实现如下功能。
C代码和运行结果如下:
输入5,成功输出了其在给定数组中的下标为4,结果正确,望采纳~
附源码:
#include <stdio.h>
int search(int a[], int n, int x) { // 返回数组a[]中x的下标
int i;
for (i = 0; i < n; i++) {
if (a[i] == x)
return i;
}
return -1; // 数组中没有x则返回-1
}
int main() {
int x, a[10] = {7,9,3,4,5,2,1,6,10,8};
scanf("%d", &x); // 用户输入数x
printf("%d ", search(a, 10, x)); // 输出x在数组中的下标
return 0;
}
② 用c语言实现折半查找
#include<stdio.h>
int find(int a[],int x,int n,int m)
{int i;
if(n>m)return -1;
i=(n+m)/2;
if(a[i]==x)return i;
if(a[i]>x)return find(a,x,n,i-1);
return find(a,x,i+1,m);
}
int main()
{
int a[20]={2,3,6,7,12,18,19,21,25,28,30,33,37,39,42,45,47,49,50,51};
int x,i;
printf("已有的数是: ");
for(i=0;i<20;i++)
printf("%d ",a[i]);
printf(" 请输入要查找的数:");
scanf("%d",&x);
if((i=find(a,x,0,19))>=0)
printf("%d是第%d个数 ",x,i+1);
else printf("未找到%d ",x);
return 0;
}