A. 实验7_2_数组查找_指针

本文介绍了一个基于C语言的算法,用于在一个整数数组中查找特定元素,并打印出这些元素的邻接数值。文章详细解释了如何通过遍历数组来实现元素查找,以及在找到目标元素时如何确定并输出其相邻的整数。

题目描述
有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;
}
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值