题目描述
有n个互不相同的整数,存储在数组中。在这n个整数中查找m个整数,如果存在,则打印出与之相邻的整数;否则就显示无此数。
输入与输出要求:首先输入一个整数n以及n个整数(n的范围是1—1000),然后输入整数m,代表查询次数(m的范围是1—100),接着输入m个待查询的数。输出m行查询的结果,每次的查询结果中可能有一个数、两个数或没有数。若没有数则输出“NULL”。
要求:实现如下函数完成一个元素的查找:
int findInArray(int *array,int element,int size)
其中array为指向待查找数据的指针,element为要查找的元素,size为待查找数组的大小。如果找到了则返回该元素的位置,如果没找到,则返回-1 。
输入样例
5
89 7890 22 56 87
6
89 7890 22 56 87 999
输出样例
7890
89 22
7890 56
22 87
56
NULL
//注意n==1的情况!
#include<stdio.h>
int find(int*array,int element,int size);
void print(int*array,int loc,int size);
int main(){
int n,m,i,loc;
int array[2000],element[200];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&array[i]);
}
scanf("%d",&m);
for(i=0;i<m;i++){
scanf("%d",&element[i]);
}
for(i=0;i<m;i++){
loc=find(array,element[i],n);
if(loc==-1) printf("NULL\n");
else print(array,loc,n);
}
return 0;
}
int find(int*array,int element,int size){
int i;
if(size==1)return (-1);//重点
for(i=0;i<size;i++){
if(*(array+i)==element){
return i;
}
}
return (-1);
}
void print(int*array,int loc,int size){
if(loc==0) printf("%d\n",*(array+1) );
else if(loc==size-1) printf("%d\n",*(array+loc-1));
else printf("%d %d\n",*(array+loc-1),*(array+loc+1));
}