//查找两个数组(数组元素按照从小到大的顺序进行排放),中出现的第一个相同的元素
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//定义函数
int *findsame(int* p, int* q, int n1, int n2)
{
int* pt, * qt;//重新定义两个指针变量,作为监视哨
pt = p;
qt = q;
while (pt < p + n1 && qt < q + n2)//当未到数组结束时都要进行while语句
{
if (*pt < *qt)
{
pt++;//向后移动
}
else if (*pt > *qt)
{
qt++;//向后移动
}
else
{
return pt;//如果两个数相等,则返回该元素的地址
}
}
}
int main()
{
int i, n;
int * p;//定义指针变量p接收函数的返回地址
int a[10], b[10];
printf("请输入a数组的10个数据:\n");
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
printf("请输入b数组的10个数据:\n");
for (i = 0; i < 10; i++)
{
scanf("%d", &b[i]);
}
//调用函数
p = findsame(a,b,10,10);
if (p != 0)
{
printf("两个数组中相同的元素值为:%d", *p);//如果返回的值不是0,是该元素的地址,则输出该地址所存放的元素值
}
else
{
printf("没有相同的元素!");
}
}