题目
要求:输入10个整数存储到数组a,再输入一个整数x,在数组a中查找x,若找到则输出相应的下标,否则显示"Not found"。要求定义和调用函数search(int list[], int n, int x),在数组list中查找元素x,若找到则返回相应下标,否则返回-1.
一、代码
#include <stdio.h>
int fun(int*p,int n,int x){//定义一个函数 ;
int left = 0;//数组从0开始 ;
int right = n-1;//数组长度为元素长度-1 ;
int mid ;//定义一个中间值 ,二分法原理;
while (left<=right){//保证循环完 ;
mid = (right + left)/2;//循环一次,更新一次mid的值 ;
if(p[mid]==x){
break;//如果这个p【mid】为你要找的x,跳出循环,进行下一步;
}
else if(p[mid]>x){
right = mid - 1;//如果这个p【mid】>你要找的x,那就让数组长度缩小到中间-1;
}
else left = mid + 1;//同上理 ;
}
if (left<right){
return mid;//如果在循环过程中找到了,return mid;
}
else return -1;//如果循环完还没找到,return -1;
}
int main(){
int a[10],x;
while (scanf("%d",&a[0])!=EOF){
for (int i=1;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&x) ;
int m;
m = fun(a,10,x);
if (m<0){
printf("Not found\n");
}
else printf("%d\n",m);
}
return 0;
}