题目描述
有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
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int findInArray(int *array,int element,int size);
int main()
{
int n;
scanf("%d",&n);
int *p=(int*)malloc(sizeof(int)*n);
for(int i=0;i<n;i++)
scanf("%d",(p+i));
int m;
scanf("%d",&m);
int *q=(int*)malloc(sizeof(int)*m);
for(int i=0;i<m;i++)
scanf("%d",(q+i));
if(n==1){
printf("NULL\n");
}
else
{
for(int i=0;i<m;i++){
int temp=findInArray(p,*(q+i),n);
if(temp!=-1)
{
if(temp!=0&&temp!=n-1)
printf("%d %d\n",*(p+temp-1),*(p+1+temp));
else if(temp==0)
printf("%d\n",*(p+temp+1));
else if(temp==n-1)
printf("%d\n",*(p+temp-1));
}
else
{
printf("NULL\n");
}
}
}
return 0;
}
int findInArray(int *array,int element,int size)
{
for(int i=0;i<size;i++)
{
if(*(array+i)==element){
return i;
}
}
return -1;
}
本文介绍了一个基于C语言的算法,用于在一个整数数组中查找特定元素,并打印出这些元素的邻接数值。文章详细解释了如何通过遍历数组来实现元素查找,以及在找到目标元素时如何确定并输出其相邻的整数。
1648





